我试图用自定义的方式来帮助我监视我的WCF服务。为此,我的目的是编写一个实现服务契约的类,让我们将其称为IMonitorService,每当我想托管任何普通服务(比如IBusinessService )时,我都希望能够为我的业务服务创建正常的端点,另外还可以创建一个实现IMonitorService的端点。这样,我就可以从我的所有服务中调用所有监视器端点,并读取我需要的内容。这有可能吗?我并不是说这样做是可能的,但这样的事情会很棒:
var serviceHost = new ServiceHost(typeof(BusinessService), baseAddresses);
var monitorService = new MonitorService(servicehost.Description);
serviceHost.AddServiceEndpoint(typeof(IMonitorService), whatever_binding, monitorService);
我知道微软已经为IMetadataExchange和发现端点做了这件事,但我自己似乎不明白该如何做。这些措施如何实施?
目前,我求助于打开2台服务主机,并将它们的开放/关闭事件链接到主服务主机关闭监控事件,这并不理想。即使不是我所希望的那么简单,我也愿意接受比我现在所做的更容易的选择。
发布于 2015-01-15 03:48:25
做你想做的事是可能的,但做起来并不容易。我做过一次,但老实说,做了很多工作,但不确定这些东西有多少改变(在我的例子中,我想在WebHttpBinding出现之前有一个常规的HTTP端点,所以它实际上要复杂得多)。
现在这可能要容易得多,但如果有用的话,下面是我当时写过的一些文章:
这次调查的结果代码可以在这里找到:net2/WCFSupport/QuickCounters.Wcf/InstrumentedServiceAttribute.cs
特别是,查看AddHttpGetDispatcher()方法的代码。
https://stackoverflow.com/questions/27953514
复制相似问题