воскресенье, 10 марта 2013 г.

Создание WCF службы в Windows Azure

Посетив Windows Azure Summit, я решил поближе познакомиться c "лазурными облаками". Было принято решение начать с размещения WCF-службы в облаке, о чем речь и пойдет в этом посте.
Прежде чем начать разработку, следует соблюсти ряд условий. А именно:
  1. Наличие подписки на Windows Azure (можно бесплатное пробное использование);
  2. Установленный инструмент Windows Azure SDK.
После того, как все готово для разработки, запускаем Visual Studio и создаем проект "Windows Azure Cloud Service", как показано на рисунке:



Затем выбираем веб-роль служб WCF:






















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

Service.cs:
    public class Service : IService
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }

        public CompositeType GetDataUsingDataContract(CompositeType composite)
        {
            if (composite == null)
            {
                throw new ArgumentNullException("composite");
            }
            if (composite.BoolValue)
            {
                composite.StringValue += "Suffix";
            }
            return composite;
        }
    }

Для начала необходимо опубликовать пакет службы и файл конфигурации. Для этого выберем команду "Package" в контекстном меню запускаемого проекта. При этом откроется диалог,  в котором требуется выбрать конфигурацию службы (так как мы размещаем в облаке, то устанавливаем в "Cloud").


Результатом работы будут два файла:
  • Cloud Service Configuration file (ServiceConfiguration.Cloud.cscfg) - файл определения конфигурации;
  • Service Package file (WpfCsharp.WinowsAzureWCFService.cspkg) - файл пакета, который содержит определение службы, двоичные данные и другие элементы службы.
Теперь отправимся на портал http://windows.azure.com/ для развертывания службы. Создадим новую облачную службу так, как это указано на рисунке (URL-адрес вы конечно же указываете свой):


Укажем URL-адрес службы, регион и установим галочку "Развернуть пакет облачной службы". В следующем окне мастера введем имя службы и укажем файл конфигурации и пакет службы с локального компьютера, которые мы сделали ранее. Так же установим параметр "Развернуть, даже если одна или несколько ролей содержат отдельный экземпляр" для того, чтобы применить указанную конфигурацию к облачной службе, даже если роли настроены для работы только в одном экземпляре (иначе при создании службы появится ошибка).


После указания всех настроек запустится процесс создания и развертывания облачной службы, который может занять некоторое время. Если все прошло удачно, то у нас появится служба WCF в Windows Azure, которая будет иметь URL-адрес: http://{YOU SERVICE NAME}.cloudapp.net.


Теперь осталось только создать клиента для нашей службы и проверить как она работает. Для этого создадим обычное консольное приложение и добавим в него ссылку на созданную службу:




























Позволим Visual Studio создать нам прокси-класс для клиента и попытаемся вызвать наш сервис:

Code:
    class Program
    {
        static void Main(string[] args)
        {
            using (var client = new ServiceClient())
            {
                client.Open();
                var result = client.GetData(5);
                Console.WriteLine("WCF service in Windows Azure. Call 'GetData' - result:{0}", result);
            }
        }
    }

Результат будет ожидаемым: WCF service in Windows Azure. Call 'GetData' - result:You entered: 5
После того, как мы убедились, что служба работает и клиенты могут к ней подключаться, можно посмотреть на отчеты об использовании нашей службы:



На этом я завершу свой пост. Надеюсь данная статья поможет вам в освоении Windows Azure. 

Комментариев нет:

Отправить комментарий