最近一直在学习WCF相关知识;本文章将针对并发与限流知识进行一个梳理,由于很多理论的知识所以做一个简单的记录,为今后回顾做一个记录;

一:并发知识

WCF将服务实例封装在一个称为实例上下文的对象中,并发是指同一个服务实例上下文同时处理多个服务调用请求;

WCF提供三种不同的实例上下文模式分别为:Per-Call,Per-Session和Single

WCF并发属于服务自身的行为;因此通过服务行为[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Single)]进行定义;

[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Single)]

public class CalculatorService:ICalculator{ }

WCF并发有三种典型策略分别为:Single(默认),Reentrant和Multiple;定义在System.ServiceModel.ConcurrencyMode枚举进行定义;

(1)Single:此策略是默认形式,一个实例上下文在某个时刻只能用于对单一请求的处理;多个并发的请求会以一种串行的方式进行处理;

(2)Reentrant:此策略跟Single类似;差别是如果服务操作在执行过程中涉及对客户端回调,该实例上下文可以用于其他服务调用请求;

(3)Multipe:一个实例上下文可以同时处理多个服务请求;

回调中的并发:要么极用单向(One-Way)的方式进行回调,要么将服务的并发模式设置为Reentrant或Multiple;

应用在回调类型上[CallbackBehavior(ConcurrencyMode=ConcurrencyMode.Multiple)]

二:限流知识

流量限制是为了实现对现有资源有效利用,从而达到确保服务的可用性和提高整体吞吐的目的;

通过设置ServiceThrottingBehavior三个可读写属性:MaxConcurrentCalls,MaxConcurrentInstances和MaxConcurrentSeesions;

分别代表流量的三个阈值;这三个属性是针对某个ServiceHost宿主而言;[WCF版本不同默认值大小不一样];

(1)MaxConcurrentCalls(默认值16,双核32):当前ServiceHost能够处理的最大并发消息数量;

(2)MaxConcurrentInstances(默认值116,双核232):当前ServiceHost允许存在的服务实例上下文的最大数量;

(3)MaxConcurrentSessions(默认值100,双核200):当前ServiceeHost允许的最大并发会话数量;

编程方式:

            using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
{
ServiceThrottlingBehavior throttlingBehavior = host.Description.Behaviors.Find<ServiceThrottlingBehavior>();
if (null == throttlingBehavior)
{
throttlingBehavior = new ServiceThrottlingBehavior();
host.Description.Behaviors.Add(throttlingBehavior);
}
throttlingBehavior.MaxConcurrentCalls = ;
throttlingBehavior.MaxConcurrentInstances = ;
throttlingBehavior.MaxConcurrentSessions = ;
host.Open();
}

配置方式(宿主):

 <behaviors>
<serviceBehaviors>
<behavior name="throttlingBehavior">
<serviceThrottling maxConcurrentCalls="" maxConcurrentInstances="" maxConcurrentSessions="" />
</behavior>
</serviceBehaviors>
</behaviors>

最近有个妹子弄的一个关于扩大眼界跟内含的订阅号,每天都会更新一些深度内容,在这里如果你感兴趣也可以关注一下(嘿对美女跟知识感兴趣),当然可以关注后输入:github 会有我的微信号,如果有问题你也可以在那找到我;当然不感兴趣无视此信息;

WCF学习笔记之并发与限流的更多相关文章

  1. WCF学习笔记之事务编程

    WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...

  2. WCF学习笔记之传输安全

    WCF学习笔记之传输安全 最近学习[WCF全面解析]下册的知识,针对传输安全的内容做一个简单的记录,这边只是简单的记录一些要点:本文的内容均来自[WCF全面解析]下册: WCF的传输安全主要涉及认证. ...

  3. WCF 学习笔记之异常处理

    WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...

  4. WCF 学习笔记之双工实现

    WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...

  5. 并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理

    在jdk中,为并发编程提供了CyclicBarrier(栅栏),CountDownLatch(闭锁),Semaphore(信号量),Exchanger(数据交换)等工具类,我们在前面的学习中已经学习并 ...

  6. 数据库学习笔记3 基本的查询流 2 select lastname+','+firstname as fullname order by lastname+','+firstname len() left() stuff() percent , select top(3) with ties

    数据库学习笔记3 基本的查询流 2   order by子句对查询结果集进行排序 多列和拼接 多列的方式就很简单了 select firstname,lastname from person.pers ...

  7. javaSE学习笔记(15) ---缓冲流、转换流、序列化流

    javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化 ...

  8. .NET-高并发及限流方案

    前言:高并发对我们来说应该都不陌生,特别想淘宝秒杀,竞价等等,使用的非常多,如何在高并发的情况下,使用限流,保证业务的进行呢.以下是一个实例,不喜勿喷! 总体思路: 1.  用一个环形来代表通过的请求 ...

  9. coding++:高并发解决方案限流技术---漏桶算法限流--demo

    1.漏桶算法 漏桶作为计量工具(The Leaky Bucket Algorithm as a Meter)时,可以用于流量整形(Traffic Shaping)和流量控制(TrafficPolici ...

随机推荐

  1. 51Nod1962 区间计数

    这题与之前那道区间最值的题非常类似,依旧是二分区间,然后统计跨过中间点的区间贡献. 我们要选出小于等于和小于的,这样就可以算出相等的区间长了. 复杂度O(nlogn) By:大奕哥 #include& ...

  2. 【BFS】【枚举】HihoCoder - 1251 - The 2015 ACM-ICPC Asia Beijing Regional Contest - C - Today Is a Rainy Day

    题意:给你两个只由1~6组成的串,问你B串至少要经过几次操作变成A串. 一次操作要么选择一个种类的数,将其全部变成另一种类:要么选择一个数,将其变为另一个数. 可以证明,一定先进行一定数量的第一种操作 ...

  3. Dalvik和ART的区别

    什么是Dalvik:    Dalvik是Google公司自己设计用于Android平台的Java虚拟机.Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一. ...

  4. [POJ1205]Water Treatment Plants

    题目大意: 有一排n个格子,要在它们上面装管道. 每个格子上的管道都是T形的,但是可以有三种流动的方向. 每种都是把两个方向的水往另一个方向排出. 如果方向是向左或向右,就是排到相邻的格子里. 特别地 ...

  5. lightoj 1306 - Solutions to an Equation 扩展的欧几里得

    思路:看题就知道用扩展的欧几里得算法做!!! 首先我们可以求出ax+by=gcd(a,b)=g的一个组解(x0,y0).而要使ax+by=c有解,必须有c%g==0. 继而可以得到ax+by=c的一个 ...

  6. USACO 2017 FEB Platinum mincross 可持久化线段树

    题意 上下有两个位置分别对应的序列A.B,长度为n,两序列为n的一个排列.当Ai == Bj时,上下会连一条边.你可以选择序列A或者序列B进行旋转任意K步,如 3 4 1 5 2 旋转两步为 5 2 ...

  7. VK Cup 2016 - Qualification Round 2 B. Making Genome in Berland 水题

    B. Making Genome in Berland 题目连接: http://www.codeforces.com/contest/638/problem/B Description Berlan ...

  8. Openfire更服务器名称后报Found RSA certificate that is not valid for the server domain的解决方法

    原文:http://blog.sina.com.cn/s/blog_ae5a3d3f0102wdrb.html Openfire更服务器名称的方法: 1.登陆openfire管理页面,在主页面下方选择 ...

  9. Tor Browser(洋葱浏览器)——一款使你匿名上网的浏览器

    第一次知道Tor是在有关斯诺登的新闻报道中. 简单说Tor是一款是你匿名访问网络的的软件.用户通过Tor可以在因特网上进行匿名交流. 为了实现匿名目的,Tor把分散在全球的计算机集合起来形成一个加密回 ...

  10. MS Sql Server 中主从库的配置和使用介绍

    网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求:这时候我们可以考虑使用主从库. 主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据 ...