扭曲的python请求/响应消息和大量的二进制数据传输

时间:2014-02-27 03:33:22

标签: python soap twisted data-transfer asynchronous-messaging-protocol

我正在尝试使用python-twisted与潜在的C#和ObjC客户端实现服务器。我从LineReceiver开始,这对基本消息传递很有效,但我无法找到更强大的最佳方法。有关以下要求的简单解决方案的任何想法吗?

  • 请求和回复
    • 离。发送消息以获取状态,接收状态
  • 接收二进制数据传输(非平凡但不大规模 - 少于几兆)
    • 离。一个小的png文件的字节

AMP似乎是第一种情况的可行解决方案,但可能无法处理数据传输方案的大小。

我还看过完整的SOAP,但还没有找到一个足够好的例子让我开始。

1 个答案:

答案 0 :(得分:1)

我非常喜欢AMP。 twisted.protocols.amp具有中等功能且相对容易测试(尽管有关如何测试使用它编写的应用程序的文档有点缺乏)。

命令/响应抽象AMP提供了舒适和熟悉(毕竟,我们生活在一个HTTP赢得的世界)。 AMP避免了SOAP过度复杂的陷阱(似乎为了复杂性)。但这并不是那么简单,你将无法完成它的工作(如LineReceiver最有可能)。

有中间步骤 - 例如,twisted.protocols.basic.Int32Receiver为您提供更复杂的成帧机制(32位长度前缀而不是魔术字节终止行) - 但在我看来AMP是一个非常好的首选对于协议。您可能会发现以后想要切换到其他东西(一种尺寸确实不适合所有)但AMP在功能和简单性之间处于最佳位置,似乎非常适合广泛的应用。

确实AMP中有一些内置的长度限制。这是一个长期的痛处,只是在等待有真正需要解决它的人。 :)有一个相当深思熟虑的设计来解除这个限制(不破坏协议兼容性!)。如果AMP看起来对您有吸引力,那么我鼓励您与Twisted开发社区合作,了解如何帮助实现这一目标。 ;)

还可以选择使用AMP进行消息传递,并设置另一个通道(例如,HTTP)来传输更大的数据块。