在微服务之间传递对象

时间:2015-11-25 21:28:36

标签: php oop soa microservices

我正在尝试将整体的一些部分移动到外部服务。到目前为止,我喜欢这个想法,并且在一个应用程序中封装所有相关功能似乎更加清晰。不同的应用程序使用RabbitMQ进行通信。

我在一个服务中有一个用户对象。如果我想在服务中使用这个完全相同的类,我可以轻松地序列化它并在消息体中发送序列化对象。但由于发送者和接收者都需要包含用户类,我必须共享一个包含用户对象的一些表示的库(虽然对我来说,将真实的用户对象放在库中似乎很奇怪,因为它的核心到主要的应用程序)。我想我也可以传递一个带有user键和定义键值的数组。

我还在想,如果有一天我在PHP以外的其他地方创建服务,那么它就无法反序列化用户对象,因此无法访问消息中的数据。 / p>

所以基本上我喜欢在服务之间传递实体并且能够在接收端将它们用作对象的想法,但是我不确定这是否是正确的方法。

我的问题是在这些服务之间传递对象的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

首先,你不应该通过jar在你的微服务之间共享那些域对象。实际上你不应该以任何方式分享你的域名对象。它可以使可维护性和部署过程成为您的噩梦。相反,您可以在微服务中使用各种数据传输对象(DTO)。

最好的便携和健康的通信方式可能是使用一些可互操作的序列化机制,比如使用json或xml。

最后,如果你真的不需要,微服务很难长期管理。所以使用它只是因为它听起来更干净根本不是一个好主意。当然,如果你有一个复杂的大规模项目,那么你可以去实现它。