1.配置文件中对流量的配置
从上图可知,通过配置<serviceBehavior>下的<serviceThrottling>属性即可配置WCF服务的访问流量。
上图中将maxConcurrentCalls,maxConcurrentInstances及maxConcurrentSessions均配置为“1”,则对客户端的请求只能线性处理,每次只处理一个请求,其他的请求自动放在队列中等待。
2.验证流量配置
将配置文件的maxConcurrentCalls,maxConcurrentInstances及maxConcurrentSessions均配置为“1”,然后双击打开附件中下载的FlowControl文件夹下的FlowControl.sln,直接在VS2008中运行例子。
在测试的站点上点击MultiAccess按钮(如下图所示),将启动5个线程同时访问WCF服务(WCF服务的功能只是暂停5秒),当访问结束后在~FlowControl\WebClient\log文件夹下生成5个线程的log文件,发现5个线程访问完服务共用时25秒。(没有并行访问)
若将配置文件的maxConcurrentCalls,maxConcurrentInstances及maxConcurrentSessions的值调大,再次测试,将会发现5个线程访问完服务的用时小于25秒,具体多少取决于maxConcurrentCalls,maxConcurrentInstances及maxConcurrentSessions的值的设置。
3.WCF限制上传文件的大小
3.1服务端代码
由上图可知,功能仅仅就是将fileData写入路径为path的文件中。
3.2客户端代码
画面如下:
上传代码如下:
由上图可知,上传文件的大小取决于length的值,我们也是通过在配置文件中设置maxArrayLength的大小来控制上传文件的大小的。配置如下:
通过Debug上面的代码,找到一个length大于16384的文件,将其上传会发现站点抛出异常,而length小于16384的文件则可以正常上传。
实例代码下载:FlowControl.zip
本文转自wang_yb博客园博客,原文链接:http://www.cnblogs.com/wang_yb/archive/2010/06/06/1752890.html,如需转载请自行联系原作者