Compartir a través de


Создание облачного REST-сервиса на базе ASP.NET WebAPI c Windows Azure SQL Database

Это руководство содержит сведения о том, как развернуть веб-приложение ASP.NET, использующее ASP.NET WebAPI, на веб-сайте Windows Azure с помощью мастера Publish Web в Visual Studio 2010. По желанию вы можете выполнять указанные действия в Visual Web Developer Express 2010 и Visual Studio 2012.

Учетную запись Windows Azure можно открыть бесплатно. Если среда Visual Studio 2010 отсутствует, при инсталляции пакета SDK автоматически установится Visual Studio 2012 Express для Web . Поэтому начать разработку для Windows Azure можно совершенно бесплатно.

При изложении материала предполагается, что пользователь не имеет опыта работы с Windows Azure. После выполнения действий, представленных в этом руководстве, вы получите управляемое данными веб-приложение, выполняющееся в облаке и использующее облачную базу данных.

В статье приводится пример на базе Visual Studio 2010. Все операции можно проделать в новой Visual Studio 2012.

О чем пойдет речь в данном руководстве:

  • Как подготовить компьютер к разработке приложений для Windows Azure путем установки пакета Windows Azure SDK.
  • Как создать проект Visual Studio ASP.NET MVC 4 и опубликовать его на веб-сайте Windows Azure.
  • Как использовать ASP.NET WebAPI для включения вызовов Restful API.
  • Как использовать базу данных SQL для хранения данных на платформе Windows Azure.
  • Как публиковать обновления приложения на платформе Windows Azure.

Вы создадите простое веб-приложение для управления списком контактов, которое основано на ASP.NET MVC 4 и использует ADO.NET Entity Framework для доступа к базе данных. На следующем рисунке показано готовое приложение.

screenshot of website

В этом руководстве рассматриваются следующие вопросы.

  • Настройка среды разработки
  • Настройка среды Windows Azure
  • Создание приложения ASP.NET MVC 4
  • Развертывание приложения на платформе Windows Azure
  • Добавление базы данных в приложение
  • Добавление контроллера и представления для данных
  • Добавление веб-интерфейса API Restful
  • Публикация обновлений приложения на платформе Windows Azure и в базе данных SQL

Настройка среды разработки

Сначала настройте среду разработки, установив пакет Windows Azure SDK для .NET Framework. (Если среда Visual Studio или Visual Web Developer уже установлены, пакет SDK не требуется. Он понадобится позднее, если вы решите воспользоваться предложениями по дальнейшему изучению в конце руководства.)

Чтобы установить пакет Windows Azure SDK для .NET, щелкните кнопку, которая соответствует используемой версии Visual Studio. Если среда Visual Studio не установлена, нажмите кнопку Visual Studio 2012.

Tools for Visual Studio 2012 или Tools for Visual Studio 2010

Когда появится запрос на запуск или сохранение файла WindowsAzureSDKForNet.exe, нажмите кнопку Run.

run the WindowsAzureSDKForNet.exe file

В окне установщика веб-платформы нажмите кнопку Install и продолжите установку.

Web Platform Installer - Windows Azure SDK for .NET

Если вы используете Visual Studio 2010 или Visual Web Developer 2010 Express, установите обновление веб-публикации Visual Studio 2010 и MVC 4.

После завершения установки у вас появятся все необходимые инструменты для разработки.

Настройка среды Windows Azure

Настройте среду Windows Azure, создав учетную запись Windows Azure, веб-сайт Windows Azure и базу данных SQL.

Создание учетной записи Windows Azure

Откройте веб-браузер и перейдите на веб-сайт https://www.windowsazure.com. Чтобы приступить к работе с помощью бесплатной учетной записи, щелкните в верхнем правой углу Free Trial и выполните указанные действия. Для проверки личности может потребоваться указать номер кредитной карты или мобильного телефона. Счет при этом не выставляется.

clip_image008

Включение веб-сайта Windows Azure

Перейдите на страницу https://account.windowsazure.com/ и выполните вход с помощью учетной записи Windows Azure.

Щелкните элемент preview features, чтобы увидеть доступные варианты предварительного просмотра.

clip_image010

Выполните прокрутку до пункта Web Sites и нажмите кнопку try it now.

clip_image012

Выберите подписку и установите флажок.

clip_image014

Создание веб-сайта и базы данных SQL на платформе Windows Azure

Следующее действие — создание веб-сайта Windows Azure и базы данных SQL, которую будет использовать приложение.

Веб-сайт Windows Azure будет запущен в общей среде размещения, то есть на виртуальных машинах, доступных для всех клиентов Windows Azure. Общая среда размещения — это экономичный способ начать работу в облаке. Позднее, по мере увеличения объема трафика, приложение может масштабироваться за счет выполнения на выделенных виртуальных машинах. Если требуется более сложная архитектура, можно перейти на облачные службы Windows Azure. Облачные службы работают на выделенных виртуальных машинах, которые можно настроить в соответствии с вашими потребностями.

База данных SQL — это облачная служба для поддержки реляционных СУБД, созданная на базе технологий SQL Server. Средства и приложения, работающие с SQL Server, также поддерживаются базой данных SQL.

На портале управления Windows Azure нажмите кнопку New.

New button in Management Portal

Выберите Web Site, а затем щелкните Create with Database.

Create with Database link in Management Portal

Откроется мастер New Web Site — Create with Database. Мастер Create with Database позволяет создать и веб-сайт, и базу данных.

На шаге New Web Site в поле URL введите строку для использования в качестве уникального URL-адреса для приложения.
Полный URL-адрес состоит из введенной строки и суффикса, отображаемого под текстовым полем. На рисунке показан адрес contactmanager, но если кто-то уже занял этот URL-адрес, следует выбрать другой.

В раскрывающемся списке Database выберите Create a new SQL database.

В раскрывающемся списке Region выберите ближайший регион.
Этот параметр указывает центр обработки данных, в котором будет запущена ваша виртуальная машина.

В нижней части щелкните стрелку, указывающую вправо.

Create a New Web Site step of New Web Site - Create with Database wizard
Откроется страница мастера Database Settings. В поле Name введите имя базы данных. В поле Server выберите New SQL Database server.

В нижней части щелкните стрелку, указывающую вправо.

Database Settings step of New Web Site - Create with Database wizard

Откроется страница мастера Create a Server.

Введите имя администратора и пароль. Здесь не следует вводить существующее имя и пароль. Нужно указать новые имя и пароль, которые будут использоваться позднее для доступа к базе данных.

В поле Region выберите тот же самый регион, который был определен для веб-сайта. Нахождение веб-сервера и сервера базы данных в одном регионе обеспечивает максимальную производительность.

Убедитесь, что установлен флажок Allow Windows Azure Services to access the server. Этот параметр выбран по умолчанию. Он создает правило межсетевого экрана, разрешающее веб-сайту Windows Azure обращаться к этой базе данных.

Щелкните флажок в нижней части — это означает, что действия завершены.

Create a Server step of New Web Site - Create with Database wizard

Портал управления возвращается на страницу Web Sites, а в столбце Status отображается процесс создания сайта. Через некоторое время (обычно менее одной минуты) в столбце Status появятся сведения об успешном создании сайта. В области навигации слева рядом со значком Web Sites отображается количество сайтов в учетной записи, а рядом со значком SQL Databases –– количество баз данных.

Web Sites page of Management Portal, website created

Создание приложения ASP.NET MVC 4

Вы создали веб-сайт Windows Azure, но на данный момент он пуст. Следующее действие — создание проекта веб-приложения Visual Studio, который будет опубликован на платформу Windows Azure.

Создание приложения

Запустите Visual Studio 2010 (или 2012). В меню File последовательно выберите New, Project.

New Project in File menu

В диалоговом окне New Project разверните узел Visual C# и в разделе Installed Templates выберите Web, а затем выберите ASP.NET MVC 4 Web Application.

Убедитесь, что в поле .NET Framework выбрано .NET Framework 4. Присвойте приложению имя ContactManager и нажмите кнопку OK.

New Project dialog box

В диалоговом окне New ASP.NET MVC 4 Project выберите шаблон Internet Application. Убедитесь, что в раскрывающемся списке View Engine указано Razor, а затем нажмите кнопку OK.

New ASP.NET MVC 4 Project dialog box

Сначала вы настроите первоначальную разметку и элементы представления для приложения. В Solution Explorer разверните папки Views\Shared и откройте файл _Layout.cshtml.

_Layout.cshtml in Solution Explorer

В элементе < title > измените My ASP.NET MVC Application на Contact Manager.

<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title - Contact Manager</title>
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />

В элементе <header> измените your logo here. на Contact Manager.

<header>
    <div class="content-wrapper">
        <div class="float-left">
            <p class="site-title">@Html.ActionLink("Contact Manager", "Index", "Home")</p>
        </div>

В элементе <header> удалите следующий код.

<div class="float-right">
    <section id="login">
        @Html.Partial("_LoginPartial")
    </section>
    <nav>
        <ul id="menu">
            <li>@Html.ActionLink("Home", "Index", "Home")</li>
            <li>@Html.ActionLink("About", "About", "Home")</li>
            <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
        </ul>
    </nav>
</div>

В элементе < footer > измените My ASP.NET MVC Application на Contact Manager.

<footer>
    <div class="content-wrapper">
        <div class="float-left">
            <p>&copy; @DateTime.Now.Year - Contact Manager</p>
        </div>

В элементе <footer> удалите следующий код.

<div class="float-right">
    <ul id="social">
        <li><a href="https://facebook.com" class="facebook">Facebook</a></li>
        <li><a href="https://twitter.com" class="twitter">Twitter</a></li>
    </ul>
</div>

Правой кнопкой мыши щелкните файл _LoginPartial.cshtml и выберите команду Delete.

Delete context menu for _logingpartial.cshtml

Разверните папку Views\Home и удалите файлы About.cshtml и Contact.cshtml

Правой кнопкой мыши щелкните папку Account в узле Views и выберите команду Delete.

Delete context menu for the accounts folder

Локальный запуск приложения

Чтобы просмотреть первоначальную разметку страницы диспетчера контактов, запустите приложение локально.

Чтобы запустить приложение, нажмите сочетание клавиш CTRL+F5. В браузере по умолчанию откроется домашняя страница.

To Do List home page

Это все, что нужно на данный момент для создания приложения, которое будет развернуто на платформе Windows Azure. Позднее вы добавите функциональность базы данных.

Развертывание приложения на платформе Windows Azure

В браузере откройте портал управления Windows Azure. На вкладке Web Sites щелкните имя сайта, созданного ранее.

Contact manager application in Management Portal Web Sites tab

Рядом с правым углом окна щелкните Download publish profile.

Quickstart tab and Download Publishing Profile button

Будет загружен файл со всеми параметрами, необходимыми для развертывания приложения на веб-сайте. Этот файл будет импортирован в Visual Studio, поэтому данные вводить вручную не требуется.

Сохраните файл .publishsettings в папку, доступ к которой можно получить из Visual Studio.

saving the .publishsettings file

В Visual Studio правой кнопкой мыши щелкните проект в Solution Explorer и в контекстном меню выберите команду Publish.

Publish in project context menu

Откроется мастер Publish Web.

В мастере Publish Web перейдите на вкладку Profile и нажмите кнопку Import.

Import button in Publish Web wizard

Выберите ранее загруженный файл .publishsettings и нажмите кнопку Open.

Import Publish Settings dialog box

На вкладке Connection нажмите кнопку Validate Connection, чтобы проверить правильность параметров.

Connection tab of Publish Web wizard

После проверки соединения рядом с кнопкой Validate Connection появится зеленый флажок. Нажмите кнопку Next.

connection successful icon and Next button in Connection tab

На вкладке Settings нажмите кнопку Next. На этой странице можно принять все заданные по умолчанию параметры. Поскольку вы развертываете конфигурацию Release, удалять файлы на сервере назначения не нужно. Запись DefaultConnection в разделе Databases предназначена для функции членства (входа) ASP.NET, встроенной в шаблон проекта MVC 4 по умолчанию. В данном руководстве эта функция не используется, поэтому не нужно вводить параметры для DefaultConnection.

Settings tab of the Publish Web wizard

На вкладке Preview нажмите кнопку StartPreview. На вкладке отобразится список файлов, которые будут скопированы на сервер. Для публикации приложения предварительный просмотр не требуется, но это полезная функция, о которой следует помнить. В этом случае со списком файлов не нужно ничего делать.

StartPreview button in the Preview tab

Нажмите кнопку Publish. Visual Studio начнет копирование файлов на сервер Windows Azure. В окне Output отображаются выполненные действия по развертыванию и выводится сообщение о его успешном завершении. В заданном по умолчанию браузере автоматически откроется URL-адрес развернутого сайта. Теперь созданное приложение выполняется в облаке.

To Do List home page running in Windows Azure

Добавление базы данных в приложение

Далее вы обновите приложение MVC для добавления функции отображения и обновления контактов и сохранения данных в базе данных. Для создания базы данных и чтения обновленных данных в ней приложение будет использовать Entity Framework.

Добавление классов модели данных для контактов

Начните с создания простой модели данных в коде.

В Solution Explorer правой кнопкой мыши щелкните папку Models, а затем последовательно выберите Add, Class.

Add Class in Models folder context menu

В диалоговом окне Add New Item присвойте файлу класса имя Contact.cs, а затем нажмите кнопку Add.

Add New Item dialog box

Замените содержимое файла Contacts.cs следующим кодом.

using System.Globalization;
namespace ContactManager.Models
{
    public class Contact
    {
        public int ContactId { get; set; }
        public string Name { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string Zip { get; set; }
        public string Email { get; set; }
        public string Twitter { get; set; }
        public string Self
        {
            get { return string.Format(CultureInfo.CurrentCulture,
                  "api/contacts/{0}", this.ContactId); }
            set { }
        }
    }
}

Класс Contacts определяет данные, которые нужно сохранить для каждого контакта, а также основной ключ, ContactID, необходимый для базы данных.

Разверните папку Models и удалите файл AccountModels.cs.

Создание веб-страницы для работы пользователей приложения с контактами

Функция формирования шаблонов в ASP.NET MVC автоматически создает код, выполняющий действия по созданию, чтению, обновлению и удалению.

Добавление контроллера и представления для данных

В Solution Explorer щелкните правой кнопкой мыши Controllers и разверните папку. Удалите файл AccountController.cs.

Постройте проект. Например, нажмите для этого клавишу F6. Visual Studio скомпилирует созданные классы модели данных и предоставит к ним доступ для выполнения действий по включению Code First Migrations и формированию скаффолдера MVC.

Правой кнопкой мыши щелкните папку Controllers, а затем последовательно выберите Add, Controller...

Add Controller in Controllers folder context menu

В диалоговом окне Add Controller введите HomeController в качестве имени контроллера и выберите шаблон MVC Controller with read/write actions and views, using Entity Framework.

Выберите Contacts в качестве класса модели и <New data context...> в качестве класса контекста данных.

Add Controller dialog box

В диалоговом окне New Data Context нажмите кнопку.

Add Controller dialog box

В диалоговом окне Add Controller нажмите кнопку Add. Шаблон MVC создаст для приложения домашнюю страницу по умолчанию, а вы замените функцию, заданную по умолчанию, функцией чтения и обновления списка контактов.

В диалоговом окне Add Controller убедитесь, что выбраны все параметры, и нажмите кнопку OK.

Add Controller message box

Visual Studio создаст контроллер и представления для каждой из четырех основных операций базы данных (создание, чтение, обновление, удаление) для объектов Contacts.

Добавление механизма миграции данных, создание БД, добавление данных

Следующей задачей будет добавление механизма миграции данных (Code First Migrations) для того, чтобы создать БД на основе созданной ранее модели данных.

В меню Tools выберите Library Package Manager, а затем Package Manager Console.

Package Manager Console in Tools menu

В консоли введите следующие команды:

enable-migrations
add-migration Initial

Команда enable-migrations создает папку Migrations и класс Configuration, который используется Entity Framework для управления обновлениями в БД.

Команда add-migration Initial генерирует класс Initial, который создает БД. Вы можете найти новый класс в Solution Explorer.

В класс Initial метод Up создает таблицу Contacts, а метод Down – удаляет ее.

Откройте файл Configuration.cs. Добавьте определение пространства имен:

using ContactManager.Models;

Добавьте следующий код:

context.Contacts.AddOrUpdate(
    p => p.Name,
    new Contact { Name = "Debra Garcia", Address = "1234 Main St", City = "Redmond", State = "WA", Zip = "10999", Email = "debra@example.com", Twitter = "debra_example" },
    new Contact { Name = "Thorsten Weinrich", Address = "5678 1st Ave W", City = "Redmond", State = "WA", Zip = "10999", Email = "thorsten@example.com", Twitter = "thorsten_example" },
    new Contact { Name = "Yuhong Li", Address = "9012 State st", City = "Redmond", State = "WA", Zip = "10999", Email = "yuhong@example.com", Twitter = "yuhong_example" },
    new Contact { Name = "Jon Orton", Address = "3456 Maple St", City = "Redmond", State = "WA", Zip = "10999", Email = "jon@example.com", Twitter = "jon_example" },
    new Contact { Name = "Diliana Alexieva-Bosseva", Address = "7890 2nd Ave E", City = "Redmond", State = "WA", Zip = "10999", Email = "diliana@example.com", Twitter = "diliana_example" }
    );

Это позволит заполнить таблицу тестовыми данными.

В консоли Package Manager Console выполните следующую команду:

update-database

Package Manager Console commands

Эта команда запустит механизм миграции, который создаст БД. По умолчанию база данных будет создана в SQL Server Express LocalDB (если у вас установлен SQL Server Express, то в нем).

Постройте решение через F6.

Добавление представления для данных

Разверните папку Views\Shared и откройте файл Index.cshtml.

Modify index.cshtml in views\home folder context menu

Замените содержимое файла следующим кодом.

  

@model IEnumerable<ContactManager.Models.Contact>

@{
    ViewBag.Title = "Home";
}

@section Scripts {
    @Scripts.Render("~/bundles/knockout")
    <script type="text/javascript">
        function ContactsViewModel() {
            var self = this;
            self.contacts = ko.observableArray([]);
            self.addContact = function () {
                $.post("api/contacts",
                    $("#addContact").serialize(),
                    function (value) {
                        self.contacts.push(value);
                    },
                    "json");
            }
            self.removeContact = function (contact) {
                $.ajax({
                    type: "DELETE",
                    url: contact.Self,
                    success: function () {
                        self.contacts.remove(contact);
                    }
                });
            }

        $.getJSON("api/contacts", function (data) {
            self.contacts(data);
        });
    }

    ko.applyBindings(new ContactsViewModel());

</script>
}

<ul id="contacts" data-bind="foreach: contacts">
    <li class="ui-widget-content ui-corner-all">
        <h1 data-bind="text: Name" class="ui-widget-header"></h1>
        <div><span data-bind="text: $data.Address || 'Address?'"></span></div>
        <div>
            <span data-bind="text: $data.City || 'City?'"></span>,
            <span data-bind="text: $data.State || 'State?'"></span>
            <span data-bind="text: $data.Zip || 'Zip?'"></span>
        </div>
        <div data-bind="if: $data.Email"><a data-bind="attr: { href: 'mailto:' + Email }, text: Email"></a></div>
        <div data-bind="ifnot: $data.Email"><span>Email?</span></div>
        <div data-bind="if: $data.Twitter"><a data-bind="attr: { href: 'https://twitter.com/' + Twitter }, text: '@@' + Twitter"></a></div>
        <div data-bind="ifnot: $data.Twitter"><span>Twitter?</span></div>
        <p><a data-bind="attr: { href: Self }, click: $root.removeContact" class="removeContact ui-state-default ui-corner-all">Remove</a></p>
    </li>
</ul>

<form id="addContact" data-bind="submit: addContact">
    <fieldset>
        <legend>Add New Contact</legend>
        <ol>
            <li>
                <label for="Name">Name</label>
                <input type="text" name="Name" />
            </li>
            <li>
                <label for="Address">Address</label>
                <input type="text" name="Address" >
            </li>
            <li>
                <label for="City">City</label>
                <input type="text" name="City" />
            </li>
            <li>
                <label for="State">State</label>
                <input type="text" name="State" />
            </li>
            <li>
                <label for="Zip">Zip</label>
                <input type="text" name="Zip" />
            </li>
            <li>
                <label for="Email">E-mail</label>
                <input type="text" name="Email" />
            </li>
            <li>
                <label for="Twitter">Twitter</label>
                <input type="text" name="Twitter" />
            </li>
        </ol>
        <input type="submit" value="Add" />
    </fieldset>
</form>

Правой кнопкой мыши щелкните папку Content, а затем последовательно выберите Add, New Item...

Add style sheet in Content folder context menu

В диалоговом окне Add New Item разверните узел C# и в разделе Installed Templates выберите Web, после чего выберите Style Sheet.

Add New Item dialog box

Присвойте файлу имя Contacts.css и нажмите кнопку Add. Замените содержимое файла следующим кодом.

.column {
    float: left;
    width: 50%;
    padding: 0;
    margin: 5px 0;
}

form ol {
    list-style-type: none;
    padding: 0;
    margin: 0;
}

form li {
    padding: 1px;
    margin: 3px;
}

form input[type="text"] {
    width: 100%;
}

#addContact {
    width: 300px;
    float: left;
    width:30%;
}

#contacts {
    list-style-type: none;
    margin: 0;
    padding: 0;
    float:left;
    width: 70%;
}

#contacts li {
    margin: 3px 3px 3px 0;
    padding: 1px;
    float: left;
    width: 300px;
    text-align: center;
    background-image: none;
    background-color: #F5F5F5;
}

#contacts li h1
{
    padding: 0;
    margin: 0;
    background-image: none;
    background-color: Orange;
    color: White;
    font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;
}

.removeContact, .viewImage
{
    padding: 3px;
    text-decoration: none;
}

Разверните папку App_Start и откройте файл BundleConfig.cs.

Modify BundleConfig.cs in App_Start folder context menu

Добавьте следующий оператор для регистрации подключаемого модуля knockout.

bundles.Add(new ScriptBundle("~/bundles/knockout").Include( "~/Scripts/knockout-2.0.0.js"));

В этом примере knockout используется для упрощения динамического кода JavaScript, обрабатывающего шаблоны экрана.

Измените запись contents/css для регистрации таблицы стилей contacts.css.

bundles.Add(new StyleBundle("~/Content/css").Include( "~/Content/site.css", "~/Content/contacts.css"));

Добавление веб-интерфейса API Restful

В Solution Explorer правой кнопкой мыши щелкните Controllers, а затем последовательно выберите Add, New Folder.

Add new folder context menu

Введите Apis и нажмите клавишу Enter. Правой кнопкой мыши щелкните папку Apis, а затем последовательно выберите Add, Controller...

Add class in folder context menu

В диалоговом окне Add Controller введите ContactsController в качестве имени контроллера, выберите шаблон API controller with empty read/write actions.

В поле Model Class выберите Contact (ContactManager.Models), а в поле Data Context Class –– ContactManagerContext (ContactManager.Models).

Нажмите кнопку Add.

Add controller dialog box for web api

Правой кнопкой мыши щелкните папку App_Start, а затем последовательно выберите Add, Class. В диалоговом окне Add New Item введите WebApiConfig.cs, а затем нажмите кнопку Add.

Замените код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using ContactManager.Models;
using System.Net.Http.Formatting;
using System.Net.Http;

namespace ContactManager
{
    public static class WebApiConfig
    {
        public static void Configure(HttpConfiguration config)
        {
            // Filters
            config.Filters.Add(new QueryableAttribute());

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

Таким образом вы определите маршрутизацию HTTP для вызова RESTful API. Когда 

Откройте RouteConfig.cs и удалите следующий код.

routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

Откройте файл Global.asax и добавьте следующую строку в начало Appplication_Start. 

WebApiConfig.Configure(GlobalConfiguration.Configuration);

Локальный запуск приложения

Чтобы запустить приложение, нажмите сочетание клавиш CTRL+F5.

Index page

Введите контакт и нажмите кнопку Add. Приложение возвращается на домашнюю страницу и отображает введенный контакт.

Index page with to-do list items

Скопируйте URL-адрес из адресной строки. Откройте новое окно браузера, вставьте URL-адрес в адресную строку и добавьте /api/contacts.

Index page with to-do list items

Добавленный веб-интерфейс RESTful API возвращает сохраненные контакты.

Web API save dialog

Их можно открыть в Блокноте или браузере. Эти выходные данные можно использовать в другом приложении, например на веб-странице мобильного устройства или приложения.

Web API save dialog

Публикация обновлений приложения на платформе Windows Azure и в базе данных SQL

Чтобы опубликовать приложение, повторите выполненную ранее процедуру, добавив действие по настройке развертывания базы данных.

В Solution Explorer щелкните правой кнопкой мыши проект и выберите команду Publish. В мастере Publish Web перейдите на вкладку Profile. Нажмите кнопку Import.

Выберите тот же самый файл .publishsettings, что и ранее. Файл .publishsettings импортируется повторно, поскольку содержит строку подключения к базе данных SQL, необходимую для настройки публикации базы данных.

Перейдите на вкладку Settings.

В поле строки подключения для базы данных Contacts выберите строку подключения к базе данных SQL, которая находилась в файле .publishsettings.

Щелкните Apply Code First Migrations (runs on application start) .

Settings tab of Publish Web wizard

(Как упоминалось ранее, база данных DefaultConnection предназначена для системы членства ASP.NET. В этом руководстве функция членства не используется, поэтому не нужно настраивать эту базу данных для развертывания.)

Нажмите кнопку Publish. После того как развертывание будет завершено, в браузере откроется домашняя страница приложения.

Index page with no contacts

Процесс публикации Visual Studio автоматически настроил строку подключения в развернутом файле Web.config так, что она указывает на базу данных SQL. Он также настроил Code First Migrations для автоматического обновления базы данных до последней версии при первом доступе приложения к базе данных после развертывания. В результате Code First создал базу данных путем выполнения кода в классе Initial, созданном ранее. Это было сделано во время первой попытки приложения получить доступ к базе данных после развертывания.

Введите контакт (так, как это было сделано при локальном запуске приложения), чтобы проверить успешное развертывание базы данных. Если введенный элемент сохранен и отображается на странице диспетчера контактов, значит он сохранен в базе данных.

Index page with contacts

Теперь приложение выполняется в облаке и использует базу данных SQL для хранения данных.

Важная информация о ASP.NET на веб-сайтах Windows Azure

При планировании и разработке приложения ASP.NET для веб-сайтов Windows Azure необходимо принять во внимание следующие моменты.

  • Приложение должно разрабатываться для ASP.NET 4.0 или более ранних версий (не ASP.NET 4.5).
  • Приложение выполняется в интегрированном режиме (не классическом).
  • Приложение не должно использовать аутентификацию Windows. Как правило, аутентификация Windows не является механизмом аутентификации для веб-приложений.
  • Для использования функций на основе поставщика, таких как членство, профиль, диспетчер ролей, состояние сеанса, приложение должно использовать ASP.NET Universal Providers (пакет NuGet System.Web.Providers).
  • Если приложения выполняют запись в файлы, эти файлы должны находиться в папке содержимого приложения или в одной из вложенных папок.

Дальнейшие действия

Вы научились развертывать веб-приложение, реализующее веб-интерфейс RESTful API на веб-сайте Windows Azure. Дополнительные сведения о настройке, управлении и масштабировании веб-сайтов Windows Azure см. в разделах на странице Общие задачи.

Еще один способ хранения данных в приложении Windows Azure — использование служб хранилища Windows Azure. Они предоставляют нереляционное хранилище данных для больших логических объектов и таблиц. Приложение Contact Manager должно использовать хранилище Windows Azure, а не базы данных SQL. Дополнительные сведения о базе данных SQL и хранилище Windows Azure см. в разделе «Предложения по хранению данных на платформе Windows Azure»".

Дополнительные сведения об использовании базы данных SQL см. в следующих материалах.

Вы можете использовать систему членства ASP.NET в Windows Azure. Дополнительные сведения об использовании хранилища Windows Azure или базы данных SQL для базы данных членства см. в разделе «Реальные ситуации: модели аутентификации на основе форм ASP.NET для Windows Azure».

Дополнительные сведения о Entity Framework и Code First Migrations см. в следующих материалах.

Comments

  • Anonymous
    December 09, 2012
    Попробовал воспроизвести пошагово... Непонятно откуда взялся класс QueryableAttribute... далее        ko.applyBindings(new ContactsViewModel()); 0x800a1391 - Ошибка выполнения JavaScript: "ko" не определено и т.д.