当前位置:  开发笔记 > 编程语言 > 正文

C#(.NET 2.0)中Windows的进程间通信

如何解决《C#(.NET2.0)中Windows的进程间通信》经验,为你挑选了2个好方法。

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

最好的地方被定义为更健壮,更不容易出错,不是最高性能也不是最容易编码.

代码示例将非常受欢迎,但不是必需的:-)

注意我只是询问使用什么,标准TCP套接字,命名管道或其他一些通信方式.

谢谢!



1> Edward Wilde..:

使用以下方法可以实现.Net中的IPC:

WCF

使用命名管道需要.Net 3.0及更高版本.

代码示例

WCF类NetNamedPipeBinding可用于同一台机器上的进程间通信.此类的MSDN文档包含一个涵盖此方案的代码示例http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx


远程处理

最初的IPC框架随.Net 1.0发布.我相信远程处理不再被积极开发,我们鼓励您使用WCF

代码示例

通过远程处理进行进程间通信 - 使用tcp通道

资源

GenuineChannels,出售包含共享内存频道的远程工具包.http://www.genuinechannels.com/Index.aspx

Ingo Rammer撰写了权威的.Net远程教材,Advanced .NET Remoting,第二版


使用csharptest-net RpcLibrary的Win32 RPC

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

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

MSDN参考:

rpc如何工作:http://technet.microsoft.com/en-us/library/cc738291( v = ws.10).aspx

RPC函数:http://msdn.microsoft.com/en-us/library/aa378623(v = VS.85).aspx

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


WM_COPYDATA

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

资源

MSDN - WM_COPYDATA

代码示例

PInvoke.net声明

套接字

使用自定义协议(更难)



2> Guy Starbuck..:

仅限本地,我们使用命名管道取得了成功.避免TCP的开销,并且几乎(至少对于.NET)尽可能高效,同时还有一个合适的API可以使用.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有