繁体   English   中英

如何确保WCF服务始终对所有人可用?

[英]How can I make sure that the WCF service is always available for everyone?

这是我第一次使用WCF服务,对此有一些疑问。 我有一个项目布局,如下所示:

  • WCF项目
  • 客户端项目(将WCF项目作为服务参考进行引用)
    • 在添加服务引用时,我提供了运行WCF项目时创建的Http://地址作为服务地址。
    • 每次运行客户端应用程序时,我也会运行WCF项目,以确保在客户端要使用WCF服务时始终可用
    • 我知道这不是一个可持续的设计,因为每次我想使用WCF服务时都必须运行WCF项目不会解决。

也,

  • 我在团队环境中,我还想确保当队友从我那里获取最新代码时,他们可以运行客户端应用程序而不必担心WCF应用程序

我该如何实现?

作为新的WCF服务开发人员,除了查看有关WCF服务托管的常规信息之外,您还需要考虑以下服务方面:

实例化
实例化行为(通过使用ServiceBehaviorAttribute.InstanceContextMode属性进行设置)控制如何创建InstanceContext来响应传入的消息。

  • PerCall:为每个客户端请求创建一个新实例
  • PerSession:为每个新客户端创建一个新实例
  • 单个:单个实例处理所有客户端请求

每个都有优点和缺点,因此您需要为服务方案选择适当的行为。

并发
并发是对任一时刻在InstanceContext中活动的线程数的控制。 这是通过将ServiceBehaviorAttribute.ConcurrencyModeConcurrencyMode枚举一起使用来控制的。

  • 单线程:一次在实例上下文中一次处理消息的线程
  • 多个:每个服务实例可以有多个线程同时处理消息。
  • 可重入:每个服务实例一次处理一条消息,但接受可重入操作调用。

节流
ServiceThrottlingBehavior类公开了可用于限制在应用程序级别创建多少实例或会话的属性。 使用此行为,您可以微调Windows Communication Foundation(WCF)应用程序的性能。

      <serviceBehaviors>
        <behavior name="ThrottledService">
          <serviceThrottling 
             maxConcurrentCalls="n" 
             maxConcurrentInstances="n" 
             maxConcurrentSessions="n" />
        </behavior>
      </serviceBehaviors>

参考: https : //msdn.microsoft.com/en-us/library/ms731193%28v=vs.110%29.aspx https://msdn.microsoft.com/en-us/library/vstudio/ms735114%28v = VS.100%29.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM