WCF流量控制

1.配置文件中对流量的配置

image

从上图可知,通过配置<serviceBehavior>下的<serviceThrottling>属性即可配置WCF服务的访问流量。

上图中将maxConcurrentCallsmaxConcurrentInstancesmaxConcurrentSessions均配置为“1”,则对客户端的请求只能线性处理,每次只处理一个请求,其他的请求自动放在队列中等待。

 

2.验证流量配置

将配置文件的maxConcurrentCalls,maxConcurrentInstances及maxConcurrentSessions均配置为“1”,然后双击打开附件中下载的FlowControl文件夹下的FlowControl.sln,直接在VS2008中运行例子。

 

在测试的站点上点击MultiAccess按钮(如下图所示),将启动5个线程同时访问WCF服务(WCF服务的功能只是暂停5秒),当访问结束后在~FlowControl\WebClient\log文件夹下生成5个线程的log文件,发现5个线程访问完服务共用时25秒。(没有并行访问)

image

若将配置文件的maxConcurrentCallsmaxConcurrentInstancesmaxConcurrentSessions的值调大,再次测试,将会发现5个线程访问完服务的用时小于25秒,具体多少取决于maxConcurrentCallsmaxConcurrentInstancesmaxConcurrentSessions的值的设置。

 

3.WCF限制上传文件的大小

3.1服务端代码

clip_image002[6]

 

 

 

由上图可知,功能仅仅就是将fileData写入路径为path的文件中。

 

3.2客户端代码

画面如下:

image 先点击参照按钮选择文件,再点击Upload按钮上传文件。

 

上传代码如下:

image由上图可知,上传文件的大小取决于length的值,我们也是通过在配置文件中设置maxArrayLength的大小来控制上传文件的大小的。配置如下:

image 通过Debug上面的代码,找到一个length大于16384的文件,将其上传会发现站点抛出异常,而length小于16384的文件则可以正常上传。

 

实例代码下载:FlowControl.zip

posted @   wang_yb  阅读(1794)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)
点击右上角即可分享
微信分享提示