我将首先解释我正在尝试做的事情,以及所涉及的环境/情况。
我正在使用已使用 .NET 4 实现的预先存在的 WCF 服务(作为 Windows 服务托管)。该服务利用 net.tcp 和可靠会话,以及对客户端应用程序的回调。WCF 服务和客户端应用程序在同一个网络域(我们将其称为 Domain_A)上运行,并且工作正常。
现存的:
(Client [Domain_A]:) ---[request]--> (WCF Svc [Domain_A])
(Client [Domain_A]:)<--[callback]--- (WCF Svc [Domain_A])
我尝试实现的新功能是路由服务(通过 WCF 4)。将在 Domain_A 上运行的 WCF 服务的相同副本也将在 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 端点是要走的路,我一直找不到实现回调的示例。
在此先感谢您提供任何帮助或信息。如果我需要澄清以上任何内容,请告诉我。