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



我正在尝试使用python实现一个服务器,该服务器与潜在的C#和ObjC客户端扭曲在一起。我从LineReceiver开始,它适用于基本的消息传递,但我无法找到更健壮的方法。对于以下要求的简单解决方案,有什么想法吗?

  • 请求和响应
    • 例如。发送消息以获取状态,接收返回的状态
  • 接收二进制数据传输(非琐碎,但不是大量-小于几兆)
    • 例如。小png文件的字节数

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

我还研究了完整的SOAP,但还没有找到一个足够好的例子来让我开始。

我很喜欢AMP。twisted.protocols.amp具有适度的特性,并且相对容易测试(尽管关于如何测试用它编写的应用程序的文档有点缺乏)。

AMP提供的命令/响应抽象既舒适又熟悉(毕竟,我们生活在一个HTTP获胜的世界里)。AMP避免了SOAP直接陷入的过度复杂性陷阱(似乎是为了复杂性)。但它并不是那么简单,你无法用它来完成任务(就像LineReceiver一样)。

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

AMP确实有一些内置的长度限制。这是一个长期存在的痛点,只是在等待有现实需求的人来解决它。如果AMP似乎对您有其他吸引力,那么我鼓励您与Twisted开发社区合作,了解如何帮助实现这一点。)

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

相关内容

最新更新