我应该将 gRPC protobuf 消息转换为 DTO 吗? - 最佳实践
Should i convert gRPC protobuf message to DTO? - Best Practice
最近,我开始使用 gRPC 消息与微服务进行交互。直到现在我一直在使用 REST API 和 DTO 确实在代码本身中继续解耦和封装。
现在我在使用 gRPC protobuf 消息时,我开始想 shell 什么是这里的最佳实践 - 在大声思考的同时我会说当在入口点获取消息时应用程序最好是将其转换为 DTO 以继续从 gRPC protobuff 消息和代码本身解耦,从另一个角度来看 - 我只是将对象转换为对象并想知道这些开销是否是强制性的/必需的
期待您对此的想法:)
好吧,这取决于您的要求以及您的服务需要解耦的程度(长期 运行)。据我所知,一些 services/people 甚至倾向于将原型直接写入数据库 (即在 proto-string / byte string 或 byte[]) 中以减少映射开销和其他原因我猜。
话虽如此,我个人认为 Domain Model 和 Data Transfer Objects (Protobuf Message) 应该分开尽可能。因此,最好为您的请求和响应提供额外的映射,这将有助于您将来更改 IDL 或原型定义。
If you fully rely on the resource/api layer implementation
which is gRPC in your case, even a little library update may break
things and it would be a hassle to go through all the places where the
proto model has been used
Further more it would helps you accommodate with changes easily
like if your system chooses to fully rely on another API schema
最后,我认为没有任何硬性规定可遵循,但这完全是 up-to 您和您的要求,但最好将其转换为您自己的模型而不是直接使用它,允许您更好地控制 api 层和您的业务层隔离,并且在长期 运行.
上真的很重要
最近,我开始使用 gRPC 消息与微服务进行交互。直到现在我一直在使用 REST API 和 DTO 确实在代码本身中继续解耦和封装。
现在我在使用 gRPC protobuf 消息时,我开始想 shell 什么是这里的最佳实践 - 在大声思考的同时我会说当在入口点获取消息时应用程序最好是将其转换为 DTO 以继续从 gRPC protobuff 消息和代码本身解耦,从另一个角度来看 - 我只是将对象转换为对象并想知道这些开销是否是强制性的/必需的
期待您对此的想法:)
好吧,这取决于您的要求以及您的服务需要解耦的程度(长期 运行)。据我所知,一些 services/people 甚至倾向于将原型直接写入数据库 (即在 proto-string / byte string 或 byte[]) 中以减少映射开销和其他原因我猜。
话虽如此,我个人认为 Domain Model 和 Data Transfer Objects (Protobuf Message) 应该分开尽可能。因此,最好为您的请求和响应提供额外的映射,这将有助于您将来更改 IDL 或原型定义。
If you fully rely on the resource/api layer implementation which is gRPC in your case, even a little library update may break things and it would be a hassle to go through all the places where the proto model has been used
Further more it would helps you accommodate with changes easily like if your system chooses to fully rely on another API schema
最后,我认为没有任何硬性规定可遵循,但这完全是 up-to 您和您的要求,但最好将其转换为您自己的模型而不是直接使用它,允许您更好地控制 api 层和您的业务层隔离,并且在长期 运行.
上真的很重要