小编典典

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

c#

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

最好的地方定义为更健壮,更不易出错,而不是性能最高或最容易编写的地方。

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

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

谢谢!


阅读 289

收藏
2020-05-19

共1个答案

小编典典

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

世界足球联合会

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

代码示例


远程处理

.Net 1.0发布的原始IPC框架。我相信远程处理将不再得到积极发展,建议您改用WCF。

代码示例

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

资源资源


使用csharptest-net RpcLibrary的Win32 RPC

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

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

MSDN参考:

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


WM_COPYDATA

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

资源资源

插座

使用自定义协议(较难)

2020-05-19