WCF中每个调用机制可以创建多少实例上下文
本文关键字:创建 多少 实例 上下文 机制 调用 WCF | 更新日期: 2023-09-27 18:08:44
我正在实现一个WCF服务,其中该服务将同时受到许多请求的冲击。在获得请求后,WCF服务将打开一个excel文件,使用Interop读取数据,并将请求与从excel文件读取的数据一起发送回服务器。在当前不使用WCF的系统中,打开和读取文件需要2-5秒。我想在WCF中使用每个调用机制来创建实例。我的问题是,WCF中的Per-Call机制将处理多少这样的请求。如果我一次有100个请求,每个调用机制是否能够维持。你的建议/想法会很有帮助。
提前感谢。
经过大量的谷歌搜索,我找到了答案…
节流行为:WCF节流可以帮助您对并发调用、WCF实例和并发会话的数量设置上限。WCF提供了三种方法来定义上限:MaxConcurrentCalls、MaxConcurrentInstances和MaxConcurrentSessions。
MaxConcurrentCalls:限制WCF服务实例可以处理的并发请求的数量。MaxConcurrentInstances:限制在给定时间可以分配的服务实例的数量。当它是PerCall服务时,此值与并发调用的数量匹配。对于session服务,该值等于活动会话实例的数量。此设置对于单实例模式无关紧要,因为只创建一个实例。MaxConcurrentSessions:限制服务允许的活动会话数以上三个设置都可以在servicebehaviors标签中定义,如下面的XML片段所示:
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceThrottling maxConcurrentCalls="16"
maxConcurrentInstances="2147483647" maxConcurrentSessions="10" />
如果你在IIS上托管WCF服务,那么IIS每秒可以处理100多个请求,这取决于你的WCF服务代码如何响应100个请求。
正如你提到的,你的服务读取excel文件,它需要2-5秒。如果你的execel文件不经常更新,那么使用缓存来存储/检索数据。这将有助于增加您的响应时间。用户文件为基础的缓存,所以当你的excel更新,它会自动获得最新的数据。