【问题标题】:Per-Call / Singleton Hybrid solution for WCFWCF 的每次调用/单例混合解决方案
【发布时间】:2014-06-11 06:04:30
【问题描述】:

我想要共享我的 WCF 服务的一些组件;但是我希望该服务在每个会话的基础上运行(以防一个会话创建一个异常而中断其他调用者)

现在我的服务合同配置如下:

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

如果我有线程安全的单例组件,比如我想通过所有会话共享的记录器;如何制作一个不是前端单实例(最好是每个会话)但具有单实例后端组件(如日志记录、数据访问等)的 WCF。

【问题讨论】:

    标签: c# web-services wcf session


    【解决方案1】:

    如果你已经在使用一些依赖注入框架 - 让它控制 对象的生命周期。注册记录器和数据库访问对象 单实例生命周期范围,并在每次调用时在您的 wcf 服务中解析 - 你每次都会得到相同的实例。

    如果您手动控制对象的生命周期 - 设计 记录器和数据库访问对象作为单例(或创建一些父单例服务), 并在 wcf 服务中访问其实例。在这种情况下要小心避免服务定位器反模式。

    WCF 服务本身在这两种情况下都可以配置为 InstanceContextMode.PerCall 或 PerSession。

    【讨论】:

      猜你喜欢
      • 2013-03-05
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 2010-11-21
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      相关资源
      最近更新 更多