WCF学习笔记之并发与限流
最近一直在学习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学习笔记之并发与限流的更多相关文章
- WCF学习笔记之事务编程
WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...
- WCF学习笔记之传输安全
WCF学习笔记之传输安全 最近学习[WCF全面解析]下册的知识,针对传输安全的内容做一个简单的记录,这边只是简单的记录一些要点:本文的内容均来自[WCF全面解析]下册: WCF的传输安全主要涉及认证. ...
- WCF 学习笔记之异常处理
WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...
- WCF 学习笔记之双工实现
WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...
- 并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理
在jdk中,为并发编程提供了CyclicBarrier(栅栏),CountDownLatch(闭锁),Semaphore(信号量),Exchanger(数据交换)等工具类,我们在前面的学习中已经学习并 ...
- 数据库学习笔记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 ...
- javaSE学习笔记(15) ---缓冲流、转换流、序列化流
javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化 ...
- .NET-高并发及限流方案
前言:高并发对我们来说应该都不陌生,特别想淘宝秒杀,竞价等等,使用的非常多,如何在高并发的情况下,使用限流,保证业务的进行呢.以下是一个实例,不喜勿喷! 总体思路: 1. 用一个环形来代表通过的请求 ...
- coding++:高并发解决方案限流技术---漏桶算法限流--demo
1.漏桶算法 漏桶作为计量工具(The Leaky Bucket Algorithm as a Meter)时,可以用于流量整形(Traffic Shaping)和流量控制(TrafficPolici ...
随机推荐
- 我的OI生涯 第三章
第三章 日子过得就像那些不眠的晚上,她嚼着口香糖对墙满谈着理想.——————赵雷<成都> NOIP过后我认识到了自己有多么菜,我换了座,到了靠窗户那排. 大王开始给我们介绍一些高端算法,那 ...
- 51nod2000 四边形分割平面 规律题
观察样例,$ans(1) = 1, ans(2) = 10$,再手推一组,$ans(3) = 26$ 可以发现规律$ans(n) = (2n - 1)^2 + 1$ 如果还是没看出规律,那么打个程序去 ...
- CodeForces - 1009D Relatively Prime Graph
题面在这里! 直接暴力找点对就行了,可以证明gcd=1是比较密集的,所以复杂度略大于 O(N log N) #include<bits/stdc++.h> #define ll long ...
- bzoj 2434 ac自动机
ac自动机中,如果以trie中的节点为节点,(fail[i],i)为边,可以建立一颗树,该树有如下特点:“节点u是节点v的祖先 当且仅当 u代表的字符串是v代表的字符串的一个后缀”.(u代表的字符串是 ...
- flex弹性盒子
注意事项 1.设为Flex布局之后,子元素的float,clear和vertical-align属性都讲失效 2.采用Flex布局的元素,称为Flex容器(Flex container),所有的子元素 ...
- CentOS依赖包查找工具(https://centos.pkgs.org)
https://centos.pkgs.org 通过这个地址,可以搜索出一些常用包放在哪些依赖或者仓库上.
- 树莓派(Debian)系统设置了静态IP之后还会获取动态IP的问题解决(scope global secondary eth0)
解决方法: 1.配置好静态IP在/etc/network/interface 2.关闭dhcp服务(不知道这个服务是干嘛的,明明是客户端还需要这个) sudo systemctl stop dhcpc ...
- 学习笔记:Tab Bar 控件使用详解
注意这里是:Tab Bar 不是Tab Bar Controller. Tab bar是继承UIView,所以可以添加到ViewController里.是View就可以add到另一个View上去.Ta ...
- NSDictionary , NSMutableDictionary, NSMutableDictionary 和 NSMutableSet)相当于java的map、set
1 NSDictionary 和 NSMutableDictionary NSDictionary :就是java中的map; 放入对象是键值对 key-value , 同样 秉持了一样的原则,只 ...
- AX5511 Boost Converter
GENERAL DESCRIPTION The AX5511 is a current mode step up converter intended for small, low powera ...