wcf并发处理模型(随记)
---------------------------------------------------------------------------------------并发性课程:
1.多个线程同时访问相同资源,将产生并发问题;single(单个)(缺省),Reentrant(可重入);
2.wcf缺省会保护并发访问;
3.在实体模型中,Perssion,single中特有用;
4.在实现接口的服务上添加标记;[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Single)]
------single:对于每个服务实例,只有一个请求处理,处理时会加锁,若还有其他请求,就会进行排队
-single与percal:不会产生并发,也不会对吞吐量(单位时间内wcf处理请求数量)产生影响;同一时刻处理多个请求,因为服务实例与请求为1对1,不存在并发;
single与Persession:对于Persession服务,保护服务实例不会受多线程客户端影响;
single,模式会对单一客户端吞吐量产生影响,将请求进行排队;同一时刻只能处理一个请求;多个客户端不会产生并发;
--single与singleton单件:
将多客户端的请求进行排队,影响吞吐量;
------Reentrant(可重入的)
1.和single一样为单线程;同一时刻处理一个请求;可重入(客户端与服务端来回调用)的单线程模式;
第一请求处理服务时,可以中途离开,当在继续处理时,需要排队等待,接着在处理;
主要应用在有回调的场景中;
Reentrant与percall:不会产生死锁,但并发模型为single的话,一旦出现回调会产生死锁;
所以,有回调的话,不要使用single并发模型,英爱使用Reentrant并发模型;
reentrant与PerSession和singletons:
一个请求完成后接着回调,这时,又进来一个请求,所以,回调完之后的第一个请求,
被当在外面,等第二个完成后,回调后的请求才能进行;
-------Multiple:不在是单线程模式,可以多个线程请求服务实例;增加吞吐量,
请求时,不会加锁;所以不会进行安排队列;要求开发者自己利用多线程机制来保护资源;
.net多线程包括:Monitor,Mutex,Semaphore,ReadWriteLock;
-------限流模式:
1.是所有服务不因一个服务的资源破坏而侵占其他资源导致其他服务受影响;
指定吞吐量控制设置:
MaxConcurrentCalls:限制发送请求;缺省为16;
MaxConCurrentInstances:限制服务实例的数量,缺省为int.MaxValue;
MaxConcurrentSessions:限制会话的数量;
--配置项配置:
<behaviors>
<serviceBehaviors>
<behavior name="AllenBehavior">
<serviceThrottling maxConcurrentCalls="" maxConcurrentInstances="" maxConcurrentSessions=""/>
--编程设置:
ServiceThrottle throttle=host.Description.Behaviors.Find<ServiceThrottle>();
if(throttle!=null)
{
throttle.MaxConcurrentCalls=30;
}
--限流与PerCall,MaxConcurrentCalls和MaxConCurrentInstances越大吞吐量越大;
--限流与PerSession:MaxConcurrentCalls控制吞吐量,MaxConCurrentInstances应大于或等于MaxConcurrentSessions;
--限流与Singleton:PerSession:MaxConcurrentCalls控制吞吐量,实例只有一个所以MaxConCurrentInstances的设置没意义;
----------负载平衡和故障转移;
1.负载平衡与PerCall:随记加载;
2.负载平衡与PerSession:跟着session走
3.负载平衡与传输会话,tcp,跟着Socket走;
4.负载平衡与安全会话,
我们要根据性能计数器测量总体的吞吐量并进行限流设置;
wcf并发处理模型(随记)的更多相关文章
- wcf实例模型(随记)
-----------------------------------------实例模型: 1.InstanceContentextMode: -------PerCall(单调):无状态,每次调用 ...
- opengl加载多个3ds模型失败记
VC6 下载 http://blog.csdn.net/bcbobo21cn/article/details/44200205 opengl环境配置 http://blog.csdn.net/bcbo ...
- WCF:并发处理
当多个线程同时访问相同的资源的时候就会产生并发,WCF缺省情况下会保护并发访问.对并发访问需要恰当处理,控制不好不仅会大大降低WCF服务的吞吐量和性能,而且还有可能会导致WCF服务的死锁.一.WCF并 ...
- WCF 程序入门
WCF是微软公司推出的符合SOA思想的分布式应用程序技术框架和编程模型,是建立在消息通信这一概念基础上运行的一个运行时服务系统. WCF编程模型的目标是实现以下两个实体之间的通信:WCF服务端和WCF ...
- [WCF编程]5.绑定概述
一.绑定概述 WCF提供了一个编程框架,可以抽象化服务创建的复杂过程.绑定允许开发人员将精力集中在问题本身上,而无需考虑如何创建允许系统运行的架构,因为WCF已经创建了架构. 绑定类型是开发人员控制W ...
- WCF初识
WCF能干什么? 在win32中,应用程序是运行在进程的线程中的,.NET出现之后,出现了AppDomain,其实就相当于在进程和线程之间又又了一层包装层,类似于子进程的概念,在一个进程或者应用程序域 ...
- WCF初探-21:WCF终结点(endpoint)
WCF终结点概述 在之前文章的示例中,我们都是通过配置服务的终结点(endpoint)发布的服务,供客户端调用,这是因为WCF服务的所有通信都是通过该服务的终结点进行的.每个终结点(endpoint) ...
- WCF分布式开发步步为赢(3)WCF服务元数据交换、配置及编程开发
今天我们继续WCF分布式开发步步为赢(3)WCF服务元数据交换.配置及编程开发的学习.经过前面两节的学习,我们了解WCF分布式开发的相关的基本的概念和自定义宿主托管服务的完整的开发和配置过程.今天我们 ...
- 传说中的WCF(10):消息拦截与篡改
我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息,而且,可能我们还会有一个疑问:如何知道客户端与服务器通讯过 程中,期间发送和接收的SOAP是什么样子.当然,也有人是通过 ...
随机推荐
- Sql Server存储过程和函数浅谈
今天给大家总结一下sql server中的存储过程和函数.本人是小白,里面内容比较初级,大神不喜勿喷 自行飘过就是.. 首先给大家简单列出sql server中的流控制语句,后面会用到的^_^ sql ...
- IIS7安装场景对照表
原文 IIS7安装场景对照表 Default Server Install Components Server Manager Update Name Static Content IIS-Stati ...
- 网络编程I/O功能介绍
read和write #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); ssize_t write(in ...
- EXCEL Pivot table manipulate
Add filter For the Demo time,I would like to filter out the products which not in Red and Black colo ...
- HttpGet 请求
import java.net.HttpURLConnection; import java.text.SimpleDateFormat; import java.util.Calendar; imp ...
- hdu To and Fro
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1200 代码: #include <stdio.h> #include <string ...
- Google软件构建工具Bazel
转载Google软件构建工具Bazel FAQ 本文是我的翻译,原文在这里.欢迎转载,转载请注名本文作者和原始链接注:如果想了解Bazel的原理,可以看看我之前翻译的Google Blaze原理及使用 ...
- 传智播客.Net培训就业班入学测试题
2.对学员的结业考试成绩评测,要求在控制台中提示用户输入学员考试成绩,写一个方法,根据用户输入的成绩,返回一个等级:90分以上A级.80~90分B级.70~80分C级.60~70分B级.60分以下C级 ...
- 讨论IT选定的技术招聘企业几点
在实际的招聘总结的几点思考,企业需要怎么样的人才,例如,以下个人总结: 1.技术能力是不是第一次 企业的时候,你往往看第一点的人的招聘是不是技术实力.但是,你的个人言论的行为和态度.能在半个小时内把你 ...
- sql server 视图 的一个例子
这是一个 有点复杂的查询.我现在 想把他封装 成 视图 其中 B.RecordID= 41 提供给 视图外查询. create view view_UserRecord as select Rec ...