按需启动自托管WCF服务

时间:2011-02-25 19:25:51

标签: c# .net wcf web-services self-hosting

是否可以按需启动自托管WCF服务?

我认为有两种方法可以做到这一点:

  • 在自托管WCF的Web服务器中插入侦听器,并在WCF开始查找该端点的存在之前,在请求特定服务时启动服务主机;或

  • 集成正在处理的Web服务,如果请求尚未运行,请启动服务主机并将请求重定向到该服务主机(就像我怀疑IIS一样)。

我无法使用IIS或WAS,因为Web服务需要使用UI业务逻辑运行。

这是可行的,我该如何做到这一点?

修改
我不能只启动服务主机,因为有数百个,大多数(约95%)(几乎)从未使用但需要可用。这是为了公开900个实体的业务逻辑层。

2 个答案:

答案 0 :(得分:1)

您可以进行定位器服务设置。基本上总是暴露一个返回“实际”服务地址的轻量级服务。每次请求特定服务的地址时,请继续将其旋转。

如果您担心要清理它,可以保留服务主机列表并在某种不活动超时中连接,这样您就可以定期关闭服务主机。

这里有一些设计问题 - “在调用另一个服务之前调用一个服务”的概念在某种程度上可能被认为是一个坏主意(听起来像耦合两个服务的状态)。

答案 1 :(得分:1)

走了以下路线:

  • 创建单个服务主机;

  • 创建一个实现所有服务接口的动态代理;

  • 为动态代理实现的每个接口添加服务端点;

  • 从动态代理发送到正确的实现。