大型项目中进程间通信的最佳和最简单方法
Posted
技术标签:
【中文标题】大型项目中进程间通信的最佳和最简单方法【英文标题】:Best and Easiest Method for inter-process communication in large project 【发布时间】:2009-04-21 18:58:52 【问题描述】:在一个非常大的项目中,可用于进程间通信的最佳和最简单的方法是什么?
我的要求是在普通的 Windows 窗体应用程序和 Windows 服务之间进行通信。
易于维护和实施的方法是首选。
谢谢
【问题讨论】:
【参考方案1】:从标签中我了解到我们正在谈论 .NET。也许您应该尝试 Microsoft WCF。它统一了这个问题,从实际代码中抽象出特定的进程间(服务间)通信技术。因此,通常您将设计和编写您的进程将用来相互通信的接口,然后您将在 XML 配置文件中配置特定的通信技术。也就是说,您在“进程谈论什么”和“具体如何实现这种通信”之间有相当明确的区别。
WCF 支持 SOAP、TCP\IP 通信、MSMQ 等,您的进程可以是 IIS 托管的 Web 服务、通常的 Windows 服务、控制台应用程序等——所有这些都在统一的框架下。我想,这正是你要找的。p>
【讨论】:
他也说很简单。对于我认为的任何 MS 产品,WCF 都有最糟糕的绑定和设置噩梦。当服务器是域的一部分时,尝试让匿名服务连接 - 您必须编辑系统注册表!确认! 嗯,我不熟悉你的具体情况,所以我不能争论......但从我所见,WCF 配置相当直观且有据可查。并且通常与 Microsoft 产品和框架一样,如果您的场景是 Microsoft 场景中描述的场景之一,那么事情几乎可以开箱即用(与许多第 3 方解决方案不同)。无论如何,我认为值得一试。【参考方案2】:这真的取决于项目,因为有大量的方法。
这可能取决于项目不同部分的运行位置(它们可能运行在不同的服务器上,或完全不同的技术堆栈上。)。
最常见的方法可能是网络服务。虽然这些都会带来开销,但通过 DLL 研究一个简单的接口 API 可能是值得的。
无论您做什么,都应该仔细考虑和设计,考虑安全性和性能,以及您将来如何扩展或修改它。
【讨论】:
【参考方案3】:不一定是最好的或最简单的......
在 .NET 世界中尝试 MSMQ 或 IBM MQ 消息队列中间件。
如果通信主要是单向的,那么考虑使用 WCF 服务,如果您让 Visual Studio 中的代码生成器为您完成大部分工作,这既好又容易。
【讨论】:
WCF 还支持 2 路(双工)通信,有几个提供的绑定支持 - 请参阅 wsDualHttpBinding、netNamedPipeBinding,当然还有 netTcpBinding 和其他一些...请参阅此处:msdn.microsoft.com/en-us/library/ms730879.aspx以上是关于大型项目中进程间通信的最佳和最简单方法的主要内容,如果未能解决你的问题,请参考以下文章