在WCF中为每个调用机制创build多less个实例上下文

我正在实现一个WCF服务的过程,其中服务将一次受到许多请求。 在得到请求之后,WCF服务将打开一个使用Interop读取数据的excel文件,并使用从excel文件中读取的数据将请求发送回服务器。 在不使用WCF的当前系统中打开并读取文件需要2-5秒。 我想在WCF中使用per-call机制来创build实例。 我的问题是有多less这样的请求将WCF中的每个调用机制处理。 如果我一次有100个请求,每个呼叫机制能够维持。您的build议/想法将是非常有帮助的。

提前致谢。

大量的谷歌search后,我find了答案…

限制行为:WCF限制可帮助您对并发调用,WCF实例和并发会话的数量设置上限。 WCF提供了三种方法来定义上限:MaxConcurrentCalls,MaxConcurrentInstances和MaxConcurrentSessions。

MaxConcurrentCalls:限制WCF服务实例可以处理的并发请求数。 MaxConcurrentInstances:限制在给定时间可以分配的服务实例的数量。 当它是PerCall服务,这个值匹配并发呼叫的数量。 对于PerSession服务,该值等于活动会话实例的数量。 此设置对单实例化模式无关紧要,因为只创build一个实例。 MaxConcurrentSessions:限制允许服务的活动会话的数量

以上所有三个设置都可以在servicebehaviors标记中定义,如下面的XML片段所示:

<serviceBehaviors> <behavior name="serviceBehavior"> <serviceThrottling maxConcurrentCalls="16" maxConcurrentInstances="2147483647" maxConcurrentSessions="10" /> 

如果您在IIS上托pipe您的WCF服务,那么是的,IIS每秒可以处理超过100个请求,并且取决于您的WCF服务代码以如何响应100请求。

正如你所说,你的服务读取excel文件,它需要2-5秒。 如果您的execel文件不经常更新,那么使用caching来存储/检索数据。 这会有助于增加您的响应时间。 基于用户文件的caching,所以当你的Excel更新它自动获取最新的数据。