我正在尝试使用python-twisted与潜在的C#和ObjC客户端实现服务器。我从LineReceiver开始,这对基本消息传递很有效,但我无法找到更强大的最佳方法。有关以下要求的简单解决方案的任何想法吗?
AMP似乎是第一种情况的可行解决方案,但可能无法处理数据传输方案的大小。
我还看过完整的SOAP,但还没有找到一个足够好的例子让我开始。
答案 0 :(得分:1)
我非常喜欢AMP。 twisted.protocols.amp
具有中等功能且相对容易测试(尽管有关如何测试使用它编写的应用程序的文档有点缺乏)。
命令/响应抽象AMP提供了舒适和熟悉(毕竟,我们生活在一个HTTP赢得的世界)。 AMP避免了SOAP过度复杂的陷阱(似乎为了复杂性)。但这并不是那么简单,你将无法完成它的工作(如LineReceiver
最有可能)。
有中间步骤 - 例如,twisted.protocols.basic.Int32Receiver
为您提供更复杂的成帧机制(32位长度前缀而不是魔术字节终止行) - 但在我看来AMP是一个非常好的首选对于协议。您可能会发现以后想要切换到其他东西(一种尺寸确实不适合所有)但AMP在功能和简单性之间处于最佳位置,似乎非常适合广泛的应用。
确实AMP中有一些内置的长度限制。这是一个长期的痛处,只是在等待有真正需要解决它的人。 :)有一个相当深思熟虑的设计来解除这个限制(不破坏协议兼容性!)。如果AMP看起来对您有吸引力,那么我鼓励您与Twisted开发社区合作,了解如何帮助实现这一目标。 ;)
还可以选择使用AMP进行消息传递,并设置另一个通道(例如,HTTP)来传输更大的数据块。