WCF 4 RoutingService EndpointAddressMessageFilter基于合约的路由

WCF 4 RoutingService EndpointAddressMessageFilter基于合约的路由,wcf,soa,Wcf,Soa,我在endpoint.tv上观看了Matt Sniders RoutingService视频,他对服务虚拟化的评论让我思考。我已将所有服务更改为使用发现服务来宣布它们自己,下一步我将创建一个服务存储库,以便在宣布服务时路由器服务扩展修改其路由表 其思想是,任何服务都可以简单地连接到路由器,并根据已知契约调用操作。路由器将知道根据路由表将契约的操作请求路由到何处,该路由表在发现服务每次在线或离线宣布服务时都会更新 我的问题是如何做到这一点。我是WCF的新手,更不用说路由服务了,所以请容忍我!我是否

我在endpoint.tv上观看了Matt Sniders RoutingService视频,他对服务虚拟化的评论让我思考。我已将所有服务更改为使用发现服务来宣布它们自己,下一步我将创建一个服务存储库,以便在宣布服务时路由器服务扩展修改其路由表

其思想是,任何服务都可以简单地连接到路由器,并根据已知契约调用操作。路由器将知道根据路由表将契约的操作请求路由到何处,该路由表在发现服务每次在线或离线宣布服务时都会更新

我的问题是如何做到这一点。我是WCF的新手,更不用说路由服务了,所以请容忍我!我是否会设置一个过滤器表,例如使用*来通配符基于该契约的任何操作-只是一个猜测

<filters>
  <filter name="RegisterEventFilter" filterType="Action" filterData="CalcLib.ICalcLib/*"/>
  <filter name="RegisterAttendeeFilter" filterType="Action" filterData="OrderLib.IOrder/*"/>
</filters>
或者我需要改用EndpointAddressMessageFilter吗

提前感谢你的帮助


Chris

我没有尝试将RoutingService与发现服务一起使用,但是如果您只是想将所有操作调用重定向到目标服务,那么EndpointName filterType就是一种方法。另外,我不认为Action filterType在filterData属性中支持通配符。下面是配置的一个示例。它杂乱无章且冗长,因为它用示例涵盖了大多数filterType选项,但信息是可靠的