2011-04-12 40 views
2

是否有可能创建一个“通用”,如“适应性”路由服务,它不会有任何公共方法调用。相反,您可以调用任何命令,然后将其映射到服务中,并在必要时通过简单消息转换将其传递到适当的终点。 这可能是很难理解和想法似乎有点疯狂(从我的一个同事来了),但如果你看一下例子是清晰的:通用WCF路由/转发/代理服务器

WCF 4.0 Routing Service –Content Based Routing (CBR).

类似于在this article描述,唯一的区别是我们的服务不应该有一个“SubmitTimeSheet”公共方法,实际上它应该没有公共方法来调用。在它返回“未找到方法”错误之前,我们必须“在较低级别上拦截”来电。

这是可能的吗?原因很明显:无需更改代码即可添加新客户端。我们所要做的就是在某种配置文件甚至数据库中添加一个新的映射条目,例如

<Client address="newClientAddress" method="DoAnything" transformation="NewClientDoAnything.xslt" endPoint="endPointClientAddress" endPointMethod="endPointClientDoAnything" /> 

回答

0

他们已经在Nirvana中完成了它。但它非常昂贵。

这在WCF中是不可能的,除非您将合同定义为非常宽松,适合所有合约,它会接收消息并返回消息。通过这样做,你将会失去WCF的所有优点(尽管在WCF中不是那么棒)。

+0

你是对的,纯粹用WCF是不可能的 – Tsar 2011-08-16 13:47:04