用于向外部系统发送更新的设计模式

时间:2012-07-20 07:52:35

标签: web-services design-patterns integration

我目前正致力于重构一个应用程序。这是租赁公司的申请。该应用程序通过Web服务与外部系统进行通信。状态或某些事件的某些更改需要调用外部系统。我们有两种类型的呼叫:

  • 同步 - 例如,当我向租赁应用程序添加一个对象时,该对象的编号取自外部系统(我等待响应)。
  • 异步 - 当我更改应用程序上的数据时,更改也会发送到外部系统(消息存储在我们的自定义队列中,我不需要从外部系统获得响应)

应用程序的设计并没有为越来越多的外部系统做准备(在每个版本中我们至少添加了一个系统)。我们有一层(逻辑)处理所有业务逻辑,并与外部系统通信(包括构建请求,验证请求,发送消息,验证响应,处理响应)。

我想将通信部分与bussinness逻辑部分分开。在这种情况下,哪些设计模式是好的?我已经阅读了Design patterns @ sourcemaking.com,还有Catalog of Patterns of Enterprise Application Architecture @ Martin Fowler's,但要么我无法使用,要么我没有看到我可以使用它的方式(很可能是后者:-))。< / p>

2 个答案:

答案 0 :(得分:1)

六角形建筑一路走来! :) - http://alistair.cockburn.us/Hexagonal+architecture

这是将业务逻辑与应用程序接收和向外部世界发送事件的方式分离的好方法。

Hexagonal Architectural模式可能有点过高,所以我通常建议先阅读Dependency Inversion Principle,以了解模型应该如何公开以后由适配器实现的接口。

答案 1 :(得分:1)

我建议尝试使用中介模式......我从您的参考网址中获取此信息。 http://sourcemaking.com/design_patterns/mediator我认为这很容易解决意大利面条代码的问题,因为太多的通信逻辑与商业逻辑混合在一起。

请告诉我这是否有帮助:)