none
wcf中间路由 RRS feed

  • 问题

  • 在client和service之间,最多支持多少个中间路由?msdn示例中有1个中间路由

    如果能支持N个路由(N>1)最好能有示例或者相关代码

    谢谢

    2011年7月6日 2:20

答案

  • 自己解决了。例子用的是msdn杂志 ServerStation的03 SimpleRouter。
    将里面的RouterHost项目复制任意多个。
    主要是路由的配置

    <!-- 路由之间 -->
      <services>
       <service name="Router.RouterService">
        <endpoint address="http://localhost:8010/RouterService" binding="basicHttpBinding" contract="Router.IRouterService">
        </endpoint>
       </service>
      </services>
      <client>
       <endpoint address="http://localhost:8020/RouterService" binding="basicHttpBinding" contract="Router.IRouterService" name="serviceEndpoint"/>
      </client>
    

    <!-- 最后一个路由和节点 -->
     <services>
      <service name="Router.RouterService">
         <endpoint address="http://localhost:8030/RouterService" binding="basicHttpBinding" contract="Router.IRouterService">
       </endpoint>
      </service>
     </services>
     <client>
      <endpoint address="http://localhost:8000/MessageManagerService" binding="basicHttpBinding" contract="Router.IRouterService" name="serviceEndpoint"/>
     </client>
    
    目前我测试了3个路由,网络传输带宽和等待时间不计的话,应该是任意多个都可以。
    路由的转发代码还可以由ChannelFactory动态生成,有兴趣的同学可以自行测试。。

    • 已标记为答案 etc.cn 2011年7月8日 7:17
    2011年7月8日 7:17

全部回复

  • 一般来讲,一个中间路由就足够了,您的应用要使用到多少个中间路由呢?
    你随时可以开始!
    2011年7月6日 2:43
    版主
  • 目前需要2次传递。

    我们这边网络比较复杂,是由多个网段组成,

    我们现在的一个程序在A网段,需要路过B网段和C网段,最终到达D网段取回统计数据。。

    相邻的2个网段才可以有端口通信
    • 已编辑 etc.cn 2011年7月6日 4:13 增加通信限制原因
    2011年7月6日 4:12
  • 自己解决了。例子用的是msdn杂志 ServerStation的03 SimpleRouter。
    将里面的RouterHost项目复制任意多个。
    主要是路由的配置

    <!-- 路由之间 -->
      <services>
       <service name="Router.RouterService">
        <endpoint address="http://localhost:8010/RouterService" binding="basicHttpBinding" contract="Router.IRouterService">
        </endpoint>
       </service>
      </services>
      <client>
       <endpoint address="http://localhost:8020/RouterService" binding="basicHttpBinding" contract="Router.IRouterService" name="serviceEndpoint"/>
      </client>
    

    <!-- 最后一个路由和节点 -->
     <services>
      <service name="Router.RouterService">
         <endpoint address="http://localhost:8030/RouterService" binding="basicHttpBinding" contract="Router.IRouterService">
       </endpoint>
      </service>
     </services>
     <client>
      <endpoint address="http://localhost:8000/MessageManagerService" binding="basicHttpBinding" contract="Router.IRouterService" name="serviceEndpoint"/>
     </client>
    
    目前我测试了3个路由,网络传输带宽和等待时间不计的话,应该是任意多个都可以。
    路由的转发代码还可以由ChannelFactory动态生成,有兴趣的同学可以自行测试。。

    • 已标记为答案 etc.cn 2011年7月8日 7:17
    2011年7月8日 7:17