让两个.net应用程序互相交流的最轻量级方法是什么?

时间:2010-12-12 20:34:02

标签: .net ipc

我们有一个简单的命令(播放,暂停,下一首曲目)的.net服务。它安装在用户工作站上,具有自己的凭据(例如,FooServiceUser)。如果我想给用户一个可以将命令发送到服务的应用程序,那么最轻量级的方法是什么?记住我只想将命令从单个工作站发送到在同一工作站上运行的进程。命令非常简单。该应用程序还需要从服务接收状态。即暂停,播放曲目21.

应该很容易吗? WCF看起来很复杂而且过度。 SO上的每个人都在说.net远程处理很糟糕。我不想安装MSMQ。每次提到套接字都会得到负分。

4 个答案:

答案 0 :(得分:6)

我绝对会说Remoting已被取代并使用带有命名管道绑定的WCF,但现在您正在谈论轻量级,我必须说Remoting是轻量级的,并且由于两个AppDomain之间的通信而无法进行任何操作通常是通过远程处理。所以它确实是有效的选择。

话虽如此,考虑到WCF的灵活性,我仍然会建议 - 虽然它是沉重,粗糙且过度生产

答案 1 :(得分:6)

对于完整易用的解决方案,我建议使用WCF。它仅支持此应用程序的内存通道协议(ICP)。

仍然是你所谓的'轻量级'。 WCF的托管部分可以在大约5行代码中完成。生成所有客户端代码。那么你真的关心你必须使用(已经安装)的程序集的数量和大小,或者你将忽略的功能数量?

只需使用WCF 如果需要,它可以让您轻松扩展到套接字和PC间。

答案 2 :(得分:2)

如果应用程序与Windows服务位于同一台计算机上,您可能甚至不必担心使用远程处理,Web服务等,因为您可以实例化ServiceController Class并使用其ExecuteCommand方法。

答案 3 :(得分:2)

WCF在我完成通信所需的代码行方面是轻量级的。 它在执行速度和内存消耗方面不是很轻量级。 WCF使用起来非常简单。但它的可扩展架构使得有时候找到合适的类很难。

普通套接字操作在编码工作方面不是轻量级的,但在运行时操作方面是轻量级的。当通道被打开或关闭时,你可以完全控制每一位,以及类似的东西。