Поделиться через


Образец прокси-сервера обнаружения

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

  • Служба: образец службы калькулятора Windows Communication Foundation (WCF), которая самостоятельно регистрируется на прокси-сервере обнаружения.

  • Прокси-сервер обнаружения: реализация службы прокси-сервера обнаружения.

  • Клиент: клиентское приложение WCF, которое вызывает прокси-сервер обнаружения для поиска служб.

Демонстрации

Реализация прокси-сервера обнаружения

Dd807497.Important(ru-ru,VS.100).gif Примечание
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).

<диск_установки>:\WF_WCF_Samples

Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.

<диск_установки>:\WF_WCF_Samples\WCF\Basic\Discovery\DiscoveryProxy

DiscoveryProxy

С помощью метода Main из файла Program.cs демонстрируется размещение службы типа DiscoveryProxy. Он предоставляет две конечные точки, одна из них имеет тип DiscoveryEndpoint, другая — AnnouncementEndpoint. Обе конечные точки в качестве транспорта используют протокол TCP. Конечная точка DiscoveryEndpoint прослушивает URI, указанный параметром probeEndpointAddress, именно сюда клиенты могут отправлять сообщения зонда для запроса данных прокси-сервера. Конечная точка AnnouncementEndpoint прослушивает URI, указанный параметром announcementEndpointAddress. Здесь прокси-сервер ожидает получения объявлений. При получении объявления о входе в сеть прокси-сервер добавляет в свой кэш службу, а при получении объявления о выходе из сети он удаляет эту службу из кэша.

В файле DiscoveryProxy.cs имеется реализация DiscoveryProxy. Прокси-сервер должен наследовать от класса DiscoveryProxyBase, кроме того, ему требуется реализация AsyncResult. При установке прокси-сервера создается новый словарь Dictionary, в котором сервер сохраняет известные ему элементы.

Файл подразделяется на две области: методы кэша прокси-сервера и реализация прокси-сервера обнаружения. Область методов кэша прокси-сервера содержит методы, которые используются для обновления словаря Dictionary, выполняет запросы к словарю Dictionary и печатает данные для пользователей. Область реализации прокси-сервера обнаружения содержит переопределенные методы, которые требуются для функциональных средств объявлений и зондов. Они определяют действия, которые прокси-сервер выполняет после получения объявления о входе в сеть, объявления о выходе из сети или сообщения зонда.

Служба

В проекте «Служба» из файла Program.cs для конечной точки объявлений используется такой же URI, как и для прокси-сервера обнаружения. Сделано это потому, что служба использует конечную точку для отправки объявлений, а прокси-сервер с ее помощью получает эти сообщения. Служба использует объект DiscoveryBehavior и добавляет в него конечную точку объявлений.

Клиент

В проекте «Клиент» для конечной точки зонда используется такой же URI, как и для прокси-сервера. Сделано это потому, что в этом сценарии зонды также одноадресно доставляются именно в конечную точку, имеющуюся на прокси-сервере. Клиент соединяется с этим хорошо известным адресом, а затем запрашивает службу. Обнаружив службу, он устанавливает соединение с ней.

Использование этого образца

  1. Загрузите решение проекта в среду Visual Studio 2010 и постройте проект.

  2. Сначала запустите приложение Discovery Proxy, сформированное в папке «[основной каталог решения]\DiscoveryProxy\bin\debug». Приложение Discovery Proxy необходимо запустить первым, поскольку конечные точки объявлений TCP должны работать, чтобы служба могла отправлять свои объявления.

  3. Затем запустите приложение службы, созданное в «[основной каталог решения]\Service\bin\debug». При запуске служба отправляет объявление в конечную точку объявлений прокси-сервера обнаружения и создается в кэше прокси-сервера.

  4. Затем запустите клиентское приложение, созданное в папке «[основной каталог решения]\Client\bin\debug». Клиент запрашивает прокси-сервер, возвращает адрес службы, а затем устанавливает с ней соединение.

  5. Наконец, завершите клиент, службу, а затем и прокси-сервер. Прокси-сервер должен работать, чтобы он мог получить объявление о выходе службы из сети.