WCF-службы. Создание и тестирование .dll

advertisement
Из цикла лекций «Internet-технологии разработки приложений» для студентов 4-го курса
кафедры Компьютерных технологий физического факультета Донецкого национального университета
проф. В. К. Толстых
WCF-службы
Создание и тестирование
.dll-библиотеки WCF-служб
ДонНУ, кафедра КТ, проф.В.К.Толстых
Хостинг служб 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
Имя службы
Базовый адрес необходимо указывать явно при резидентном
размещении службы (в данном случае - через WcfSvcHost.exe)
Описание рабочей
конечной точки :
– адрес,
– привязка,
– контракт
Описание конечной
MEX-точки для обмена
метаданными
Обмен метаданными
через HTTP-GET
(не через MEX-точку)
Свойства проекта
Реализует запуск проекта библиотеки в
хостовом процессе WcfSvcHost.exe
с параметром /client:WcfTestClient.exe
F5 – построение проекта и запуск тестирования
1. В каталоге Debug появилась компилированная библиотека .dll служб
2. Автоматический запуск хостового процесса и тестового клиента…
Хостовый узел WcfSvcHost и клиент WcfTestClient
Адрес метаданных службы
можно скопировать
На хостовом узле WcfSvcHost
запущена служба
Service1 библиотеке WsfServiceLibrary
Тестируемая служба Service1 с
адресом её метаданных
Параметры запроса
операции GetData()
Контракт конечной
точки службы Service1
Ответ
операции GetData()
Операции службы
(двойной щелчок)
Работа с 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
Доступ к метаданным
через MEX-точку:
Доступные
конечные точки
службы Service1
Пространство имён в котором
будет создан прокси-класс
Операции службы
Service1
Программирование клиента
Прокси-класс для
взаимодействия со службой
(к имени службы добавлено
слово Client)
В приложение была
добавлена ссылка
на службу
Результат работы
Файл конфигурации ASP.NET приложения (Web.config)
с информацией о конечной точке для службы
Источники
•
Джувел Лёве. Создание служб Windows Communication Foundation. –
СПб.: Питер, 2008 . – 592 с.: ил.
•
http://msdn.microsoft.com
Download