C#中用于Windows的进程间通信(.NET 2.0)如何实现?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

我以前从来没有必要在Windows上做IPC。目前我正在开发一对程序,一个标准的GUI / CLI应用程序和一个Windows服务。该应用程序必须告诉服务该做什么。那么,假设通信只是本地的,那么这两个过程的最佳通信方法是什么?

最好的地方被定义为更强大,更不容易出错,而不是最高性能也最容易编码。

注意我在询问使用什么,标准的TCP套接字,命名管道或其他通信方式。

提问于
用户回答回答于

.Net中的IPC可以通过以下方式实现:

WCF

使用命名管道需要.Net 3.0及以上版本。

代码示例

远程处理

最初的IPC框架与.Net 1.0一起发布。我认为远程处理已不再被积极开发,并鼓励您使用WCF

代码示例

通过Remoting进行的进程间通信 - 使用一个tcp通道

资源

Win32 RPC使用csharptest-net RpcLibrary

我最近遇到了一个封装了Win32 RPC库的项目,并创建了一个可用于本地和远程RPC的.net类库

项目主页http : //csharptest.net/projects/rpclibrary/

MSDN参考资料:

还有一个谷歌协议缓冲区rpc客户端运行在库的顶部:https : //code.google.com/p/protobuf-csharp-rpc/

WM_COPYDATA

为了完整性,还可以使用带有WM_COPYDATA消息的WIN32方法。我之前在.Net 1.1中使用过这种方法来创建一个实例应用程序,从Windows资源管理器中打开多个文件。

资源

套接字

使用自定义协议(更难)

用户回答回答于

对于本地而言,我们已经成功使用命名管道。避免了TCP的开销,并且几乎(至少在.NET中)尽可能高效,同时还有一个体面的API可以使用。

扫码关注云+社区