【发布时间】:2011-11-02 21:08:43
【问题描述】:
由于我们正处于将应用程序恢复到 SOA 设计的初始阶段,所以我有一些问题无法得到明确的答案/图片。
我一直在阅读大量书籍,主要围绕 Thomas Erl 的书籍,并遵循理解什么是任务服务、实体服务和实用服务的设计模式。
我不明白的是整个 DAL 的外观概念。因此,这更多是对理解的验证或澄清,以帮助为我们的平台制定最佳方法。
所以背景。我们目前有几个基于 Web 的电子商务应用程序,它们几乎都是在孤岛中构建的,并且几乎是彼此的副本。我们有支持应用程序,例如守护程序和其他 Web 服务。其中许多应用程序的使用时间超过 5 年,并且仅基于技术(模型 1)。我们所有的应用程序都以进行拍卖销售为中心。因此,在销售活动期间,我们将接受用户的出价,确定谁赢了并显示该信息。每个销售活动都有一定的时间可供用户使用。
公司正在转向 SOA 解决方案,因为我们最终做的很多事情不仅可以在我们的团队之间共享,而且可以在其他团队之间共享。
所以我对 DAL 的理解是,它本身就是一项位于数据之上的服务,在这种情况下是不同的数据库 - MSSQL、ORACLE、MSSQL。这些数据库中的每一个都有不同的架构(Oracle)等。
因此服务(任务、实体、实用程序和表示层,如果需要)将调用 DAL 以检索数据。 DAL 有责任从消息的内容中知道它需要做什么才能满足请求。
例如,我们有一个安全服务候选人。此服务需要通过 LDAP 进行身份验证,并根据为给定应用程序存储的数据进行授权。
这里的想法是,将创建一个实用程序服务来包装与 LDAP 通信所需的所有操作,并且安全服务将调用实用程序服务和 DAL 以获取授权数据。 DAL 然后有责任去正确的数据库/模式来检索信息。信息将采用 XML 格式(标准 SOA 通信)。
那么,我在正确的轨道上吗?其他人有没有做过类似的事情?我还需要考虑哪些其他事情(目前正在获取关于我们在一小时内接受多少出价的统计数据 - 平均)。
每个服务是否应该有自己的 DAL - 例如,安全服务是否应该将 DAL 作为服务的一部分,或者 DAL 是否应该是所有服务都可以使用的共享服务?
【问题讨论】:
标签: java soa data-access-layer