Skip to main content
Краткое руководство по написанию кода: создание и развертывание службы WCF в Windows Azure
Рейтинг 

Платформа Windows Azure

Дата обновления: 23 марта 2011 г.

Ниже приводятся этапы создания базового приложения WCF и развертывания его в виде службы в облаке Windows Azure. Это пошаговое руководство предназначено для разработчиков на C#, которые еще не работали с платформой Windows Azure. Перед продолжением убедитесь, что соблюдены предварительные условия, перечисленные в документе Windows Azure: краткое руководство по написанию кода.

Совет

Если у вас нет подписки на Windows Azure, вы можете узнать о разработке на Windows Azure, выполняя процедуры в этом документе до раздела развертывания службы в  Windows Azure.

Помимо создания, отладки и развертывания службы будут использоваться и объясняться следующие инструменты и службы Windows Azure:

  • веб-роль Windows Azure;
  • эмулятор вычислений Windows Azure;
  • пакет служб Windows Azure;
  • портал управления Windows Azure, http://windows.azure.com.

Создание и развертывание приложения WCF в Windows Azure

Чтобы создать и развернуть приложение WCF для Windows Azure, выполните следующие действия.

  • Запустите Microsoft Visual Studio 2010 от имени администратора. Для этого щелкните Microsoft Visual Studio 2010 правой кнопкой мыши и выберите команду Run as administrator («Запуск от имени администратора»).
  • Выберите в меню File («Файл») команду New («Создать»), а затем — пункт Project («Проект»).
  • В диалоговом окне New Project («Создать проект») выберите Installed Templates («Установленные шаблоны»), Visual C#, а затем щелкните Cloud («Облако»).
  • Щелкните Windows Azure Project («Проект Windows Azure»). При необходимости измените поле Location: («Расположение:»), которое указывает место хранения решения. Нажмите кнопку OK («ОК»), чтобы закрыть диалоговое окно New Project («Создать проект»).
  • В диалоговом окне New Windows Azure Project («Создать проект Windows Azure») перейдите к Visual C#, щелкните WCF Service Web Role («Веб-роль службы WCF»), а затем щелкните символ >. Веб-роль будет добавлена к решению Windows Azure. Веб-рольпредоставляет среду для выполнения веб-сайтов или приложений в соответствии с поддержкой служб IIS 7.0. Нажмите кнопку OK («ОК»), чтобы закрыть диалоговое окно New Windows Azure Project («Создать проект Windows Azure»).
  • Измените файл IService1.cs, добавив одну операцию GetHello. Чтобы перейти к файлу IService1.cs, откройте обозреватель решений. Если окно Solution Explorer («Обозреватель решений») не отображается, выберите в меню View («Вид») пункт Solution Explorer («Обозреватель решений»). В обозревателе решений разверните узел WCFServiceWebRole1и дважды щелкните файл IService1.cs. Замените содержимое файла IService1.cs на следующий код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WCFServiceWebRole1
{
   
    [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        string GetHello();
    }

}
  • Сохраните и закройте файл IService1.cs.
  • Измените файл IService1.cs, добавив реализацию операции GetHello. (С помощью обозревателя решений перейдите к файлу Service1.svc.cs так же, как на предыдущем этапе.) Замените содержимое файла Service1.svc.cs на следующий код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WCFServiceWebRole1
{

    public class Service1 : IService1
    {
        public string GetHello()
        {
            return "Hello from my WCF service in Windows Azure!";
        }
    }
}
  • Сохраните и закройте файл Service1.svc.cs.
  • Скомпилируйте и запустите службу, выбрав в меню пункт Debug («Отладка») и щелкнув  Start Without Debugging («Запуск без отладки»).

Если нет ошибок компилирования и ошибок клиентского компьютера, на данном этапе служба должна успешно выполняться на локальном клиенте. В Visual Studio запустится браузер, где URL-адрес отображается в форме http://127.0.0.1:81/Service1.svc. (Номер порта может быть другим.) Если служба доступна через браузер, то, значит, она выполняется, но это неполный тест. Для комплексного тестирования службы WCF требуется клиентское приложение, к которому мы перейдем позднее.

Перед локальной отладкой службы рассмотрим два файла из тех, что были автоматически созданы Visual Studio при создании проекта. Это файлы ServiceDefinition.csdef и ServiceConfiguration.cscfg. (В рамках данного пошагового руководства никакие значения в этих двух файлах изменяться не будут.) Расширение .csdef соответствует файлам определения облачных служб, расширение .cscfg — файлам конфигурации облачных служб. Изучить их можно в обозревателе решений. В основном файл ServiceDefinition.csdef содержит метаданные, используемые платформой Windows Azure при размещении службы, включая, например, роли, имеющиеся в данной службе. В файле ServiceConfiguration.cscfg содержатся параметры конфигурации для службы, а также число экземпляров, выполняемых для каждой роли. Более подробные сведения о файлах ServiceDefinition.csdef и ServiceConfiguration.cscfg см. в статье Настройка приложения Windows Azure в Visual Studio.

Закройте файлы ServiceDefinition.csdef и ServiceConfiguration.cscfg, если они все еще открыты в Visual Studio.

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

  1. Перед выполнением службы в облаке она пройдет локальное тестирование (на рабочей станции разработки). Для начала необходимо создать клиентское приложение для вызова службы WCF. До выполнения дальнейших действий в данном разделе создайте клиентское приложение на основе инструкций в документе Краткое руководство по написанию кода: создание клиентского приложения, использующего службу WCF на платформе Windows Azure. Для успешного тестирования службы WCF потребуется вызвать клиентское приложение.
  2. В Visual Studio при работе над приложением службы WCF (не клиентским приложением) откройте в обозревателе решений файл Service1.svc.cs. Щелкните правой кнопкой мыши следующую строку кода:

    return "Hello from my WCF service in Windows Azure!";

    щелкните Breakpoint («Точка останова»), а затем Insert Breakpoint («Вставить точку останова»).

  3. Нажмите клавишу F5, чтобы запустить отладчик Visual Studio.
  4. Точка останова, устанавливаемая для строки кода return "Hello from my WCF service in Windows Azure!";, предписывает Visual Studio остановить отладку в данной точке, когда клиентское приложение выполняет вызов операции GetHello. Это показывает, что можно использовать обычную отладку Visual Studio при локальном выполнении службы. Однако можно использовать и эмулятор вычислений Windows Azure. Эмулятор вычислений позволяет выполнять такие задачи, как просмотр выполняемого экземпляра локального развертывания. При отладке проекта Windows Azure эмулятор вычислений должен запускаться автоматически. Чтобы запустить эмулятор вычислений вручную, в Windows нажмите кнопку «Пуск», выберите Все программы, щелкните Windows Azure SDK v1.4, а затем Compute Emulator. В области уведомлений панели задач Windows должен появиться значок Windows Azure для эмулятора вычислений.
  5. Щелкните его правой кнопкой мыши и выберите команду Show compute emulator UI («Показать интерфейс эмулятора вычислений»). Откроется пользовательский интерфейс эмулятора вычислений. В интерфейсе эмулятора разверните узел Service Deployments («Развертывания служб»). При дальнейшей навигации по этому узлу можно увидеть локальное развертывание, соответствующее отлаживаемой службе WCF. При щелчке данного развертывания появится консольное представление диагностической информации от приложения и его взаимодействий со средой разработки. Например, строка диагностики может выглядеть следующим образом:

    [runtime] Role entrypoint . CALLING OnStart()

Это сообщение вызывается платформой Windows Azure при вызове метода OnStart() для веб-роли.

В эмуляторе вычислений можно выполнять, приостанавливать и перезапускать экземпляры роли службы.

Если отладчик Visual Studio все еще выполняется, закройте его, выбрав в меню пункт Debug («Отладка») и щелкнув  Stop Debugging («Остановить отладку»). Закройте и эмулятор вычислений.

Веб-роль в службе инкапсулируется в классе WebRole, производном от класса RoleEntryPoint, который содержит методы OnStart(), OnStop() и Run(). Методы OnStart(), OnStop() и Run() можно переопределить в соответствии с потребностями службы. Дополнительные сведения о классе RoleEntryPoint см. в описании RoleEntryPoint.

Далее будет выполнено развертывание службы в облаке с помощью портала управления Windows Azure.

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

  1. Перед развертыванием службы необходимо опубликовать пакет служб и файл конфигурации службы. Для этого в обозревателе решений Visual Studio щелкните правой кнопкой мыши имя проекта (например, WindowsAzureProject1), а затем щелкните Publish… («Опубликовать»).
  2. В диалоговом окне Deploy Windows Azure project («Развернуть проект Windows Azure») щелкните Create Service Package Only («Создать только пакет служб») и нажмите кнопку OK («ОК»).
  3. Если компиляция выполнена успешно, в Visual Studio откроется папка, содержащая два файла, которые были созданы в рамках процесса публикации. Это файлы ServiceConfiguration.cscfg (ранее рассмотренный в данном разделе) и <Название_проекта>.cspkg (например, WindowsAzureProject1.cspkg). Расширение .cspkg соответствует файлам пакетов облачных служб. Файл пакета содержит определение службы, а также двоичные файлы и другие элементы для развертываемого приложения. Запишите путь к этим файлам, поскольку он будет запрошен при развертывании службы с помощью портала управления Windows Azure.
  4. Войдите на портал управления Windows Azure, чтобы развернуть службу. Войдите на сайт http://windows.azure.com.
  5. На портале управления Windows Azure щелкните Hosted Services, Storage Accounts, and CDN («Размещенные службы, учетные записи хранилищ и сеть доставки содержимого»).
  6. Щелкните New Hosted Service («Создать размещенную службу»).
  7. Выберите подписку, которая будет использоваться для этой службы.
  8. Введите имя службы. Оно будет использоваться для различения служб на портале управления Windows Azure для указанной подписки.
  9. Введите URL-адрес службы. Портал управления Windows Azure обеспечивает уникальность URL-адреса в рамках платформы Windows Azure (один и тот же адрес не может использоваться разными службами).
  10. Выберите регион из списка.
  11. Выберите Deploy to stage environment («Развернуть в подготовительную среду»).
  12. Убедитесь, что флажок Start after successful deployment («Запустить после успешного развертывания») установлен.
  13. Введите имя развертывания.
  14. Для параметра Package location («Расположение пакета») нажмите кнопку Browse Locally… («Обзор локальных папок...»), перейдите к папке хранения файла <Название_проекта>.cspkg и щелкните этот файл.
  15. Для параметра Configuration file («Файл конфигурации») нажмите соответствующую кнопку Browse Locally… («Обзор локальных папок...»), перейдите к папке хранения файла ServiceConfiguration.cscfg и щелкните этот файл.
  16. Нажмите кнопку OK («ОК»). После нажатия этой кнопки появится предупреждение, поскольку  для данного приложения задан только один экземпляр веб-роли (этот параметр содержится в файле ServiceConfiguration.cscfg). В целях данного пошагового руководства игнорируйте это предупреждение, нажав кнопку Yes(«Да»), но учтите, что для повышения надежности приложения, вероятно, потребуется несколько экземпляров веб-роли.

Для отслеживания состояния развертывания на портале управления Windows Azure перейдите к разделу Hosted Services («Размещенные службы»). Поскольку развертывание выполнялось в подготовительной среде, DNS будет иметь вид http:// <guid>.cloudapp.net. Для просмотра имени DNS щелкните имя развертывания на портале управления Windows Azure (для отображения имени развертывания может потребоваться щелкнуть узел Hosted Service); имя DNS будет в правой области портала. Когда статус развертывания на портале управления Windows Azure изменится на Ready («Готово»), при вводе в браузер URL-адреса службы будет видно, что она развернута в облаке. URL-адрес веб-службы для службы WCF, развернутой в подготовительной среде, будет иметь вид: http:// <guid>.cloudapp.net/Service1.svc. Например, http://72d5eb5875234b7ca8c7f74c80a2a1f1.cloudapp.net/service1.svc.

Хотя в данном пошаговом руководстве рассматривалось развертывание в подготовительной среде, развертывание в производственной среде проходит те же этапы: нужно лишь выбрать соответствующий тип среды (производственную вместо подготовительной). При развертывании в производственной среде создается имя DNS на основе выбранного URL-адреса, а не GUID, как в подготовительной среде. URL-адрес веб-службы для службы WCF, развернутой в производственной среде, будет иметь вид: http:// <имя_dns>.cloudapp.net/Service1.svc.

При успешном развертывании клиентское приложение может выполнять вызов веб-службы WCF, развернутой в облаке Windows Azure. Создайте клиентское приложение, как описано в документе Краткое руководство по написанию кода: создание клиентского приложения, использующего службу WCF на платформе Windows Azure. Используйте для клиентского приложения надлежащий URL-адрес веб-службы (подготовительной или производственной среды).

Если вы впервые работаете с порталом управления Windows Azure, познакомьтесь с его функциональными возможностями. Например, аналогично развертыванию службы портал предоставляет возможности для остановки, запуска, удаления или обновления развертывания.

Важно!

Если не возникло никаких ошибок, на данном этапе служба Windows Azure будет развернута в облаке. Однако перед продолжением следует знать, что развернутая служба, даже не выполняясь, будет учитываться в оплачиваемом времени подписки. Поэтому крайне важно удалить нежелательные развертывания из подписки Windows Azure. Чтобы удалить развертывание, сначала остановите его на портале управления Windows Azure, а затем удалите. Следующие этапы выполняются на портале управления Windows Azure в разделе размещенных служб. Перейдите к развертыванию, выберите его, а затем щелкните значок Stop («Остановить»). После остановки удалите его, щелкнув значок Delete («Удалить»). Если не удалить развертывание, оно будет подлежать оплате даже в остановленном состоянии.

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