WCF客户端承载
http://www.cnblogs.com/wengyuli/archive/2010/12/27/1918109.html参考
Hi victory,
你提出的问题很好,这个问题,相信很多人学习了WCF编程以后,都会有这样的疑问,而且很多人在多测试的时候,往往还会出现大于10个客户端同时调用服务的时候,就会出错。服务没有相应,抛出Timeout 异常。
你的问题其实本质上是关于WCF处理大规模并发客户端请求的问题。也就是WCF在处理大规模客户端请求的时候,有没有好的解决方案,或者表现。
处理大规模客户端请求的,WCF确实能够胜任,因为其本身已经提供了很好的解决机制。
关于并发客户端请求,WCF通过设置最大并发连接数目、会话数目、并发服务实例数目来进行处理。
我测试的1000个并发请求,是可以顺利相应的。而且的测试机器是普通的PC机器,XP pro系统。
涉及到大量请求的时候,可以考虑使用WCF的 ServiceThrottlingBehavior 属性。
名称 | 说明 | |
---|---|---|
MaxConcurrentCalls | 获取或设置一个值,该值指定整个 ServiceHost 中正在处理的最多消息数。 | |
MaxConcurrentInstances | 获取或设置一个值,该值指定服务中可以一次执行的最多 InstanceContext 对象数。 | |
MaxConcurrentSessions | 获取或设置一个指定 ServiceHost 对象可一次接受的最多会话数的值。 |
这里我们设置一下服务的限流行为就可以了。具体如下:
serviceBehaviors>
<behavior name="WCFService.WCFServiceBehavior">
<serviceTimeouts transactionTimeout="00:01:00"/>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000"/>-->
</behavior>
</serviceBehaviors>
这里1000可以修改,根据你的实际WCF服务需求量。服务激活类型和实例调用方式。然后进行调整。修改完毕以后,重新启动服务,基本就正常了。
这个是三个属性的测试例子。
于此问题本质上相关的问题很多,中文和英文论坛都有人讨论过。一下是这写问题的连接:
http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/155c87f0-a7d4-4c4e-b40b-6292d8731822
http://social.microsoft.com/Forums/zh-CN/wcf/thread/3a89a21d-76ca-4941-8cbe-c89afb5d163b
WCF分布式开发常见错误(20):TimeoutException was unhandled
以上之时WCF提供给我们的可以使用的配置属性。你要想了解更深入的WCF底层线程模型和如何处理大量的客户端数据交互请求。可以了解一下
IOCP在WCF里的应用。
这个前段时间冰红茶在我的博客里提问,我花两周时间查找资料找出这个问题的答案。
你可以参考一下。这个才是WCF能应付大量并发请求的本质所在。上面只是一些WCF的配置属性,数据应用的范畴。
WCF热门问题编程示例(3):WCF是否使用或者支持IOCP(IO完成端口)
经典技术文章翻译(2)Does WCF use or Supports IOCP?WCF是否支持或者使用了IOCP完成端口。
应该很有参考价值。
希望对你的学习有帮助~
WCF客户端承载的更多相关文章
- WCF初探-8:WCF服务承载 (上)
前言 任何一个程序的运行都需要依赖一个确定的进程中,WCF服务也不例外.如果使用WCF服务,我们就必须将服务承载于创建它并控制它的上下文和生存期的运行时环境中,承载服务环境的程序,我们称之为宿主.WC ...
- WCF初探-9:WCF服务承载 (下)
在WCF初探-8:WCF服务承载 (上)中,我们对宿主的概念.环境.特点做了文字性的介绍和概括,接下来我们将通过实例对这几种寄宿方式进行介绍.为了更好的说明各寄宿环境特点,本实例采用Http和net. ...
- WCF初探-12:WCF客户端异常处理
前言: 当我们打开WCF基础客户端通道(无论是通过显式打开还是通过调用操作自动打开).使用客户端或通道对象调用操作,或关闭基础客户端通道时,都会在客户端应用程序中出现异常.而我们知道WCF是基于网络的 ...
- WCF初探-13:WCF客户端为双工服务创建回调对象
前言: 在WCF初探-5:WCF消息交换模式之双工通讯(Duplex)博文中,我讲解了双工通信服务的一个应用场景,即订阅和发布模式,这一篇,我将通过一个消息发送的例子讲解一下WCF客户端如何为双工服务 ...
- WCF服务承载
WCF服务承载(笔记) 自托管(也做自承载) 承载 WCF 服务最灵活.最便捷的方法就是进行自承载.要能够自承载服务,必须满足两个条件.第一,需要 WCF 运行时:第二,需要可以承载 Servic ...
- 终于解决:升级至.NET 4.6.1后VS2015生成WCF客户端代理类的问题
在Visual Studio 2015中将一个包含WCF引用的项目的targetFramework从4.5改为4.6.1的时候,VS2015会重新生成WCF客户端代理类.如果WCF引用配置中选中了&q ...
- WCF初探-10:WCF客户端调用服务
创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定.绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: ...
- WCF初探-11:WCF客户端异步调用服务
前言: 在上一篇WCF初探-10:WCF客户端调用服务 中,我详细介绍了WCF客户端调用服务的方法,但是,这些操作都是同步进行的.有时我们需要长时间处理应用程序并得到返回结果,但又不想影响程序后面代码 ...
- 生产WCF客户端类文件的命令格式
生产WCF客户端类文件的命令格式: svcutil.exe net.tcp://127.0.0.1:8732/ChromaMI.Remote.ConfigService/RemoteConfigSer ...
随机推荐
- ASP.NET简单验证码
今天写了一个特别简单的验证码实现.现将代码贴出. protected void Page_Load(object sender, EventArgs e) { CreateCheckCodeImage ...
- Linux下Tomcat重新启动
在Linux系统下,重启Tomcat使用命令操作的! 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh 查看 ...
- 用c#开发微信 (18) 多客服
微信官方的多客服接口原理是通过用户发送的信息,开发者服务器返回一条指定类型的响应信息,使用户的对话状态切换到官方的多客服状态(持续一段时间),这段时间内用户发送的所有信息都不会到达开发者的服务器,而是 ...
- C#分布式缓存一:Couchbase的安装与简单使用
一.简介 目前C#业界使用得最多的 Cache 系统主要是 Memcached和 Redis. 这两个 Cache 系统可以说是比较成熟的解决方案,也是很多系统当然的选择. Memcache的开发团队 ...
- C#设计模式(12)——享元模式(Flyweight Pattern)
一.引言 在软件开发过程,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非 ...
- [direct-X] direct-X最小框架
#include<d3d9.h> #pragma comment(lib, "d3d9.lib") #pragma comment(lib, "d3dx9.l ...
- iOS UITableView中点击状态栏无法回滚到顶部
// When the user taps the status bar, the scroll view beneath the touch which is closest to the stat ...
- Javascript中prototype属性的详解
原文链接:http://www.cnblogs.com/Uncle-Keith/p/5834289.html 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象 ...
- Nodejs学习笔记(十)--- 与MongoDB的交互(mongodb/node-mongodb-native)、MongoDB入门
目录 简介 MongoDB安装(windows) MongoDB基本语法和操作入门(mongo.exe客户端操作) 库操作 插入 查询 修改 删除 存储过程 nodejs操作MongoDB 插入 查询 ...
- muduo库的简单使用-echo服务的编写
muduo库的简单使用 muduo是一个基于事件驱动的非阻塞网络库,采用C++和Boost库编写. 它的使用方法很简单,参考这篇文章:TCP网络编程本质论 里面有这么几句: 我认为,TCP 网络编程最 ...