ДонНУ, кафедра КТ, проф.В.К.Толстых WCF-службы Создание и тестирование.dll-библиотеки WCF-служб Из цикла лекций «Internet-технологии разработки приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета проф. В. К. Толстых
Хостинг служб WCF Каждая служба WCF должна находится под управлением некоторого процесса Windows, называемого хостовым процессом. Существуют 4 типа хостинга: 1.Резидентное размещение в управляемом приложении.NET (со своим экземпля- ром класса ServiceHost); 2.Размещение в виде управляемой службы Windows; 3.Размещение в IIS; 4.Размещение в службе активации Windows – WAS (Windows Server 2008, Vista) По умолчанию, в Visual Studio для тестирования предоставляется хостинг типа 1 посредством «WCF Service Host» (WcfSvcHost.exe). Тестировать размещённую службу можно через клиент «WCF Test Client» (WcfTestClient.exe) или через собственных клиентов. Алгоритм тестирования служб WCF: 1.Создание служб на основе проекта WCF Service Library в среде Visual Studio, 2.Visual Studio – F5 – построение службы и загрузка WcfSvcHost.exe, WcfTestClient.exe, 3.Отладка операций службы при помощи WcfTestClient.exe, 4.Подготовка хостинга службы на WcfSvcHost.exe (без Visual Studio), 5.Построение специализированного клиента службы (не WcfTestClient.exe), 6.Добавление ссылки на службу и создание прокси-класса в клиенте, 7.Тестирование и настройка специализированного клиента.
Создание библиотеки службы на основе проекта WCF Service Library Построение части рабочего процесса (последовательного) в виде WCF службы Построение части рабочего процесса (основанного на состояниях) в виде WCF службы Построение RSS потоков через WCF службу
Интерфейс для операций службы Реализация операций службы Хостовый процесс для службы Операции службы Реализация службы Имя службы
Интерфейс службы - Контракт
Конфигурация службы - App.config Имя службы Описание рабочей конечной точки : – адрес, – привязка, – контракт Описание конечной MEX-точки для обмена метаданными Обмен метаданными через HTTP-GET (не через MEX-точку) Базовый адрес необходимо указывать явно при резидентном размещении службы (в данном случае - через WcfSvcHost.exe)
Свойства проекта Реализует запуск проекта библиотеки в хостовом процессе WcfSvcHost.exe с параметром /client:WcfTestClient.exe
F5 – построение проекта и запуск тестирования 1. В каталоге Debug появилась компилированная библиотека.dll служб 2. Автоматический запуск хостового процесса и тестового клиента…
Хостовый узел WcfSvcHost и клиент WcfTestClient На хостовом узле WcfSvcHost запущена служба Service1 библиотеке WsfServiceLibrary Операции службы (двойной щелчок) Параметры запроса операции GetData() Ответ операции GetData() Контракт конечной точки службы Service1 Тестируемая служба Service1 с адресом её метаданных Адрес метаданных службы можно скопировать
Работа с WcfSvcHost.exe и WcfTestClient.exe вне Visual Studio Добавляем адрес WcfSvcHost.exe и WcfTestClient.exe в системную переменную PATH (чтобы далее не указывать путь к ним): Мой компьютер – Свойства – Дополнительно – Переменные среды – Path – Изменить – через точку с запятой добавить путь C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE Открываем командную строку и устанавливаем текущий каталог нашей WCF-библиотеки, запускаем хостовый процесс WcfSvcHost.exe для построенной (.dll) службы с параметрами /service:bin/Debug/WcfServiceLibrary1.dll /config:App.config Теперь тестовый хостинг запущен, можно подключать клиентов к службе При желании, вместе с хостовым процессом, можно запустить и тестового клиента: /service:bin/Debug/WcfServiceLibrary1.dll /config:App.config /client:WcfTestClient.exe
Построение клиентов для служб WCF Клиент должен знать, где находится служба, использовать ту же привязку, что и служба, т.е., клиентское приложение должно содержать информацию о конечных точках службы (иметь контракт службы). Для вызова операций службы клиент должен сначала импортировать контракт службы в родное представление своей среды при помощи посредника – прокси-класса для общения с WCF-службой. Посредник предоставляет те же операции, что и контракт службы, но при этом содержит дополнительные методы для управления жизненным циклом и подключением к службе. Visual Studio позволяет просто импортировать метаданные службы и генерировать посредника. После построения посредника клиент может прямо обращаться к операциям (методам) службы.
Построение ASP.NET-клиента для WCF-службы Запускаем хостинг со службой (если она ещё не запущена). Копируем адрес метаданных
Добавление ссылки на службу и построение прокси-класса для клиента Вставляем скопированный адрес метаданных и нажимаем Go Кнопка для поиска служб внутри проекта Доступные конечные точки службы Service1 Пространство имён в котором будет создан прокси-класс Операции службы Service1 Доступ к метаданным через MEX-точку:
Программирование клиента В приложение была добавлена ссылка на службу Прокси-класс для взаимодействия со службой (к имени службы добавлено слово Client)
Результат работы
Файл конфигурации ASP.NET приложения (Web.config) с информацией о конечной точке для службы
Источники Джувел Лёве. Создание служб Windows Communication Foundation. – СПб.: Питер, – 592 с.: ил.