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

标签 c# .net ipc

我以前从未在 Windows 上执行过 IPC。我正在开发一对程序、一个标准的 GUI/CLI 应用程序和一个 Windows 服务。该应用程序必须告诉服务该做什么。那么,假设通信仅在本地进行,这两个进程的最佳通信方法是什么?
我所说的最好是指更健壮和更不容易出错,而不是最好的性能,也不是最容易编码的。

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

最佳答案

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

WCF

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

代码示例


远程处理

与 .Net 1.0 一起发布的原始 IPC 框架。我相信不再积极开发远程处理,并且鼓励您改用 WCF

代码示例

Inter-process communication via Remoting - 使用 tcp channel

资源


使用 csharptest-net RpcLibrary 的 Win32 RPC

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

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

MSDN 引用资料:

还有一个在库之上运行的 google protocol buffers rpc 客户端:https://code.google.com/p/protobuf-csharp-rpc/


WM_COPYDATA

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

资源

套接字

使用自定义协议(protocol)(更难)

关于c# - C# (.NET 2.0) 中 Windows 的进程间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50153/

相关文章:

c - 在 C 中使用管道在进程之间发送浮点值

linux - IPC - 如何将命令输出重定向到子进程中的共享内存段

javascript - 我可以 [反] 序列化箭头/js 实现中的数据帧字典吗?

c# - 如何在 Entity Framework Core 中实现环境事务?

c# - 身份验证 gmail api C# windows phone 8.1

c# - 如何在 C# 中将其更改为 String.Format

c# - Automapper 返回一个空集合,我想要一个 null

.net - MSTest 的 XML 单元测试框架

c# - 如何比较两个列表中的项目?

c# - 使用 NetworkStream 传输文件然后重建文件失败