zoukankan      html  css  js  c++  java
  • 提高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者之一

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    MVC路由测试
    关于Dapper的使用笔记3
    关于Dapper的使用笔记2
    关于Dapper的使用笔记1
    关于WCF与Autofac的整合
    js获取页面元素距离浏览器工作区顶端的距离
    document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题
    js实现获取对象key名
    微信小程序分包跳转主包页面
    js禁止页面滚动
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1342836.html
Copyright © 2011-2022 走看看