我有一个令我困惑的问题,服务总线类型、代理消息传递和中继消息传递之间有什么区别?我不是从开发的角度来寻找它,而是我想更多地了解这个概念以及它们之间的区别。
谢谢你。
我有一个令我困惑的问题,服务总线类型、代理消息传递和中继消息传递之间有什么区别?我不是从开发的角度来寻找它,而是我想更多地了解这个概念以及它们之间的区别。
谢谢你。
Service Bus Relay 和 Service Bus Brokered Messaging 都是用于开发分布式和混合应用程序的机制。但是,它们针对不同的开发和访问模式。
服务总线 (SB) 中继提供了一种简单且安全的远程服务方式,即,它使您能够安全地将托管在私有云上的服务公开给外部客户端。与服务远程处理方案一样,客户端显式调用“中继”服务公开的方法。SB Relay 的主要优势在于,无需对防火墙设置进行任何更改或对公司网络基础设施进行任何侵入性更改即可公开服务。
另一方面,SB Brokered Messaging 提供了一个持久的消息传递平台,其中包含队列、主题和订阅等组件。这些可用于实现复杂的模式,例如应用程序不同部分之间的发布-订阅和时间解耦。由于代理消息传递基础架构可以可靠地存储消息,因此发送者和接收者不必同时在线,或者不必以相同的速度处理消息。
因此,中继消息传递适用于您想要向外部客户端公开服务的场景。客户端与“中继”服务的交互方式与它们在本地网络上的交互方式相同,只是它们通过 SB 中继端点访问它。由于这是一个服务远程处理方案,因此响应会立即受到网络延迟的影响。但是,如果由于某种原因该服务此时不可用,则客户端的请求将始终失败。
在代理消息传递的情况下,由于发送和接收操作是分离的,因此发送方可以继续发送可靠存储在服务上的消息,而不管接收方是否在线。但是,这种弹性的折衷是请求将根据接收方检索和处理消息的能力进行处理。
我认为主要区别在于连接的同步与异步性质。
中继主要是一种防火墙友好的方式,可以将 Web 服务暴露给公共世界(甚至在防火墙、NAT 设备等之后),而消息传递更多地是一种通过队列和主题以异步方式交换消息的方式。(将其视为具有云支持的下一个版本 MSMQ :))
一切都取决于场景,但如果您正在寻找 - 路由(发布/订阅) - 松散耦合发送方和接收方 - 负载均衡 那么您绝对应该使用消息传递。
如果您想让外部世界轻松访问您的服务,中继服务是您的朋友。
从 Azure 的网站:
中继
服务总线中继服务使您能够构建在 Windows Azure 数据中心和您自己的本地企业环境中运行的混合应用程序。服务总线中继通过使您能够将驻留在公司企业网络中的 Windows Communication Foundation (WCF) 服务安全地公开给公共云来促进这一点,而无需打开防火墙连接或需要对公司网络基础结构进行侵入性更改。
Relay 还为您处理负载平衡(您可以让多个应用程序在同一个端点侦听大多数绑定)。
代理消息
第二个消息传递解决方案是最新版本的服务总线中的新功能,它支持“代理”消息传递功能。这些可以被认为是异步的或解耦的消息传递功能,支持使用服务总线消息传递基础结构的发布-订阅、时间解耦和负载平衡方案。解耦通信有很多优点;例如,客户端和服务器可以根据需要连接并以异步方式执行它们的操作。
代理消息传递包括允许您异步发送/接收消息的队列和主题/订阅。
主要区别在于,对于中继,您有应用程序在端点上侦听。当您发送消息时,应用程序会在收到该消息时对其进行处理。对于代理消息传递,消息在客户端收到时存储,并且可以随时处理。