来自同一 WCF 服务主机中不同服务的多个端点
Multiple endpoints from different services in the same WCF service host
我正在尝试编写一些东西来帮助我以自定义方式监视我的 WCF 服务。为此,我打算编写一个 class 实现服务契约,我们称之为 IMonitorService,每当我想托管我的任何常规服务时,比如说 IBusinessService,我希望能够创建我的业务服务的正常端点以及实现 IMonitorService 的端点。这样我就可以从我的所有服务中调用所有监视器端点并读取我需要的内容。这可能吗?
我并不是说可以这样做,但这样的事情会很棒:
var serviceHost = new ServiceHost(typeof(BusinessService), baseAddresses);
var monitorService = new MonitorService(servicehost.Description);
serviceHost.AddServiceEndpoint(typeof(IMonitorService), whatever_binding, monitorService);
我知道 Microsoft 已经为 IMetadataExchange 和发现端点执行了此操作,但我自己似乎无法理解如何执行此操作。这些是如何实施的?
目前我正在求助于打开 2 台服务主机并将它们的 open/close 事件链接到主要主机关闭监控主机,这不太理想。即使它不像我希望的那么简单,我也愿意接受比我现在正在做的更简单的选择。
做自己想做的事是可以的,但做起来并不容易。我做过一次,但老实说并做了很多工作,但不确定这些东西有多少变化(就我而言,在 WebHttpBinding 出现之前我想要一个常规的 HTTP 端点,所以它实际上要复杂得多).
现在这可能容易多了,但如果它有用的话,这里有一些我当时写的关于它的文章:
- http://winterdom.com/2006/10/howimetadataexchangeishosted
- http://winterdom.com/2006/11/hackingmywayintoanarbitraryendpointinawcfservice
可以在此处找到该调查的结果代码:http://quickcounters.codeplex.com/SourceControl/latest#QuickCounters_net2/WCFSupport/QuickCounters.Wcf/InstrumentedServiceAttribute.cs
请特别查看 AddHttpGetDispatcher() 方法的代码。
我正在尝试编写一些东西来帮助我以自定义方式监视我的 WCF 服务。为此,我打算编写一个 class 实现服务契约,我们称之为 IMonitorService,每当我想托管我的任何常规服务时,比如说 IBusinessService,我希望能够创建我的业务服务的正常端点以及实现 IMonitorService 的端点。这样我就可以从我的所有服务中调用所有监视器端点并读取我需要的内容。这可能吗? 我并不是说可以这样做,但这样的事情会很棒:
var serviceHost = new ServiceHost(typeof(BusinessService), baseAddresses);
var monitorService = new MonitorService(servicehost.Description);
serviceHost.AddServiceEndpoint(typeof(IMonitorService), whatever_binding, monitorService);
我知道 Microsoft 已经为 IMetadataExchange 和发现端点执行了此操作,但我自己似乎无法理解如何执行此操作。这些是如何实施的?
目前我正在求助于打开 2 台服务主机并将它们的 open/close 事件链接到主要主机关闭监控主机,这不太理想。即使它不像我希望的那么简单,我也愿意接受比我现在正在做的更简单的选择。
做自己想做的事是可以的,但做起来并不容易。我做过一次,但老实说并做了很多工作,但不确定这些东西有多少变化(就我而言,在 WebHttpBinding 出现之前我想要一个常规的 HTTP 端点,所以它实际上要复杂得多).
现在这可能容易多了,但如果它有用的话,这里有一些我当时写的关于它的文章:
- http://winterdom.com/2006/10/howimetadataexchangeishosted
- http://winterdom.com/2006/11/hackingmywayintoanarbitraryendpointinawcfservice
可以在此处找到该调查的结果代码:http://quickcounters.codeplex.com/SourceControl/latest#QuickCounters_net2/WCFSupport/QuickCounters.Wcf/InstrumentedServiceAttribute.cs
请特别查看 AddHttpGetDispatcher() 方法的代码。