【发布时间】:2021-03-19 00:28:32
【问题描述】:
Pipes 和 ASP.NET Core gRPC 都支持 local 和远程 IPC/RPC(gRPC 有一些平台限制)
我什么时候会使用一种技术(管道)或另一种技术(gRPC)?
我要记住的观察、想法和注意事项:
-
gRPC 似乎打算在未来的某个迭代中替换 WCF。
-
本地部署和机器限制(以非管理员/用户身份运行、机器防火墙、不同平台/操作系统)
-
网络穿越,同机兼容->多机(前端/后端阵列)进行加载和扩展
-
跨越安全区域(使用代理或其他 TLS 密码/顺序/注册表设置)会影响 HTTP/2 的工作能力
-
管道(命名管道?)具有不同的表面积和端口(它们是否也使用端口 135,或 TCP 上的 NetBIOS(不确定名称))...如何对其进行扫描和保护?
-
“内存映射文件”似乎是一个挑战,但它似乎可以在 UDS 配置中使用 gRPC 的 ASP.NET Core 中工作。这是一个正确的推断吗?
现在我的方案是让两个控制台应用程序相互通信,同一台机器或远程。添加 Asp.NET Core Web 是我的方案的可选前端替代方案。
【问题讨论】:
-
远程命名管道:说不。如果您能提供帮助,您不会想与 NetBIOS 上床。本地命名管道很好,但如果您无论如何都将允许/要求远程场景,那么与本地 TCP 连接相比几乎没有优势。如果所有通信都将严格地在本地进行,那么在速度方面很难击败它们(共享内存可以但更难编程,至少在 Windows 上是这样)。
-
@JeroenMostert 是this 使用共享内存,还是文件上的共享锁?
-
我也不清楚上面链接的“管道”是否等同于 NetBIOS。这是否也意味着它可能传播到 WINS 命名系统,或者可以传播?只是想看到完整的画面。
-
gRPC 是具有特定负载的 HTTP,因此您的问题变为
Should I use pipes or HTTP? -
gRPC 有哪些平台限制?
标签: c# ipc grpc named-pipes asp.net-core-5.0