霍力强的专栏

技术社区

.net wcf 并发

骤:
1.把同样的WCF服务,在多个端口上"启动"(即同时运行多个wcf的实例,但每个实例都监听不同的端口)

2.用svcutil.exe生成的代理类,里面有N多构造函数的重载版本,观察一下类似下面的这个版本
public AstroServiceClient(string endpointConfigurationName) :
            base(endpointConfigurationName)
    {
    }

即传入配置名生与代码类的实例,我们在web.config中的wcf配置节,做如下处理:
<client>
            <endpoint address="http://localhost:8001/Astro/" binding="wsHttpBinding"
                bindingConfiguration="WSHttpBinding_IAstroService" contract="IAstroService"
                name="1">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
          <endpoint address="http://localhost:8002/Astro/" binding="wsHttpBinding"
                bindingConfiguration="WSHttpBinding_IAstroService" contract="IAstroService"
                name="2">
            <identity>
              <dns value="localhost" />
            </identity>
          </endpoint>
          <endpoint address="http://localhost:8003/Astro/" binding="wsHttpBinding"
                bindingConfiguration="WSHttpBinding_IAstroService" contract="IAstroService"
                name="3">
            <identity>
              <dns value="localhost" />
            </identity>
          </endpoint>
        </client>

即对应多个wcf服务端的实例,配置多个name的endpoint节点


3.修改客户端的调用代码

把原来类似这样的代码:
using (AstroServiceClient _client = new AstroServiceClient())

改成

using (AstroServiceClient _client = new AstroServiceClient(new Random().Next(1, 4).ToString()))

即客户端随机从多个wcf服务端的host中挑一个,生成代码类实例

大功告成,说白了就是把一个wcf的host分身成了3个,并且客户端随机调用3者之一

阅读更多
个人分类: 软件架构
上一篇一条sql
下一篇实现windows的负载均衡
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭