0

我正在尝试使用带有潜在 C# 和 ObjC 客户端的 python-twisted 来实现服务器。我从 LineReceiver 开始,它适用于基本消息传递,但我无法找出更强大的最佳方法。对于以下要求的简单解决方案有什么想法吗?

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

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

我也看过完整的 SOAP,但还没有找到一个足够好的例子来让我继续前进。

4

1 回答 1

1

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

AMP 提供的命令/响应抽象是舒适和熟悉的(毕竟,我们生活在一个 HTTP 获胜的世界)。AMP 避免了 SOAP 直接陷入的过度复杂性(似乎是为了复杂性)的陷阱。但这并不是那么简单,您将无法使用它来完成这项工作(LineReceiver很可能是这样)。

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

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

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

于 2014-02-27T21:50:15.380 回答