Как вручную создать клиент-прокси Silverlight PollingDuplex?

Существует множество материалов, объясняющих, почему использование svcutil.exe (или "добавить ссылку на службу") плохо - отсутствие тестируемости, тесная связь и т. Д. Создание клиентского прокси-сервера для простой службы очень просто, вам просто нужно вручную создать свой интерфейс и создать канал:

IMessageServiceAsync service = new ChannelFactory<IMessageServiceAsync>("BasicHttpBinding_IMessageEndpoint").CreateChannel(); 

Я хочу сделать нечто подобное, но для клиента Silverlight PollingDuplex.

Это кажется более сложным - сгенерированный клиент наследует от System.ServiceModel.DuplexClientBase - Полагаю, мой клиент, созданный вручную, тоже должен? Или есть способ подключить все функции обратного вызова на стороне клиента без реализации этого базового класса?

Кто-нибудь когда-нибудь пробовал это? Это вообще возможно?

1 ответ

Решение

Это возможно - вы можете использовать DuplexChannelFactory<T> класс для создания прокси аналогично тому, как ChannelFactory<T> вы имели в своем примере, но вам нужно будет передать дополнительный параметр (набрал InstanceContext) который будет содержать реализацию интерфейса обратного вызова, используемого для получения сообщений от сервера.

Другие вопросы по тегам