2012-02-21 120 views
1

任何帮助/反馈将不胜感激。我想在C#中开发一个Windows服务,以便它通过命名管道与用C#编写的Web服务进行通信。这种进程间的方法可能吗?使用命名管道的原因是性能。Windows服务和网络服务之间的进程间通信

+0

当你说“使用C#编写的Web服务”时,它是否托管在IIS中,如果没有,如何?如果我正确地理解了你,它是“Web服务”的事实并不相关 - 重要的是什么类型的进程在什么安全上下文中运行,托管你的Windows服务需要通过命名管道进行通信的代码。 – 2012-02-23 09:35:04

+0

@ChrisDickson是的,web服务托管在IIS中。实际上,Windows服务和Web服务托管在同一台服务器(Windows服务器)上。此外,没有任何服务具有安全上下文。所以我的问题是命名管道接近可以在这种情况下实现? – 2012-02-23 16:11:38

回答

1

我会亲自创建一个WCF服务并使用netNamedPipe绑定。

我提供的链接包含一个工作示例。

您需要注意的是,由于Windows 2008 Server强化(包括Windows 7),服务在不同的会话Id(会话0)中运行,并且无法访问正在用户中运行的WCF服务模式。

+0

thx为消化,但是,Windows服务必须也通过TCP连接到非Windows环境,所以如果我使用WCF我将无法使用TCP协议 – 2012-02-21 18:05:07

+0

当然,您可以使用TCP。您可以将其托管在TCP的其他端口上。 – Aliostad 2012-02-23 09:23:10

+0

如果我从msdn规范正确理解,如果我使用WCF,我只能使用netNamedPipes和netTcp作为通信协议。它是否正确?如果是这样,我想使用常规的TCP协议而不是netTcp,因为这个只是在Windows机器之间使用。 – 2012-02-23 16:02:48