【问题标题】:How can I translate Google Protocol Buffers to plain objects如何将 Google 协议缓冲区转换为普通对象
【发布时间】:2017-11-18 13:40:17
【问题描述】:
我正在考虑用 gRPC 替换 .NET WFC 双工端点。与大多数框架一样,WCF 允许数据只是简单的合同对象,因此您通过网络使用的就是您可以在处理代码中使用的(如果您对这种耦合感到满意的话)。但是对于 gRPC 和 GPB,我似乎无法做到这一点,我有两个选择。一种是在通信的两端翻译我现有的 .NET 对象,这将增加额外的劳动/复杂性。另一种是在业务代码中逐字使用协议缓冲区消息,将业务代码耦合到传输技术。
所以我的问题是.. 使用 gRPC 并避免在业务代码中翻译或直接使用缓冲区的最佳解决方案是什么?
【问题讨论】:
标签:
c#
.net
wcf
protocol-buffers
grpc
【解决方案1】:
两者都可以是有效的选项:复制或直接使用。
在更大/更深的系统中,最好将其转换为一些“内部”对象,这些对象可以具有更多字段并在不破坏客户端的情况下变形到系统中。那些“内部”对象甚至可以是 protobuf 消息。在这种情况下,重复是一个特征。
在较小/较浅的系统中,无需复制即可直接使用协议缓冲区很容易。您应该意识到,有一天您可能需要转换为其他版本的 protos 或制作某种 POJO 或类似的东西。但也有可能那一天永远不会到来。
所以问题并不是“在业务代码中使用协议缓冲区是否可以”,因为这很容易产生一些问题。但真正的问题是,“允许系统内部与其 API 分开开发是否值得?”