什么时候应该使用管道或GRPC进行进程间通信(在C#.NET Core中)? [英] When should I use Pipes or gRPC for interprocess communication (in C# .NET Core)?

查看:34
本文介绍了什么时候应该使用管道或GRPC进行进程间通信(在C#.NET Core中)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Pipes和ASP.NET Core GRPC支持local和远程IPC/RPC(对GRPC有一些平台限制)

我什么时候应该使用一种技术(管道)或另一种技术(GRPC)?

我牢记的观察、思考和考虑:

  • GRPC似乎计划在未来的某个迭代中取代WCF。

  • 本地部署和计算机限制(以非管理员/用户身份运行、计算机防火墙、不同平台/操作系统)

  • 网络遍历,兼容同机多机(前端/后端阵列)加载和扩展

  • 跨安全区域(使用代理或其他TLS密码/顺序/注册表设置)会影响HTTP/2的工作能力

  • 管道(命名管道?)具有不同的外围应用和端口(他们是否也使用端口135,或基于TCP的NetBIOS(不确定名称))。如何扫描和保护它?

  • &q;内存映射文件似乎很难开始工作,但它似乎可以在具有UDS配置的GRPC的ASP.NET Core中工作。这是正确的推断吗?

目前,我的方案是让两个控制台应用程序相互通信,同一台机器或远程。对于我的方案,添加ASP.NET Core Web是一个可选的前端替代方案。

推荐答案

简单ipc

取决于要进行多少通信。如果您的通信仅限于两个进程之间简单的协作信号传递或共享某些数据,则可以在本地系统或本地网络上安全地使用NamedPipeClientStreamNamedPipeServerStream,但如果您计划在不同系统上进行相同的通信,则我建议您使用TcpClientTcpListener

综合IPC

WCF或现在的替代GRPC用于需要远程执行完整的API/框架的场景。例如,我有一个完整的类库,我需要从不同的进程(主要运行在不同的系统上)调用它们;在这种情况下,GRPC类型的解决方案更有意义。

只有您才能决定。

这是一个对您的应用程序来说非常独特的设计决策;您的未来计划和系统环境以及任何第三人只能为您提供线索,但最终您是唯一能够做出正确决策的人。

这篇关于什么时候应该使用管道或GRPC进行进程间通信(在C#.NET Core中)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆