【问题标题】:Multithreaded Singleton in a WCF - What is the appropriate Service Behavior?WCF 中的多线程单例 - 什么是适当的服务行为?
【发布时间】:2013-10-17 18:19:38
【问题描述】:

我有一个实现多线程单例模式的类 (ZogCheckPublisher)。此类在由 Windows 服务托管的 WCF 服务的公开方法 (PrintZogChecks) 中使用。

public class ProcessKicker : IProcessKicker
{
   public void PrintZogChecks(ZogCheckType checkType)
   {    
       ZogCheckPublisher.Instance.ProcessCheckOrCoupon(checkType);
   }
}

ZogCheckPublisher 跟踪当前正在打印的“checkType”,并拒绝与当前活动的打印请求重复的请求。我正在尝试了解 ServiceBehaviors 和要使用的适当行为。我认为这是合适的:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]

多线程服务的一个实例。如果我理解正确?

【问题讨论】:

    标签: multithreading wcf service singleton servicebehavior


    【解决方案1】:

    你的理解是正确的。

    服务行为将实现服务的单个多线程实例。

    [ServiceBehaviorAttribute(Name = "Test", InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple]
    

    在单例服务中,配置的并发模式单独控制待处理调用的并发执行。因此,如果服务实例配置了 ConcurrencyMode.Multiple,则允许同时处理来自同一客户端的调用。调用将在服务实例离开通道后尽快执行(达到油门限制)。当然,与有状态的非同步服务实例的情况一样,您必须同步对服务实例的访问,否则有状态损坏的风险。

    以下链接提供额外的并发管理指南:
    Multithreaded Singleton WCF Service
    http://msdn.microsoft.com/en-us/library/orm-9780596521301-02-08.aspx

    问候,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2016-10-17
      • 1970-01-01
      相关资源
      最近更新 更多