来自同一WCF服务主机中不同服务的多个端点

时间:2015-01-14 22:19:21

标签: c# wcf

我正在尝试写一些东西来帮助我以自定义方式监控我的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个服务主机并将它们的开/关事件链接到主要的一个关闭监控的事件并且它不太理想。即使它不像我希望的那样简单,我也可以选择比现在更容易的替代方案。

1 个答案:

答案 0 :(得分:0)

可以做你想做的事,但这并不容易。我曾经做过一次,但老实说并且做了相当多的工作,但不确定这些东西有多少已经改变(在我的情况下,我想在WebHttpBinding到来之前有一个常规的HTTP端点,所以它实际上要复杂得多)。

现在这可能会变得容易多了,但是如果有用的话,这里有一些关于它的文章:

可以在此处找到调查产生的代码:http://quickcounters.codeplex.com/SourceControl/latest#QuickCounters_net2/WCFSupport/QuickCounters.Wcf/InstrumentedServiceAttribute.cs

特别是,请查看AddHttpGetDispatcher()方法的代码。