我目前正在使用Twisted的Perspective Broker上的Python上,我在过去考虑过要切换到RabbitMQ之类的东西,但我不确定它是否可以替换PB-我觉得我可能会在这里将苹果与橘子进行比较。最近,我一直在阅读很多有关休息的信息,以及与SOAP的不可避免的辩论,这使我阅读了有关SOA之类的“企业”网络服务内容。

我有一个项目即将到来,我需要通过Web和台式机实施一些类似ERP的功能,因此我正在考虑使用哪种方法/技术来在服务器和客户端之间进行通信。但是我也试图尽可能多地了解所有这些问题,因此我不想仅仅解决这个特殊的问题。

您用什么来用于服务器和客户之间的通信?

我了解一个特定于Python的协议,例如Perspective Broker可以限制我的互操作性,但是我可以假设某些AMQP协议可以替换它吗?

如果我没记错的话,twisted.pb和AMQP都使用始终开启的连接和非常低的开销协议。但是,一方面,请始终保持大量客户连接可能是一个问题,另一方面,即使使用HTTP keep-alive,以及他们使用序列化零件的任何技巧仍然是Web服务的问题。

如果我在任何假设中都错了,我将不胜感激,如果有人可以将我指向正确的方向以了解更多信息。

有帮助吗?

解决方案

与往常一样,“取决于”。首先,让我们清除术语。

扭曲的 透视经纪人 基本上,当您控制分布式操作的两端(客户端和服务器端)时,您可以使用一个系统。它提供了一种将对象从一端复制到另一端并在远程对象上调用方法的方法。复制涉及将对象序列化为适合网络传输的格式,然后使用Twisted自己的传输协议将其传输。当两端都可以使用扭曲,并且您不需要与非扭曲系统交互时,这很有用。

通常来说,一般来说, 网页服务 是依靠HTTP进行通信的客户端服务器应用程序。客户端使用HTTP向服务器提出请求,从而返回结果。参数可以在EG中编码。获取或发布请求或使用POST请求中的数据部分发送,例如发送XML格式的文档,该文档描述了要采取的措施。

休息 是建筑观念,即系统公开的所有资源和运营都应直接解决。简而言之,这意味着用来访问或操纵资源的URI包括资源名称以及在其上执行的操作。可以使用HTTP作为Web服务实现休息。

肥皂 是消息交换的协议。它由两个部分组成:选择几种传输方法,以及一种基于XML的消息格式。运输方法可以是例如HTTP,它使SOAP成为实施WED服务的候选人。消息格式指定有关请求的操作和操作结果的所有详细信息。

JMS 是基于Java的消息传递系统的API标准。它为消息定义了一些语义(例如一对一或一对多),并包括用于解决,创建消息,用参数和数据填充消息,发送并接收和解码的方法。 API确保您可以在理论上更改基础消息系统实现,而无需重写所有代码。但是,消息系统实现不需要与另一个启用JMS的消息传递系统兼容协议。因此,拥有一个JMS系统并不意味着您可以与另一个JMS系统交换消息。您可能需要建立某种桥梁服务才能工作,这将是一个重大挑战,尤其是在解决方面。

AMQP 通过定义消息系统必须遵守的电线协议来改善情况。这意味着来自不同供应商的消息系统可以交换消息。

最后, SOA 是一个架构概念,将应用程序分解为可重复使用的服务。然后将这些服务合并(“精心策划”)以实现应用程序。每次制定新应用程序时,都有机会重复使用现有服务。 SOA也是需要非技术支持活动的东西,因此真正发生了重复使用,并且服务被设计为足够的一般性。另外,SOA是一种开始将旧系统中的功能打包成有意义的整体的一种方法,然后可以使用更多的现代技术进一步扩展和开发。 SOA可以使用各种技术,例如Web服务,消息传递系统或企业服务总线来实施。

您考虑了每个请求的一个连接之间的权衡,并保持多个请求的连接。这取决于可用资源,消息模式和数据的大小。如果传入的消息流持续相同,那么让连接保持打开状态可能会很好,因为它们的数量不会太大变化。另一方面,如果有多个系统的消息爆发,那么发布资源可能会很有用,而不会让连接持续太久。同样,如果每个连接都传输了大量数据,则与总交易长度相比,打开和关闭连接的开销很小。另一方面,如果您传输了很多很小的消息,那么保持连接可以证明是有益的。用特定参数进行基准测试是确定的唯一方法。

AMQP确实可以替代特定的特定协议。这将允许与非扭转系统进行交互。

我希望这对您有用。如果您仍然想知道某件事(我认为您是,因为这是一个很大的区域),那么我建议将事情分成较小的问题并单独发布。然后答案可以更加精确。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top