我正在开发一个应用程序,我有一个成像检查过程和一个Ui过程。两者都是使用c#4.0编程。它们可能在也可能不在同一台机器上。我必须设计它来处理这两种方法。检查过程基本上作为Windows 7/64盒子上的此应用程序中的服务器运行。
在沟通方面,从Ui到检查过程的信息将是最小的。主要是启动/停止/更新配置类型消息。检查过程正在检查时,它可以连续流式传输10mb /秒的图像进行监控。
在SO 468375中,如果两个进程都在同一台机器上,则建议使用命名管道。听起来像是一个很好的解决方案。
但是,我真正的问题是 - 如果这两个进程在不同的计算机上进行通信,那么当前建议的最佳实践是什么。 WCF服务,套接字,远程处理,命名管道等?
答案 0 :(得分:10)
不推荐使用远程处理。 WCF封装了远程处理,Web服务和其他旧的通信技术。
编辑 - 添加了下一个段落
引入WCF是为了使这些底层技术更加一致。对Web服务进行编码与编写Remoting服务等几乎完全相同。这不是一个精确的比较,但它与他们用LINQ拍摄的内容一致。使用LINQ,无论是访问SQL数据,对象,XML等,都使用类似的语法。
结束修改
我想说使用WCF服务来处理你所描述的内容。这就是他们的目的。
答案 1 :(得分:3)
大卫回答的额外信息。
请注意,WCF可以使用不同的底层绑定。本地计算机上的命名管道应该是最快的(它使用.Net 4.0中的内存映射文件)。 TCP到远程机器可能是最简单和最高效的。
讨论了运输here的选择。
答案 2 :(得分:1)
如果你有资源我建议MSMQ。我们广泛使用它们,它们重量轻,速度快,并且非常容易在.net中编程。
答案 3 :(得分:0)
您还可以考虑使用Eneter Messaging Framework。
它重量轻,易于使用。对于进程间通信,它支持NamedPipes,Tcp和Http(当然,您的应用程序逻辑不受此影响)。
如果您有兴趣,可以在此处找到更多技术信息:http://www.eneter.net/OnlineHelp/EneterMessagingFramework/Index.html
以及如何在此处使用它的示例:http://eneter.blogspot.com/