Служба обратного вызова WCF, размещенная через basicHttpBinding и wsDualHttpBinding - PullRequest
0 голосов
/ 20 сентября 2010

У меня есть служба обратного вызова, которая размещается через wsDualHttpBinding.Я хочу добавить клиента, который будет опрашивать данные, а не получать обратный вызов (это будет мобильное устройство, использующее wince для демонстрационных целей).Мне было любопытно, что лучший способ сделать это?Вы не можете создать клиентский прокси с помощью NetCFSvcUtil со службой, размещенной с помощью wsDualHttpBinding (я так понимаю), но вы не можете разместить службу обратного вызова через basicHttpBinding.Мне действительно нужен один и тот же сервис, размещенный как в basicaHttpBinding (клиенты будут запрашивать данные), так и в wsDualHttpBinding (обратный вызов будет уведомлять клиентов о данных).Есть идеи, как лучше всего справиться с этим, не создавая два отдельных сервиса для размещения одних и тех же данных?

1 Ответ

2 голосов
/ 20 сентября 2010

Что вы подразумеваете под двумя отдельными сервисами, размещающими одни и те же данные? Ожидаете ли вы использовать один и тот же экземпляр службы для обработки как запросов wsDualHttpBinding, так и basicHttpBinding?

Ваша текущая проблема заключается в том, что служебный интерфейс для дуплексной связи не может использоваться для базового HttpBinding. Вы должны создать второй сервисный контракт и внедрить его в тот же сервис. В этом случае вы можете предоставить две конечные точки для службы: один дуплекс с WSDualHttpBinding и один с BasicHttpBinding. Конечные точки должны иметь разные относительные адреса. С точки зрения клиента эти конечные точки являются отдельными службами - для каждой из них требуется отдельный клиентский прокси. Таким образом, если ваш сервис не одноразовый, у вас будет новый экземпляр сервиса для каждого клиентского прокси. Новый экземпляр службы означает отсутствие обмена данными.

Есть несколько возможностей изменить это поведение, но это означает замену поставщика Instance.

...