WCF-处理来自多个客户端的请求

WCF-处理来自多个客户端的请求,wcf,clients,Wcf,Clients,我的WCF服务库作为Windows服务托管,应该处理来自多个客户端的请求。 客户机将经常提出的一个请求是资源密集型的 我对上述情景有两个疑问: WCF服务如何处理多个客户端的请求 是否有任何WCF配置使流程高效 谢谢大家! 在您的默认场景中,WCF服务主机(托管您的服务类的东西)将为传入的每个请求创建一个新的服务类实例,并让该实例处理请求(“每次调用”激活) 您可以使用服务器上的servicetrottling行为调整并发活动服务类实例的最大数量 <system.serviceModel&

我的WCF服务库作为Windows服务托管,应该处理来自多个客户端的请求。 客户机将经常提出的一个请求是资源密集型的

我对上述情景有两个疑问:

  • WCF服务如何处理多个客户端的请求
  • 是否有任何WCF配置使流程高效

  • 谢谢大家!

    在您的默认场景中,WCF服务主机(托管您的服务类的东西)将为传入的每个请求创建一个新的服务类实例,并让该实例处理请求(“每次调用”激活)

    您可以使用服务器上的
    servicetrottling
    行为调整并发活动服务类实例的最大数量

    <system.serviceModel>
       <behaviors>
          <serviceBehaviors>
             <behavior name="ThrottledServiceBehavior">
                <serviceThrottling 
                    maxConcurrentCalls="25" 
                    maxConcurrentSessions="25"
                    maxConcurrentInstances="25"/>
             </behavior>
          </serviceBehaviors>
       </behaviors>
    
    InstanceContextMode
    应该是
    PerCall
    (每个调用请求都会得到一个新的、单独的实例),然后
    ConcurrencyMode
    可以是
    单个
    (这是最容易开发的)

    InstanceContextMode
    也可以是
    PerSession
    ,如果您需要基于会话的方法(不太常见),或者
    Single
    (您的服务类将是singleton,非常不鼓励使用此模式,除非您绝对、积极地必须了解它的所有怪癖和问题!)

    ConcurrencyMode
    也可以是
    可重入的
    (仅与双工合约和绑定相关)或
    多个
    (多线程单例服务类-高风险且难以开发!)

    马克

    [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall, 
                     ConcurrencyMode=ConcurrencyMode.Single)]
    class YourServiceClass : IYourService
    {
      .....
    }