我遇到了称为Webhook和发布者/订阅者的概念。在webhook中,每当在依赖应用程序中发生更新时,第三方应用程序都会发送信息,第三方将向您的应用程序的提及URL发送HTTP发布请求,并且在发布者和订阅者中,订阅者将注册主题,发布者对该主题进行撰写然后注册商(如第三方)将根据订阅的主题将信息发送给订阅者。

两者是相似还是不同?

我很困惑,有人可以解决这个问题吗?

最佳答案

嗯,从概念上讲,这两种方法都用于在事件发生时通知客户端。
但是实际上我会在两种不同的情况下使用它们。
网络挂钩(来自Wikipedia):


  Web开发中的Webhook是一种使用自定义回调来增强或更改网页或Web应用程序行为的方法。这些回调可以由不一定与原始网站或应用程序有关联的第三方用户和开发人员维护,修改和管理。术语“ webhook”是Jeff Lindsay在2007年从计算机编程术语hook中创造出来的。


当您想在第三方与后端服务器之间传递异步更改或更新时,webhook方法非常有用。
这意味着第三方需要为每个客户端注册Webhook地址,并触发带有请求信息的http请求。
使用webhook的一些注意事项是,如果webhook地址没有响应或任何给定的临时故障,则要进行故障处理,重试责任和处理由发布者完成。
这是使用webhook方法的几个示例:
-SendGrid.com-一种电子邮件服务,可让您通过api发送电子邮件和广告系列电子邮件。您想在后端公开Webhook的一个示例是,您希望每次用户从列表中取消订阅时都收到通知。
-Braintree.com-计费网关,可让您向客户收取在网站上购买的产品的费用-例如,您暴露在后端的Webhook每次成功执行定期付款时都会收到通知

对于发布者/订阅者,这更像是一种消息传递模式(来自Wikipedia):


  在软件体系结构中,发布-订阅是一种消息传递模式,其中消息的发送者(称为发布者)不对消息进行编程,以将其直接发送到特定的接收者(称为订阅者),而是将已发布的消息分类为类,而无需知道哪些订阅者(如果有) , 可能有。同样,订户对一个或多个类别表示兴趣,并且仅接收感兴趣的消息,而不知道有哪些发布者(如果有)。
  
  优点
  松耦合
  发布者与订阅者之间的联系松散,甚至不需要知道其存在。以主题为焦点,允许发布者和订阅者不了解系统拓扑。彼此可以继续正常运行。在传统的紧密耦合的客户端-服务器范例中,客户端无法在服务器进程未运行时将消息发布到服务器,除非客户端正在运行,否则服务器也无法接收消息。许多发布/订阅系统不仅使发布者和订阅者的位置分离,而且在时间上也使它们分离。带有这种发布/订阅系统的中间件分析师使用的一种常见策略是关闭发布者,以使订阅者能够处理积压工作(一种带宽限制的形式)。
  可扩展性
  通过并行操作,消息缓存,基于树或基于网络的路由等,提供了比传统客户端-服务器更好的可伸缩性的机会。但是,在某些类型的紧密耦合的大容量企业环境中,随着系统的扩展,成为具有数以千计的服务器共享发布/订阅基础结构的数据中心,当前的供应商系统通常会失去这种优势;在这些情况下,高负载下发布/订阅产品的可伸缩性是一项研究挑战。
  另一方面,在企业环境之外,发布/订阅范例已证明其可扩展性远远超出单个数据中心的可扩展性,可通过Web联合协议(如RSS和Atom)提供Internet范围内的分布式消息传递。这些联合协议接受更高的延迟,并且缺乏传递保证,以换取即使是低端Web服务器也可以将消息联合到(潜在地)数百万个单独订户节点的能力。
  缺点
  发布/订阅系统最严重的问题是其主要优势的副作用:发布者与订阅者之间的脱钩。
  
  我建议以下帖子以获取有关pub / sub的更多信息:
  



pub-sub-messsaging using aws
Pub sub on Wikipedia

09-30 14:24
查看更多