WCF并发的问题 本帖最后由 jjx0224 于 2012-06-26 16:18:33 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WCF允许服务发布者自定义并组合并发模型与实例模型。并发模型有三种:ConcurrencyModeSingle: 单线程模型,可以理解为,针对一个客户端,只有一个线程负责响应;Reentrant:可重入的单线程模型,与Single的区别在于,对于OneWay/回调,它不会阻塞,而是把回调的线程放到队列尾部等着最后处理;Multiple: 多线程模型,可以理解为,针对一个客户端,也允许并发访问; 实例模型也有三种:InstanceContextModePerCall: 针对每次调用都生成新的服务实例;PerSession:针对一个会话生成一个服务实例;Single: 针对所有会话和所有调用共用同一个服务实例;这应该取决于你用的 哪种组合方式吧 我也是菜鸟正在研究 WCF希望对你有用 ServiceBehavior 中 ConcurrencyMode 设为 Multiple 这种数量的并发应该是无压力啊。(默认是single的)[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,ConcurrencyMode=ConcurrencyMode.Multiple)] 目前我采用的是ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.PerCall) ConcurrencyMode.Single,这个模式将不存在并发的可能性,那意味着服务端只有一个线程在运行(非客户端的单线程),那么服务端永远只能一次处理一个客户端请求,多余的连接直接被拒绝在外,在未超时的情况下就是排队,超时的话客户端直接报错。也许你需要排队,那么用这个模式可以,如果要并发,必须使用ConcurrencyMode.Multiple 首先,WCf并发是你控制的,主要看你是否想让它并发操作,DB操作是会产生并发问题的,这部分可以用DB事物将之同步处理就好了。 我已经设置了 InstanceContextMode = InstanceContextMode.PerCall 也就是说,每当一个客户端调用一次wcf服务时,wcf端将会建立一个实例来处理这次请求,但这些实例都是运行在一个线程之上?不是这个意思吗? 如何在C#中动态显示数据? 內部網絡使用的Notes系統,如果用C#編程給它發Mail阿?急!!! DataGrid 的数型显示问题 有人知道怎么在mainmenu菜单项前加个图标吗 联合查询 WPF,这是什么异常 想高手请教web问题!!!! ASP。NET高手请进---关于ASP。NET的运行问题--我抛100分,望快速给答案, 一个关于类型转换的菜鸟问题!! 关于一个导航软件绘图卡顿的问题 Sql递归查询 C# 实现远程关机功能
并发模型有三种:
ConcurrencyMode
Single: 单线程模型,可以理解为,针对一个客户端,只有一个线程负责响应;
Reentrant:可重入的单线程模型,与Single的区别在于,对于OneWay/回调,它不会阻塞,而是把回调的线程放到队列尾部等着最后处理;
Multiple: 多线程模型,可以理解为,针对一个客户端,也允许并发访问;
实例模型也有三种:
InstanceContextMode
PerCall: 针对每次调用都生成新的服务实例;
PerSession:针对一个会话生成一个服务实例;
Single: 针对所有会话和所有调用共用同一个服务实例;
这应该取决于你用的 哪种组合方式吧 我也是菜鸟正在研究 WCF希望对你有用
(默认是single的)[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,ConcurrencyMode=ConcurrencyMode.Multiple)]
目前我采用的是
ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.PerCall)
我已经设置了 InstanceContextMode = InstanceContextMode.PerCall 也就是说,每当一个客户端调用一次wcf服务时,wcf端将会建立一个实例来处理这次请求,但这些实例都是运行在一个线程之上?不是这个意思吗?