2014-12-02 163 views
2

我们有一个WCF网站服务,它在我们的网站上定期使用。偶尔,我们会有大量的用户访问我们的网站。我不希望服务超时,如果需要运行超过一分钟,我就可以。我也想设置服务上可能发生的并发请求数量。WCF服务绑定设置

我看到有很多超时设置可以在绑定上设置 - 所有的默认值都是1分钟。对于这样的情况,我应该设置什么样的超时设置,以及可以在哪里设置最大并发请求数?

感谢

回答

3

为了实现一个可扩展的WCF Web服务,您需要,除其他事项外,配置正确的并发模式,实例化模式和服务限制设置。

并发是指服务实例中同时执行的线程数。默认情况下,一个线程执行,但如果客户端调用多个方法并且每个方法的时间都很短,则可能需要使用多个线程。

实例化是指服务实例的生命周期。您可以通过设置ServiceBehavior属性的InstanceContextMode属性来控制实例。此属性有三种可能的值:

  • PerSession。 WCF运行时在客户第一次调用服务时创建一个新的服务对象。它使对象保持活动状态供客户端进行后续调用。运行时在会话结束时释放对象。这是此属性的默认值。
  • PerCall。每次客户端调用服务时,WCF运行时都会创建一个新的服务对象。它在通话后释放对象。
  • Single。 WCF运行时在客户第一次调用服务时创建一个新的服务对象。它使对象保持活动状态,以供任何客户端随后的调用。

服务限制配置根据实例化和并发模式设置控制实例,会话和/或调用的最大数目。

<behaviors> 
    <serviceBehaviors> 
    <behavior name="Throttled"> 
     <serviceThrottling 
     maxConcurrentCalls="x" 
     maxConcurrentSessions="x" 
     maxConcurrentInstances="x" 
     /> 

以下文章应帮助您评估各种设置并选择最适合您的方案的选项。

http://msdn.microsoft.com/en-us/library/ff183865.aspx
http://msdn.microsoft.com/en-us/library/ms731379%28v=vs.110%29.aspx
http://msdn.microsoft.com/en-us/library/vstudio/ms735114%28v=vs.100%29.aspx