Как вручную создать клиент-прокси Silverlight PollingDuplex?
Существует множество материалов, объясняющих, почему использование svcutil.exe (или "добавить ссылку на службу") плохо - отсутствие тестируемости, тесная связь и т. Д. Создание клиентского прокси-сервера для простой службы очень просто, вам просто нужно вручную создать свой интерфейс и создать канал:
IMessageServiceAsync service = new ChannelFactory<IMessageServiceAsync>("BasicHttpBinding_IMessageEndpoint").CreateChannel();
Я хочу сделать нечто подобное, но для клиента Silverlight PollingDuplex.
Это кажется более сложным - сгенерированный клиент наследует от System.ServiceModel.DuplexClientBase
- Полагаю, мой клиент, созданный вручную, тоже должен? Или есть способ подключить все функции обратного вызова на стороне клиента без реализации этого базового класса?
Кто-нибудь когда-нибудь пробовал это? Это вообще возможно?
1 ответ
Это возможно - вы можете использовать DuplexChannelFactory<T>
класс для создания прокси аналогично тому, как ChannelFactory<T>
вы имели в своем примере, но вам нужно будет передать дополнительный параметр (набрал InstanceContext
) который будет содержать реализацию интерфейса обратного вызова, используемого для получения сообщений от сервера.