SOA发布消息与调用过程

时间:2015-03-20 18:35:32

标签: soa rpc

我正在开发的项目正在从n层转向SOA架构,因此我一直在阅读有关良好SOA实践的内容。我正在努力理解避免RPC样式服务以支持事件驱动服务之间的动态,以及用户界面检索数据并快​​速执行它的要求。

因此,例如,理想情况下,SOA架构将由可重复的业务流程组成,您可以简单地将消息发布到ESB上,该ESB将处理查找处理该消息的服务。因此,不是执行一个名为“设置新用户”的程序,该程序旨在执行与新用户设置相关的所有任务,而是将消息发布到ESB中,该消息仅包含新用户的详细信息并具有相应的文档类型“新用户” “然后ESB会找到处理该事件的服务,然后执行任何特定于域的新用户配置。

但是,有时您只需要数据。也许你有一个页面显示一些用户相关数据列表。您不能只是将消息发送到ESB,因为您需要数据并且现在需要它。此外,您并没有真正触发任何业务流程;您只是从以前调用的业务流程(导致用户与数据关联的流程)中检索数据。举一个具体的例子,也许我只是想看看用户最近看过的10部Netflix电影的列表。

如何在单个SOA系统中协调这些不同类型的服务?

1 个答案:

答案 0 :(得分:1)

在遵循事件驱动方法的ESB中,您拥有各种侦听器,可以检测事件并采取相应措施。例如,这些监听器可以通过某些端点处的某些协议等待直接消息的出现。无论触发器是什么 - 纯粹的业务事件启动业务流程或只需要检索某些数据的技术调用,它仍然是由ESB处理的事件。因此,您在技术上并没有打破事件驱动的方法 - 它由您的ESB解决方案强制执行。此外,请记住,SOA并没有施加这样的限制 - 您不必以事件驱动的方式实现所有内容。

在您的情况下(如果您没有专门的BPM解决方案),我会在ESB中的两个纯概念层上识别并实现两种服务:

  • 技术服务(事件是用于检索/修改数据的传入直接消息),可以由另一个系统直接调用(通过ESB)或由其他进程服务调用。

  • 以事件驱动的方式触发的顶层(业务)层上的流程服务(例如,使用主题队列,其中流程服务侦听其触发事件)

然而,这可能不是最佳方法。我在this topic中讨论了ESB中专用业务流程层与流程服务的业务流程。请随意查看,因为它与您的问题有关。