【问题标题】:Asynchronous Messaging Protocol compatibility outside Python (and twisted)Python 之外的异步消息协议兼容性(和扭曲的)
【发布时间】:2017-02-07 13:21:00
【问题描述】:

异步消息协议是python-twisted中的一个简单协议。我有一个相当完整的应用程序(python、twisted、kivy)使用它。客户端-服务器架构实现了一种视图-控制器类型的关系,几乎所有业务逻辑都位于服务器端,UI 界面代码仅反映模型状态的变化(由服务器发送)并发送适当的 AMP 消息。

Here is a list of implementations of the AMP protocol in other languages,但有些看起来未完成,而且大多数似乎并没有真正用于任何严肃的事情。

我正在研究的用例是一个完全 Python 的应用程序,目前可以在 Windows、Linux 和 Android 上运行(如果我有时间构建它,可能是 iOS)。将来可能会用“原生”语言(例如 Android 上的 Java/Swift)替换 View/UI 位,同时将业务位保持在 python 和扭曲中。

所以我有两个主要问题:-

  1. 说 AMP 仅在 python-twisted 和使用它的程序中真正使用是否准确?

  2. 是否还有其他更普遍有用的网络协议,它们既可以在扭曲中实现,也很容易在扭曲中使用并且是非特定的(例如,jabber 真的只用于聊天)?最好不需要像 WAMP/autobahn 这样的服务器(如果我理解正确的话),这样它就可以在任何可以运行 python 的设备中自包含。

【问题讨论】:

    标签: twisted asynchronous-messaging-protocol


    【解决方案1】:
    1. 这并不完全准确。 Twisted 恰好用得最多。其他语言也使用 AMP,只是考虑到其他更强大的选项如 AMQP(ZeroMQ、RabbitMQ、WebsphereMQ 等)的流行,AMP 并没有变得非常流行。

    2. AMP 非常简单。此外,您不太可能找到没有服务器的解决方案。

    AMP 未锁定到 Twisted 或 Python。还有其他语言的其他实现,但就像你说的那样,有些没有以“严肃”的方式使用,而且经常无人维护。不要让这吓到你,因为协议非常简单,实施后通常没有太多工作要做。如果您遵循设计,您会很高兴知道实际协议没有太大变化,并且用任何语言实现都不是很困难。如果您想要更通用、跨平台并确保兼容性的东西,请考虑 HTTP 请求。

    【讨论】:

    • 谢谢。如果消息队列解决方案目前更流行,那么新应用程序是否仍然存在使用 AMP 而不是更常用的用例?我确实考虑过 HTTP 请求,但它的开销似乎相当大(因为我也在移动设备上运行,这是一个相当重要的因素,我的 AMP 消息已经多次达到 64k 限制,因此我我已经实现了我自己的拆分和发送)。
    • 我认为 AMP 具有适用于较新应用的有效用例。它体积小、定义明确且便于携带。其他解决方案,包括 AMQP,开销更大。
    • 看起来我必须对开销进行一些测试。谢谢,让这个坐一会儿,但我认为这个答案之后可以接受。
    猜你喜欢
    • 2013-03-10
    • 2022-10-07
    • 2011-05-17
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多