2017-11-18 323 views
0

我正在考虑用gRPC替换.NET WFC双端点。像大多数框架一样,WCF允许数据只是简单的合同对象,所以你通过网络使用的是你可以在你的处理代码中使用的东西(如果你对这种耦合可以的话)。但使用gRPC和GPB,看起来我无法做到这一点,我有2个选项。一种是在通信的两端翻译我现有的.NET对象,这会增加额外的劳动力/复杂性。另一种方法是在业务代码中逐字使用协议缓冲消息,这将业务代码与传输技术相结合。如何将Google协议缓冲区翻译为普通对象

所以我的问题是什么是使用gRPC的最佳解决方案,并避免翻译或直接在业务代码中使用缓冲区?

回答

0

两者都可以是有效的选项:直接复制或使用。

在较大/较深的系统中,最好转换为一些“内部”对象,这些“内部”对象可以拥有更多的字段并在不中断客户端的情况下对系统进行变形。这些“内部”对象甚至可能是protobuf消息。在这种情况下,重复是一个功能。

在较小/较浅的系统中,很容易直接使用协议缓冲区而无需复制。你应该认识到有一天你可能会需要转换为一些其他版本的原型或做某种POJO或类似。但也有可能那一天永远不会到来。

所以这个问题并不是真的,“在业务代码中使用协议缓冲区是否可行”,因为这很容易出现问题。但真正的问题是,“允许系统内部部件与API分开开发是否值得?”