0

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

我看到两个选项来实现这一点:

  • 在自托管 WCF 的 Web 服务器中插入一个侦听器,并在对特定服务的请求进入时启动服务主机,然后 WCF 开始寻找该端点的存在;或者

  • 在进程中集成 Web 服务,如果请求尚未运行,则启动服务主机并将请求重定向到该服务主机(就像我怀疑 IIS 所做的那样)。

我不能使用 IIS 或 WAS,因为 Web 服务需要与 UI 业务逻辑一起运行。

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

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

4

2 回答 2

1

您可以进行定位器服务设置。基本上总是公开一个返回“实际”服务地址的轻量级服务。每次请求特定服务的地址时,请继续并启动它。

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

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

于 2011-02-25T21:11:18.027 回答
1

走了以下路线:

  • 创建单个服务主机;

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

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

  • 从动态代理分派到正确的实现。

于 2011-02-26T07:16:15.073 回答