你可以在WCF服务和托管它的Windows服务之间进行通信吗?

时间:2010-02-11 02:51:41

标签: c# windows wcf

我有一个WCF服务,我用于托管在Windows服务中的配置资源,用于维护数据库。有什么方法可以访问托管服务内的WCF服务吗?或者我应该将数据库功能移动到另一个WCF服务并将它们托管在Windows服务中吗?

3 个答案:

答案 0 :(得分:3)

服务类(实现服务接口的服务类)具有属性

OperationContext.Current.Host

可让您访问托管服务的ServiceHost实例。您可以非常轻松地访问该服务主机。

没有内置方法可以覆盖服务主机,并操纵或查询包含服务主机的NT服务。但您总是可以创建自己的自定义ServiceHost后代类,它将为您提供对NT服务本身的必要访问,然后使用该自定义服务主机进行服务实现。

使用自定义服务主机,您基本上可以做任何您认为必要且有用的事情 - 只需创建ServiceHost的后代并做任何您需要做的事情!

答案 1 :(得分:1)

如果通过“访问”意味着询问您是否可以拨打该服务,那么是的,该服务可以是其自身的客户。

最好的做法是将服务分成特定于Web服务的部分,以及完成实际工作的所有其他部分。让Windows服务调用后面的部分。

答案 2 :(得分:0)

我这样做的方法是使用自定义InstanceProvider将共享对象传递到WCF服务的构造函数中(这允许您为WCF服务使用非默认构造函数)。

然后,共享对象允许WCF服务与Windows服务(或可以访问共享对象的任何其他对象)“对话”。