Я начну с объяснения того, что я пытаюсь сделать, и условий / обстоятельств.
Я работаю с уже существующей службой WCF (размещенной в качестве службы Windows), которую я реализовал с использованием .NET 4. Служба использует net.tcp и надежные сеансы, а также обратные вызовы клиентского приложения. Служба WCF и клиентское приложение работают в одном сетевом домене (назовем его Domain_A) и работают правильно.
Существующий:
(Client [Domain_A]:) ---[request]--> (WCF Svc [Domain_A])
(Client [Domain_A]:)<--[callback]--- (WCF Svc [Domain_A])
Новая функция, которую я пытаюсь реализовать, - это служба маршрутизации (через WCF 4). Там будет идентичная копия службы WCF, работающей на Domain_A, которая также будет работать на Domain_B. Необходимые порты для конечных точек net.tcp и mex открыты между двумя компьютерами в каждом домене, и я могу успешно получить доступ к метаданным каждой службы из противоположного домена.
В чем я не уверен, так это в том, какой маршрут (архитектурно) я должен выбрать в отношении маршрутизации запросов на обслуживание. На некоторые запросы, сделанные клиентом, может отвечать только служба в Domain_A, а на другие может отвечать только служба в Domain_B. Служба назначения определяется (или может быть) определена параметром, который передается (от клиента) при каждом вызове службы. Кроме того, клиентское приложение будет запускаться только из Domain_A.
Желаемая функциональность:
(Client [Domain_A]:) ---[request]-->(Routing Svc [Domain_A]) ---[request]-->( (WCF Svc [Domain_A]) OR (WCF Svc [Domain_B]) )
(Client [Domain_A]:) <--[callback]--- (Routing Svc [Domain_A])<--[callback]--- ( (WCF Svc [Domain_A]) OR (WCF Svc [Domain_B]) )
Мой первый вопрос: Каков наилучший маршрут для реализации «требуемой функциональности», описанной выше, в отношении маршрутизации (стратегия фильтрации, тип конечной точки / контракта и т. Д.)? Я новичок в службе маршрутизации и не смог найти четкого / краткого ответа или примера, соответствующего моим требованиям.
Второй вопрос: может ли кто-нибудь указать мне на пример службы маршрутизации WCF4, которая использует надежные сеансы и обратные вызовы? Кажется, я не могу найти ничего, кроме краткого упоминания IDuplexSessionRouter. Если конечной точкой IDuplexSessionRouter является путь, я не смог найти пример, который реализует обратные вызовы.
Заранее спасибо за любую помощь или информацию. Пожалуйста, дайте мне знать, если мне нужно уточнить что-либо выше.