多个Windows服务使用相同的wcf与多个端点?

时间:2012-08-01 14:35:56

标签: c# wcf windows-services endpoints base-address

对于以下问题,过去某人可能采取的最佳方法需要一些帮助...

通过调用第三方COM的Windows服务托管WCF。 遗憾的是,STAThead意味着它只在一个进程范围内运行时才使用一个核心。

为了解决这个问题,我想复制Windows服务(我在安装过程中使用不同的服务名称轻松完成),创建另一个进程范围,以便COM互操作将使用另一个核心。

问题:如何在不同的地址下托管每项服务,以便客户可以调用他们想要使用WCF方法的服务?

如果我使用不同的端点并将每个Windows服务指向另一个端点,我会收到一条错误消息,指出每个基址只允许一个主机。

我可以为同一协议添加多个基地址(可能是不同的端口),还是将它们链接到不同的主机服务吗?

例子很棒:)。

1 个答案:

答案 0 :(得分:0)

听起来我真的想要拥有WCF服务使用的这个COM对象的多个实例。您可以启动实例化并使用自己的COM对象的新线程(每个STA),以便您可以同时使用多个这些COM对象。当然,您必须将任何结果传递回WCF线程。

如果要托管多个WCF服务实例,则取决于您的托管方式。在ii6中,您只需创建另一个.svc文件即可。这将在与该应用程序池中的其他所有内容相同的进程中运行该服务。您可以通过为其分配不同的应用程序池来使服务在不同的进程中运行。我不确定你是否可以在每个.svc的基础上这样做。如果您使用的是IIS 7,则可以执行.svc操作或在IIS7中使用Windows进程激活服务(WAS)支持,在这种情况下,您基本上可以在配置中创建另一个元素。我相信您可以在Windows Server 2008 R2中使用WAS而无需使用IIS ...