windows - 为 GRPC 使用替代连接通道/传输
问题描述
我目前有一个原始的 RPC 设置,依赖于通过安全套接字传输的 JSON,但我想切换到 gRPC。不幸的是,我还需要访问 Windows 上的 AF_UNIX(微软最近开始支持,但 gRPC 尚未实现)。
由于我有一个现有的工作连接(由不同的库管理),我的偏好是将它与 GRPC 结合使用来发送/接收命令来代替我的 JSON 解析,但我正在努力寻找最好的方法那。
我已经看到将自定义传输插入 gRPC但这个问题在以下方面有所不同(以及我希望获得更新的答案)
- 我想避免对 gRPC 的核心进行更改。如果可能的话,我希望从我的库中扩展它,但这里的答案意味着向 gRPC 添加一个新的传输。如果我确实需要在传输级别执行此操作,是否有一种机制可以在核心之后向 gRPC 注册它已经建成?
- 我不确定是否需要将其定义为完整的自定义传输,因为我已经建立并准备好了现有连接。我看到了一些暗示我可以简单地扩展 Channel 的东西,但我可能错了。
- 我需要能够支持 Windows,或者至少支持它的现代版本(这意味着 gRPC 提供的 from_fd 选项不可用,因为它们目前仅针对 POSIX 实现)
有没有人用 gRPC 解决过类似的问题?
解决方案
我可能已经想出了自己的答案。当 Protobuf 的服务定义组件不依赖于它时,我似乎过度关注 gRPC。
我如何使用 ZeroMQ 为协议缓冲区编写自己的 RPC 实现与我的用例非常相似,https://developers.google.com/protocol-buffers/docs/proto#services似乎解决了我的问题(这也是解释了为什么我似乎一直在混淆所涉及的不同类型的“渠道”
我欢迎任何改进/建议,并希望有同样困惑的人在未来的搜索中可以找到这一点。
推荐阅读
- maven - 通过当前用户在 Docker 容器中运行 Maven
- vba - VB 宏只移动了我已读邮件的一半
- php - 如何选择名称中带有 - 连字符的表名
- delphi - Delphi Indy SSL 在中止时崩溃
- sql - SQL - 在小数点后第 6 位截止
- rhel - RHEL 开发人员订阅未找到存储库
- android - 循环播放的视频不会重复音频 FFMpeg
- gradle - 如何 uberjar 特定的依赖项?
- ios - 使用带有可选图像 URL 的 UITableViewCell 的 SDWebImage
- r - R:如何将数字变量重新编码为每个类别具有相同 N 的序数变量?