0

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

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

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

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

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

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

例子会很棒:)。

4

1 回答 1

0

在我看来,您真的希望 WCF 服务使用此 COM 对象的多个实例。您可以启动新线程(每个 STA)来实例化并使用它们自己的 COM 对象,这样您就可以一次使用多个这些 COM 对象。当然,您必须将任何结果传回 WCF 线程。

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

于 2012-08-01T15:26:03.570 回答