【问题标题】:WCF service instance with parameter带参数的 WCF 服务实例
【发布时间】:2012-06-08 08:15:46
【问题描述】:

我在使用参数创建 WCF 服务实例时遇到问题。情况是在服务调用内部我无法创建第三方库 COM 对象(存在一些线程问题,该对象只能在主线程中创建)。因此,我想在服务函数内部简单地维护一个要创建的对象列表,并让主线程完成实际的对象创建工作。

但我不清楚如何简单地将列表传递给服务实例的构造函数。就我对 WCF 的了解而言,我认为服务实例是由框架本身创建的,它在构造函数中不带任何参数。那么将这个列表从主线程传递到服务实例的最简单方法是什么?谢谢!

【问题讨论】:

    标签: .net multithreading wcf


    【解决方案1】:

    尝试玩:

    • 默认构造函数
    • 手动服务主机。继承自:
      • System.ServiceModel.ServiceHost
      • System.ServiceModel.Activation.ServiceHostFactory
    • ServiceBehavior.InstanceContextMode:
      • InstanceContextMode.Single
    • 类范围字段:

      public class Service : IService
      {
          private AnotherClass _a = new AnotherClass(); // maybe static?
      }
      

      它将在默认构造函数调用之前被实例化,或者无论如何如果你没有默认构造函数

    【讨论】:

      【解决方案2】:

      不要尝试将其传递给服务类构造函数。这可能会产生问题,因为它会在服务类和 COM 类之间产生耦合。相反,只需通过静态列表属性或类似属性从服务方法中访问 COM 对象:

      void MyServiceMethod()
      {
         List<MyCOMObject> myComObject = MyHelperClass.COMObjectsList //the list is created elsewhere;
         ...
      }
      

      【讨论】:

        猜你喜欢
        • 2011-12-21
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 2019-12-18
        • 2013-01-09
        • 1970-01-01
        相关资源
        最近更新 更多