2010-10-27 43 views
3

我正在研究一个应用程序,其中有一个映像检查进程和一个UI进程。两者都使用C#4.0进行编程。他们可能也可能不在同一台机器上。我必须设计它来处理这两种方法。检查过程将基本上在Windows 7/64盒子上作为此应用程序中的服务器运行。什么.net框架用于在两个进程之间进行通信

就通信而言,从Ui到检测过程的消息将是最小的。主要是启动/停止/更新配置类型消息。当检查过程正在检查时,它可以连续传输高达10mb /秒的图像进行监视。

SO 468375中,如果两个进程位于同一台机器上,则建议使用命名管道。听起来是一个很好的解决方案。

但是,我真正的问题是 - 如果这两个进程位于不同的计算机上,那么这两个进程之间进行通信的最佳实践是什么? WCF服务,套接字,远程处理,命名管道等?

回答

10

远程处理已弃用。 WCF封装了Remoting,Web服务和其他旧的通信技术。

编辑 - 添加这下一个段落

WCF被引入作为一种方法,使使用这些底层技术更一致。对Web服务进行编码与对Remoting服务进行编码基本相同,等等。这不是一个确切的比较,但它也符合LINQ的用户需求。随着LINQ你使用类似的语法是否访问SQL数据,对象,XML等

末编辑

我会说使用WCF服务,为你描述。这是他们的目标。

+1

我同意。如果它在机器上,通过WCF命名管道是一个很好的选择... – 2010-10-27 20:24:31

+0

听起来像WCF是要走的路。澄清一点 - 我可以运行WCF服务作为我的检查app.exe的一部分,还是必须将其作为Windows服务安装? – 2010-10-27 20:33:39

+0

它不需要成为Windows服务的一部分。该服务可以在winforms,consle应用程序或IIS中进行bohosted。 – David 2010-10-27 20:35:04

3

更多信息请参阅David的回答。

请注意,WCF可以使用不同的基础绑定。本地计算机上的命名管道应该是最快的(它使用.Net 4.0中的内存映射文件)。 TCP到远程机器可能是最简单和高性能的。

有一个运输here选择的讨论。

1

如果您有资源,我会建议MSMQ。我们广泛使用它们,它们重量轻,速度快,并且非常易于在.net中编程。

+0

不错。我忘了那件事。但是再次。 WCF也封装了这个。您可以使用WCF并选择MSMQ绑定。 – David 2010-10-27 21:17:12

0

您也可以考虑使用Eneter Messaging Framework。
它重量轻,易于使用。对于进程间通信,它支持NamedPipes,Tcp和Http(当然,您的应用程序逻辑不受此影响)。
如果你有兴趣,你可以在这里找到更多的技术信息:http://www.eneter.net/OnlineHelp/EneterMessagingFramework/Index.html
和实例如何在这里使用它:http://eneter.blogspot.com/

+0

有趣的产品。必须记住它,但它不适合我们的项目。 – 2010-11-06 19:47:05

相关问题