代码之家  ›  专栏  ›  技术社区  ›  Maurizio Reginelli

如何监视客户端与WCF服务的连接?

wcf
  •  4
  • Maurizio Reginelli  · 技术社区  · 15 年前

    1. ServiceHost对象必须由服务器实例化并用作单例。然后,我必须提供一个由客户端调用的初始方法,以便将自己注册到服务。
    2. 使用性能监视器显示与服务相关的计数器。

    (1)和(2)都不能满足我的需求,因为我想创建自己的应用程序,正如我前面所说的,我不能使用单例模式。 你曾经遇到过这样的问题吗?你是怎么做到的?

    最后,但并非最不重要的是,我还需要监视对服务提供的每个方法的调用。有办法吗? 任何帮助都将不胜感激。

    2 回复  |  直到 15 年前
        1
  •  5
  •   marc_s    15 年前

    这有很多问题。

    首先,调用WCF服务的首选方法是每次调用模型,例如,您的客户机将调用服务方法,这将导致在服务器上创建服务类的实例,执行有问题的方法,然后再次释放服务实例。因此,您无法真正监视客户端连接本身——它们只在调用执行时存在几分之一秒。

    此外,除了性能计数器之外,服务器端实际上没有太多的基础设施来监控每秒的呼叫等。新的服务器加载项产品以前称为“Dublin”(目前称为“AppFabric”),应该在这一领域(可管理性)带来很多改进——见下图 MSDN article for more info

    但即使在今天,您也可以设想使用服务类本身,并监视该类的实例化和销毁。服务类还有一个指向 ServiceHost 通过 OperationContext.Current.Host 属性-因此您可以设想以某种方式向主机发送信号,表示已创建新的服务类实例。只需要一个主机对象,这样就可以工作,但需要在ServiceHost上采用经过深思熟虑和测试的多线程安全方法(您可以创建自己的自定义ServiceHost来实现类似的功能)。

    这可能是迈向“监控我的服务”方向的一步。至于性能监控-为什么现有的几十个WCF性能计数器不能帮助您或提供您需要的信息??

        2
  •  0
  •   Subbu    15 年前