When should I use Pipes or gRPC for interprocess communication (in C# .NET Core)?(什么时候应该使用管道或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中工作。这是正确的推断吗?
推荐答案
简单ipc
取决于要进行多少通信。如果您的通信仅限于两个进程之间简单的协作信号传递或共享某些数据,则可以在本地系统或本地网络上安全地使用NamedPipeClientStream和NamedPipeServerStream,但如果您计划在不同系统上进行相同的通信,则我建议您使用TcpClient和TcpListener。
综合IPC
WCF或现在的替代GRPC用于需要远程执行完整的API/框架的场景。例如,我有一个完整的类库,我需要从不同的进程(主要运行在不同的系统上)调用它们;在这种情况下,GRPC类型的解决方案更有意义。只有您才能决定。
这是一个对您的应用程序来说非常独特的设计决策;您的未来计划和系统环境以及任何第三人只能为您提供线索,但最终您是唯一能够做出正确决策的人。
这篇关于什么时候应该使用管道或GRPC进行进程间通信(在C#.NET Core中)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:什么时候应该使用管道或GRPC进行进程间通信(在C#.NET Core中)?
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- 输入按键事件处理程序 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04