У меня есть служба обратного вызова, размещенная на wsDualHttpBinding. Я хочу добавить клиента, который будет опрашивать данные, а не получать обратный вызов (это будет мобильное устройство, использующее wince для демонстрационных целей). Мне было любопытно, как это лучше всего сделать? Вы не можете создать клиентский прокси с помощью NetCFSvcUtil со службой, размещенной с wsDualHttpBinding (я понимаю это), но вы не можете разместить службу обратного вызова через basicHttpBinding. Мне действительно нужна одна и та же служба, размещенная как на basicaHttpBinding (клиенты будут опрашивать данные), так и на wsDualHttpBinding (обратный вызов уведомит клиентов о данных). Есть идеи, как лучше всего справиться с этим без создания двух отдельных служб для размещения одних и тех же данных?
Служба обратного вызова WCF, размещенная на основе basicHttpBinding и wsDualHttpBinding
Ответы (1)
Что вы подразумеваете под двумя отдельными сервисами, хранящими одни и те же данные? Ожидаете ли вы использовать один и тот же экземпляр службы для обработки запросов wsDualHttpBinding и basicHttpBinding?
Ваша текущая проблема заключается в том, что служебный интерфейс для дуплексной связи не может использоваться для basicHttpBinding. Вам необходимо создать второй сервисный контракт и реализовать его в том же сервисе. В этом случае вы можете предоставить две конечные точки для службы: одну дуплексную с WSDualHttpBinding и одну с BasicHttpBinding. Конечные точки должны иметь разные относительные адреса. С точки зрения клиента эти конечные точки являются отдельными службами - для каждой из них требуется отдельный клиентский прокси. Поэтому, если ваша служба не является одноэлементной, у вас будет новый экземпляр службы для каждого клиентского прокси. Новый экземпляр службы означает отсутствие обмена данными.
Есть несколько возможностей изменить это поведение, но это означает замену поставщика экземпляров.