---------------------------------------------------------------------------------------并发性课程:
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并发处理模型(随记)的更多相关文章

  1. wcf实例模型(随记)

    -----------------------------------------实例模型: 1.InstanceContentextMode: -------PerCall(单调):无状态,每次调用 ...

  2. opengl加载多个3ds模型失败记

    VC6 下载 http://blog.csdn.net/bcbobo21cn/article/details/44200205 opengl环境配置 http://blog.csdn.net/bcbo ...

  3. WCF:并发处理

    当多个线程同时访问相同的资源的时候就会产生并发,WCF缺省情况下会保护并发访问.对并发访问需要恰当处理,控制不好不仅会大大降低WCF服务的吞吐量和性能,而且还有可能会导致WCF服务的死锁.一.WCF并 ...

  4. WCF 程序入门

    WCF是微软公司推出的符合SOA思想的分布式应用程序技术框架和编程模型,是建立在消息通信这一概念基础上运行的一个运行时服务系统. WCF编程模型的目标是实现以下两个实体之间的通信:WCF服务端和WCF ...

  5. [WCF编程]5.绑定概述

    一.绑定概述 WCF提供了一个编程框架,可以抽象化服务创建的复杂过程.绑定允许开发人员将精力集中在问题本身上,而无需考虑如何创建允许系统运行的架构,因为WCF已经创建了架构. 绑定类型是开发人员控制W ...

  6. WCF初识

    WCF能干什么? 在win32中,应用程序是运行在进程的线程中的,.NET出现之后,出现了AppDomain,其实就相当于在进程和线程之间又又了一层包装层,类似于子进程的概念,在一个进程或者应用程序域 ...

  7. WCF初探-21:WCF终结点(endpoint)

    WCF终结点概述 在之前文章的示例中,我们都是通过配置服务的终结点(endpoint)发布的服务,供客户端调用,这是因为WCF服务的所有通信都是通过该服务的终结点进行的.每个终结点(endpoint) ...

  8. WCF分布式开发步步为赢(3)WCF服务元数据交换、配置及编程开发

    今天我们继续WCF分布式开发步步为赢(3)WCF服务元数据交换.配置及编程开发的学习.经过前面两节的学习,我们了解WCF分布式开发的相关的基本的概念和自定义宿主托管服务的完整的开发和配置过程.今天我们 ...

  9. 传说中的WCF(10):消息拦截与篡改

    我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息,而且,可能我们还会有一个疑问:如何知道客户端与服务器通讯过 程中,期间发送和接收的SOAP是什么样子.当然,也有人是通过 ...

随机推荐

  1. TDD和BDD

    开发人员看测试之TDD和BDD   前言: 已经数月没有来园子了,写博客贵在坚持,一旦松懈了,断掉了,就很难再拾起来.但是每每看到自己博客里的博文的浏览量每天都在增加,都在无形当中给了我继续写博客的动 ...

  2. Linux访问Windows共享文件夹 (转)

    在开发Linux程序中,经常会使用Windows的编辑器进行编辑,这样还要拷贝到Linux服务器,如果有这种开发习惯的同学,可以使用这种方式进行开发. 当然除了这种方法之外,可以再Windows安装n ...

  3. JQUERY 选择

    jQuery 选择器 jQuery 采用 CSS 一个选择选择 HTML 元素. $("p") 选取 <p> 元素. $("p.intro") 选取 ...

  4. 它可以作为一个代理server或者转发java类

    在项目中使用,这简化和通用汽车.突出的基本思路,细节可以基于此类改变. 基于java容器和servlet. package com.xxx.first; import java.io.Buffered ...

  5. Linux命令学习篇0——原产地

    昨天在用curl发送简单的HTTP请求做測试的时候发现自己每次使用的时候都是在网络上查看别人的演示样例才干想起来怎么用,这样效率太低了.尽管有网络依旧在,可是总感觉不是被自己掌握着,心里不踏实,回忆起 ...

  6. Util

    Util最新代码更新说明   离上一篇又过去了一个月,时间比较紧,后续估计会更紧,所以这次将放出更多公共操作类及配套的CodeSmith模板,本篇将简要介绍新放出的重要功能,供有兴趣的同学参考. 重要 ...

  7. Objective-C马路成魔【12-分类和协议】

    郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠,支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 分类与协议 ...

  8. Android真正简单的教程-第十二枪(ViewFlipper实现滑动效果)

    直接看代码 1.MainActivity.java: package org.yayun.demo; import android.app.Activity; import android.os.Bu ...

  9. hdu 3709 数字dp(小思)

    http://acm.hdu.edu.cn/showproblem.php?pid=3709 Problem Description A balanced number is a non-negati ...

  10. Java设计模式(八)观察者模式 迭代器模式

    (十五)观察者模式 观察者模式,定义对象间一对多关系,一个对象状态发生改变,全部依赖于它的对象都收到通知而且自己主动更新,观察者与被观察者分开.比如邮件订阅.RSS订阅,假设有更新就会邮件通知你. i ...