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 ...
随机推荐
- 快速排序-C
#include <stdio.h> #include <stdlib.h> #define N 6 int partition(int arr[], int low, int ...
- bzoj1375 双调路径
Description 来越多,因此选择最佳路径是很现实的问题.城市的道路是双向的,每条道路有固定的旅行时间以及需要支付的费用.路径由连续的道路组成.总时间是各条道路旅行时间的和,总费用是各条道路所支 ...
- [转]如何解决android模拟器慢的问题
分步阅读 在android开发的过程,发现android模拟器的速度不是一般的慢,那主要是因为android模拟器默认采用的是arm处理器造成的,这里主要提供两种方法: ① 利用intel虚拟硬件加速 ...
- UIColor和 同 CIColor 与 CGColor 之间的联系、转换
1. 利用UIColor展现 #F6F6F6 这个传统的颜色 #F6F6F6 为一个 16 进制表示的RPG颜色,所以,需要先转换成 10进制,其中 F6 - 240,F6 - 240 ,F6 - ...
- SharePoint 2013 排错之"Code blocks are not allowed in this file"
今天,设置页面布局的自己定义母版页时,设置完了以后保存,然后预览报错,错误例如以下截图:删掉自己定义母版页的MasterPageFile属性,页面依旧报错:感觉甚是奇怪,由于有版本号控制,还原为最初的 ...
- 简化delegate写法
标准的写法 空 简化后的宏 /**************************************************************/ // delegate 托付 /* #de ...
- 水平ListView
/* * HorizontalListView.java v1.5 * * * The MIT License * Copyright (c) 2011 Paul Soucy (paul@dev-sm ...
- 搭建java开发环境:安装JDK
一:下载安装JDK,java7相对稳定成熟 (下载地址>>) 必须选择同意,然后根据自己的系统版本选择对应的jdk 如: 装完jdk就会提示安装jre,一般放同一目录下 配置系统变量: w ...
- unity3d-地图制作之暗光
最近看了暗黑破坏神3的视频,看到游戏里面的场景画面,颇有感触. 画面可谓做的极好的,虽然我审美观不是那么滴好,但是这游戏就让我看的赏心悦目,就让我好想来撸那么一把. 看完暗黑视频后,我就开始研究里面的 ...
- https://github.com/wytings
博客中写了很多比较杂乱的东西,有时候可能一时看不出效果,毕竟代码问题确实是 “Talk is cheap. Show me the code” 所以,就开了一个github,把一些日常开发和使用的工具 ...