Windows Communication Foundation (WCF) — программный фреймворк, используемый для обмена данными между приложениями, входящий в состав .NET Framework. Другим словами, WCF – это программная платформа от Microsoft для создания, настройки и развертывания распределенных сетевых сервисов.

Давайте рассмотрим процесс создания и вызова службы WCF.

Создание службы

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

Visual studio создаст интерфейс и класс службы по умолчанию с именем IService1.cs и Service1.svc.

Нам необходимо переименовать их в соответствии с нашей предметной областью.

Давайте рассмотрим интерфейс INewYearService. Для начала нам необходимо в теле интерфейса объявить метод, который будет предоставлять служба для вызова. Для этого его необходимо пометить атрибутом [OperationContract].

Как вы видите данный метод возвращает экземпляр класса TimeToNewYear. Это вспомогательный класс, содержащий значения времени до нового года. Ниже приведена его структура. Для того, чтобы данный класс можно было использовать в качестве возвращаемого аргумента, его необходимо пометить атрибутом [DataContract], а свойства, доступные для чтения клиенту в возвращаемом значении помечаются атрибутом [DataMember].

Теперь нам остается реализовать интерфейс службы в классе NewYearService.svc.cs следующим образом:

Давайте проверим работу нашей службы. Для этого нажмем кнопку Начать отладку. Обратите внимание, что возможные два варианта поведения системы. Если мы начнем отладку находясь в NewYearService.svc, от откроется отладчик службы. Во всех остальных случаях откроется окно браузера. Давайте рассмотрим каждый из вариантов подробнее.

Браузер

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

Нам необходимо нажать на ссылку с именем нашей службы NewYearService.svc. Если все работает корректно, то мы увидим следующее окно, иначе будет показано сообщение с ошибкой.

Тестовый клиент WCF

В левой верхней части отладчика можно увидеть структура нашей службы. Для проверки нашего метода выполним двойной щелчок левой кнопкой мыши по его имени. В правой части отладчика откроется форма запроса. Мы можем указать значение, которое будет передано в метод.

После установки передаваемых значений необходимо нажать кнопку Вызвать. Появится предупредительное сообщение. Можно смело ставить галочку Не выводить это сообщение в дальнейшем и нажимать кнопку ОК.

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

Консольный клиент

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

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

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

Для простоты можно нажать кнопку Найти, тогда адрес службы будет определен автоматически.

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

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

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

Перед началом отладки не забудьте установить консольное приложение автозагружаемым проектом. Получаем следующий результат.

Web клиент

Теперь рассмотрим, как нам обратиться к службе из веб-приложения. Процесс подключения службы не отличается от подключения в консольном приложении. Давайте рассмотрим как можно настроить авторизацию с помощью Windows. Это потребует дополнительной настройки приложения. Для начала создадим проект нового MVC приложения.

Нажимаем кнопку ОК, и попадаем в меню настройки создания веб-приложения. Выберем MVC шаблон и изменим способ авторизации. Для этого нажмем на кнопку Изменить способ проверки подлинности.

Выбираем авторизацию с помощью Windows и нажимаем ОК в обоих окнах.

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

Для того, чтобы IISExpres перестала ругаться на нас за попытку создания windows-аутентификации нужно сделать ряд действий в наше службе.

Нужно дополнить наш web.config

Добавляем в любую точку раздела <configuration>, если отсутствует раздел webServer или дополняем уже существующий.

Находим раздел <system.web> и в нем вставляем следующее.

Далее нужно указать разделы биндинг и сервис

Раздел <serviceBehavior><behavior> дополняем такой вот строчкой. В ней мы говорим, что именно такая схема аутентификации будет использоваться у нас.

На этом настройка web.config заканчивается. В итоге у нас должен получиться файл примерно следующего содержания.

Настройка applicationhost.config

Далее идем в папку vs нашего проекта (она скрыта по умолчанию). В ней ищем папку config, а уже в ней находим файл applicationhost.config, его то нам нужно будет поправить.

Находим вот такой раздел. Все Deny меняем на Allow, разрешая изменение установленного по умолчанию режима аутентификации.

Далее находим данную настройку. В ней false меняем на true, разрешая механизму работать.

И под конец находим вот эту настройку. Тут мы true меняем на false. Говоря нашему IISExpres, чтобы он не блокировал службу windows-аутентификации.

После этого сохраняем все конфигурационные файлы и пробуем сделать ссылку на службу аналогично как при добавлении службы в консольное приложение.

Изменим контроллер главной страницы web-приложения, чтобы взывать нашу службу.

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

Получаем следующий результат работы веб-приложения.

Исходный код приложения можно скачать из репозитория https://github.com/shwanoff/wcf.

Присоединяйтесь к социальным сетям:

 
×
%d такие блоггеры, как: