前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >提高WCF服务并发能力的简单处理办法

提高WCF服务并发能力的简单处理办法

作者头像
菩提树下的杨过
发布于 2018-01-23 02:22:12
发布于 2018-01-23 02:22:12
9820
举报

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

2.用svcutil.exe生成的代理类,里面有N多构造函数的重载版本,观察一下类似下面的这个版本

代码语言:js
AI代码解释
复制
 public AstroServiceClient(string endpointConfigurationName) : 
            base(endpointConfigurationName)
    {
    }

即传入配置名生与代码类的实例,我们在web.config中的wcf配置节,做如下处理:

代码语言:js
AI代码解释
复制
<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者之一

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2008-11-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
系统上线后WCF服务最近经常死掉的原因分析总结
  最近系统上线完修改完各种bug之后,功能上还算是比较稳定,由于最近用户数的增加,不知为何经常出现无法登录、页面出现错误等异常,后来发现是由于WCF服务时不时的就死掉了。后来就开始分析问题。得到的初步解决方案如下:
aehyok
2018/08/31
1.1K0
系统上线后WCF服务最近经常死掉的原因分析总结
WCF系列教程之WCF客户端调用服务
1、创建WCF客户端应用程序需要执行下列步骤 (1)、获取服务终结点的服务协定、绑定以及地址信息 (2)、使用该信息创建WCF客户端 (3)、调用操作 (4)、关闭WCF客户端对象 二、操作实例 1、
郑小超.
2018/01/26
2.1K0
WCF入门学习(4)
上一篇的学习中碰到一个问题,用地址http://localhost:8080/mex 访问元数据的时候一直提示400 bad request 错误,因为时间太晚了,查了好几遍代码,也没有发现问题。刚刚又试验了一下,解决方案分两步
_淡定_
2018/08/24
3630
WCF入门学习(4)
WCF系列教程之WCF服务配置工具
本文参考自http://www.cnblogs.com/wangweimutou/p/4367905.html Visual studio 针对服务配置提供了一个可视化的配置界面(Microsoft
郑小超.
2018/01/26
1K0
WCF学习笔记 5
服务通过 ServiceHost 进行寄宿。可以添加终结以暴露可被调用寻址和调用的资源。
小蜜蜂
2019/09/03
7360
学会WCF之试错法——安全配置报错分析
服务端配置 <system.serviceModel> <bindings> <wsHttpBinding> <binding name ="WsHttpBinding_IService" maxReceivedMessageSize="370000" receiveTimeout="00:10:01" maxBufferPoolSize="100"> <readerQuotas maxStringContentLength="240000"/>
甜橙很酸
2018/03/08
5900
学会WCF之试错法——安全配置报错分析
WCF系列教程之WCF消息交换模式之单项模式
1、使用WCF单项模式须知 (1)、WCF服务端接受客户端的请求,但是不会对客户端进行回复 (2)、使用单项模式的服务端接口,不能包含ref或者out类型的参数,至于为什么,请参考C# ref与out关键字解析 (3)、使用单项模式的服务端接口没有返回值,返回类型只能为void (4)、通过设置OperationContract契约的IsOneWay=True可以将满足要求的方法设置为这种消息交换模式 2、代码实例 (1)、第一步 i、首先建一个名为IService的类库作为服务层,新建IOneWay接口
郑小超.
2018/01/26
5730
WCF 入门 (17)
首先修改服务端的app.config 配置文件,先使用basicHttpBinding
_淡定_
2018/08/24
2150
WCF 入门 (17)
WCF技术剖析之五:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务
在《基于IIS的WCF服务寄宿(Hosting)实现揭秘》中,我们谈到在采用基于IIS(或者说基于ASP.NET)的WCF服务寄宿中,具有两种截然不同的运行模式:ASP.NET并行(Side by Side)模式和ASP.NET兼容模式。对于前者,WCF通过HttpModule实现了服务的寄宿,而对于后者,WCF的服务寄宿通过一个HttpHandler实现。只有在ASP.NET兼容模式下,我们熟悉的一些ASP.NET机制才能被我们使用,比如通过HttpContext的请求下下文;基于文件或者Url的授权;H
蒋金楠
2018/01/16
1K0
WCF技术剖析之五:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务
WCF 入门 (21)
其实不太了解为什么第21集才讲这个Binding,下面都是一些概念性的东西,不过作为一个入门视频,了解一下也无妨吧。
_淡定_
2018/08/24
2650
利用WCF改进文件流传输的三种方式
WCF在跨域传输使用了两种模型的方法调用:一种是同步模型,这种模型显然对那些需要大量操作时间的方法调用(如从数据库中获取大量数据时)是一种痛苦的选择。另一种是异步模型的方法调用,这种模型是一种非阻塞方法,其方法调用期间并不等到方法调用结束获得结果才返回,而是方法调用一经开始就马上返回,程序可以继续向前执行,被调用方法和主程序同时执行,在调用方法结束才返回结果。显然这种模型给了我们很好的编程和使用体验。 基于WCF在普通的编码是以文本编码方式在信道之间传输信息的,这种编码会把所有的二进制信息以字节数组的形式存
岑玉海
2018/02/28
1.4K0
利用WCF改进文件流传输的三种方式
WCF系列教程之客户端异步调用服务
本文参考自http://www.cnblogs.com/wangweimutou/p/4409227.html,纯属读书笔记,加深记忆 一、简介 在前面的随笔中,详细的介绍了WCF客户端服务的调用方法,但是那些操作全都是同步的,所以我们需要很长的时间等待服务器的反馈,如何一台服务器的速度很慢,所以客户端得到结果就需要很长的时间,试想一下,如果客户端是个web项目,那么客户体验可想而知,所以为了不影响后续代码执行和用户的体验,就需要使用异步的方式来调用服务。注意这里的异步是完全针对客户端而言的,与WCF服务契
郑小超.
2018/01/26
1.2K0
[原创]WCF入门级使用教程(转载请注明出处)
开发环境:vs2008英文版(SP1) + IIS + Windows2003 整个解决方案有4个项目 01.WCF ---Class Libary项目,用于生成WCF所需的类/接口文件 02.BLL ---Class LIbary项目,演示用的业务逻辑层(仅做分层演示用,无实际意义) 03.WEB ---Web Application,WCF服务将发布在这个项目中(即本例是把WCF宿主在IIS里) 04.Client--Console Application,命令行程序,用于演示调用WCF的客户端
菩提树下的杨过
2018/01/24
9900
If WCF Service side and Client side config is different?!
MJ.Zhou
2018/01/04
6870
WCF技术剖析之三十二:一步步创建一个完整的分布式事务应用
在完成了对于WCF事务编程(《上篇》、《中篇》、《下篇》)的介绍后,本篇文章将提供一个完整的分布式事务的WCF服务应用,通过本例,读者不仅仅会了解到如何编程实现事务型服务,还会获得其他相关的知识,比如DTC和AS-AT的配置等。本例还是沿用贯通本章的应用场景:银行转帐。我们将会创建一个BankingService服务,并将其中的转帐操作定义成事务型操作。我们先从物理部署的角度来了解一下BankingService服务,以及需要实现怎样的分布式事务。 一、从部署的角度看分布式事务 既然是实现分布式事务,那
蒋金楠
2018/01/16
6910
WCF技术剖析之三十二:一步步创建一个完整的分布式事务应用
学会WCF之试错法——超时
服务契约 [ServiceContract] public interface IService { [OperationContract] string GetData(int value); [OperationContract] string GetString(string value); [OperationContract] void Upload(Request request)
甜橙很酸
2018/03/08
7180
学会WCF之试错法——超时
WCF后续之旅(15): 逻辑地址和物理地址
在WCF中,每个终结点都包含两个不同的地址——逻辑地址和物理地址。逻辑地址就是终结点Address属性表示的地址。至于物理地址,对于消息发送放来讲,就是消息被真正发送的目的地址;而对于消息的接收放来讲,就是监听器真正监听的地址。 一、服务端的物理地址 在默认的情况下,终结点的逻辑地址和物理地址是同一个URI。换句话说,终结的逻辑地址是必须的,如何物理地址没有指定的,默认使用逻辑地址作为物理地址。对于消息接收方的终结点来讲,物理地址就是监听地址,通过ServiceEndpoint的ListenUri表示:
蒋金楠
2018/01/16
8340
WCF后续之旅(15): 逻辑地址和物理地址
学会WCF之试错法——数据传输
服务契约 [ServiceContract] public interface IService { [OperationContract] string GetData(int value); [OperationContract] string GetString(string value); [OperationContract] void Upload(Request request)
甜橙很酸
2018/03/08
8750
学会WCF之试错法——数据传输
WCF 学习总结2 -- 配置WCF
前面一篇文章《WCF 学习总结1 -- 简单实例》一股脑儿展示了几种WCF部署方式,其中配置文件(App.config/Web.config)都是IDE自动生成,省去了我们不少功夫。现在回过头来看看IDE提供的Wcf Service Library项目模板中的默认服务端配置文件——App.config里面究竟有什么秘密。 服务端的配置文件主要是对services、bindings、behaviors的配置。在默认的App.config中,使用的是WCF Framework定义好的wsHttpBinding默
hbbliyong
2018/03/05
1.1K0
WCF 学习总结2 -- 配置WCF
我的WCF之旅(1):创建一个简单的WCF程序
为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对那些对WCF不是很了解的读者来说,这个例子将带领你正式进入WCF的世界。 在这个例子中,我们将实现一个简单的计算服务(CalculatorService),提供基本的加、减、乘、除的运算。和传统的分布式通信框架一样,WCF本质上提供一个跨进程、跨机器以致跨网络的服务调用。在本例中,客户端和服务通过运行在相同的同一台机器上不同进程模拟,图1体现了客户端
蒋金楠
2018/02/07
9580
我的WCF之旅(1):创建一个简单的WCF程序
相关推荐
系统上线后WCF服务最近经常死掉的原因分析总结
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档