Architecture SOA中的循环依赖
我猜,这是一个常见的问题,但我将尝试描述我目前的问题 我有一个基本服务,让我们把它命名为“CoreService”,它提供了我想说的“主要”功能:在DB中处理数据(我们的应用程序中有一个集中的DB)。还有许多其他应用程序,其中一些应用程序有自己的用于本地目的的数据库。还有一个简单的“通知服务”。其目的是向不同的订户广播消息 通常,此NotificationService从“ExternalWorld”调用,并向不同的服务发送通知(其中包括“CoreService”) 今天,我看到了从“CoreService”调用“NotificationService”的必要性 我在这里担心的是,我引入了一个循环依赖关系:“NotificationService”需要知道如何向每个服务发送消息(包括“CoreService”,因此它需要知道“CoreService”接口,因此它需要引用“CoreService”),而“CoreService”需要向“NotificationService”发送消息(所以它也需要引用它)…循环依赖 问题:我们应该如何构建架构来处理此类问题Architecture SOA中的循环依赖,architecture,service,soa,Architecture,Service,Soa,我猜,这是一个常见的问题,但我将尝试描述我目前的问题 我有一个基本服务,让我们把它命名为“CoreService”,它提供了我想说的“主要”功能:在DB中处理数据(我们的应用程序中有一个集中的DB)。还有许多其他应用程序,其中一些应用程序有自己的用于本地目的的数据库。还有一个简单的“通知服务”。其目的是向不同的订户广播消息 通常,此NotificationService从“ExternalWorld”调用,并向不同的服务发送通知(其中包括“CoreService”) 今天,我看到了从“CoreS
非常感谢!当我写完问题后,我发现了一些想法: 在“NotificationService”中,我需要定义两个接口“IMessagesSender”和“IMessagesReceiver”
非常感谢!您必须从点对点切换到中介。中介现在将负责将源绑定到目标,并适当地路由/发布消息(ESB在我脑海中响起) 解释 您不直接从NotificationService引用CoreService,反之亦然。两者都将订阅他们感兴趣的主题。例如,CoreService将事件发布到NotificationService将订阅的主题(CoreService还将订阅NotificationService向其发布事件的主题)。然后由主题处理程序(消息传递系统或ESB等)负责将事件转发给给定主题的所有订户。这样,服务彼此松散耦合,甚至不需要知道它们的存在
目前,您正在使用NotificationService作为中介/ESB,因此如果您愿意,它将成为一个基础设施服务,因此会出现循环依赖关系等问题。它不再是一个业务服务。NotificationService在这里是一个中介,不是吗?同意。我的“NotificationService”显然计划成为一个中介吗?p很可能我遗漏了什么?NotificationService应该具备什么样的特性才能成为调解人?谢谢我的意图是使用NotificationService作为主题处理程序。如果我正确理解了你的建议,请看这里()好吗?