Как вручную создать клиент-прокси Silverlight PollingDuplex? - PullRequest
2 голосов
/ 14 ноября 2011

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

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

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

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

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

1 Ответ

2 голосов
/ 14 ноября 2011

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

...