对于一个新项目,我需要在Python中设计一个多组件后端。最初,它将有两个基本组件 - 业务规则服务器和前端,它将为来自浏览器的请求提供服务。
|--------------------|
Business API
|--------------------|
||
||
||
|--------------------|
Front server
|--------------------|
随着此系统获得更多功能,我可能需要添加更多连接到Business API的服务器/组件。
现在,我(经过大量研究后)决定使用MessagePack进行序列化/反序列化。
我无法决定的是应该进行通信的传输(有线协议)。有一些选择:
我认为http是一个不错的选择 - 但是我应该如何通过http发送有效载荷?通过做base64编码?在这种情况下,我必须这样做:
on one end
[actual message] -> [msgpack encode] -> [base64 encode]
on the other end
[base64 decode] -> [msgpack decode] -> [actual message]
在不同组件之间存在大量喋喋不休的系统中,这是否可以接受?还有更好的解决方案吗?有没有更好的方法来通过http?
注意:我不能使用普通的JSON,因为我需要传输二进制数据 - 所以序列化库将是msgpack。
答案 0 :(得分:1)
这实际上取决于系统的细节。
如果您的组件在Python(或Node.js)中 all 并且所有通信都在您的网络中进行,那么您可以使用ZeroRPC。
如果您需要跨防火墙或者如果您使用更多的外来语言,您可以使用HTTP,因为Hazzit在评论HTTP中说,在HTTP文档的正文中传输二进制数据是完全可以的,或者您可以使用多部分邮政编码。