C# 帮助我选择WCF服务中的实例管理

C# 帮助我选择WCF服务中的实例管理,c#,.net,wcf,C#,.net,Wcf,我的场景是这样的: 在服务器上有一个应用程序,它公开一个COM对象,允许通过编程方式与该应用程序交互。但是,由于许可证限制,我只能通过COM连接一次。因此,初始化之后,COM对象将返回一个更为指定的ConnectionObject 我需要一个建议,我会为我的服务选择什么样的管理模式,它将与ConnectionObject交互: 每次通话服务: 我有两个选择: 我可以通过COM登录,执行操作并注销以释放连接。但是这个日志记录过程有些耗时 我可以创造一些 单例类,可以保持 对ConnectionOb

我的场景是这样的:

在服务器上有一个应用程序,它公开一个COM对象,允许通过编程方式与该应用程序交互。但是,由于许可证限制,我只能通过COM连接一次。因此,初始化之后,COM对象将返回一个更为指定的ConnectionObject

我需要一个建议,我会为我的服务选择什么样的管理模式,它将与ConnectionObject交互:

每次通话服务:

我有两个选择:

  • 我可以通过COM登录,执行操作并注销以释放连接。但是这个日志记录过程有些耗时

  • 我可以创造一些 单例类,可以保持 对ConnectionObject的引用。 问题是我不知道 如何共享的同一实例 对象通过不同的实例 什么服务?可能吗

  • 单件服务:

    共享ConnectionObject的问题不存在。对象将在服务生命开始时创建,并在服务关闭时释放。但是我读到不推荐使用这种服务


    谢谢您的建议。

    考虑到您对COM对象的要求以及耗时的登录和注销过程,我会选择singleton服务。我们一直这样使用我们的WCF服务(还与legagy COM对象交谈)

    您可以将以下属性添加到WCF服务的类定义中以获取行为:

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
    public class MyService : IMyServiceContract
    {
        [OperationBehavior]
        public void MyServiceCall ()