gpt4 book ai didi

java - 在 SOA 设计中使用数据访问层 (DAL)

转载 作者:行者123 更新时间:2023-11-30 09:46:22 24 4
gpt4 key购买 nike

由于我们正处于将我们的应用程序恢复到 SOA 设计的开始阶段,我有一些问题无法得到明确的答案/图片。

我一直在阅读大量书籍,主要是 Thomas Erl 的书籍,并遵循理解什么是任务服务、实体服务和实用程序服务的设计模式。

我遇到的问题是整个 DAL 概念的外观。所以这更像是一种理解的验证或澄清,以帮助为我们的平台制定最佳方法。

所以背景。我们目前有几个基于 Web 的电子商务应用程序,它们几乎是在孤岛中构建的,并且又几乎是彼此的副本。我们有支持应用程序,例如守护进程和杂项网络服务。这些应用程序中的许多应用程序都超过 5 年,并且仅基于技术(模型 1)构建。我们所有的应用程序都以进行拍卖为中心。因此,在促销 Activity 期间,我们将接受用户的出价,确定谁中标并返回该信息。每个销售 Activity 都有一定的时间可供用户使用。

公司正在转向 SOA 解决方案,因为我们最终做的很多事情不仅可以在我们的团队之间共享,而且可以在其他团队之间共享。

所以我对 DAL 的理解是,它本身是一个位于数据之上的服务,在这种情况下是不同的数据库——MSSQL、ORACLE、MSSQL。这些数据库中的每一个都有不同的模式(Oracle)等。

因此服务(任务、实体、实用程序和表示层,如果需要)将调用 DAL 以检索数据。 DAL 有责任根据消息的内容来确定它需要做什么才能满足请求。

例如,我们有一名安全服务候选人。此服务需要使用 LDAP 进行身份验证,并根据为该给定应用程序存储的数据进行授权。

这里的想法是,将创建一个实用程序服务来包装与 LDAP 通信所需的所有操作,并且安全服务将调用实用程序服务和 DAL 以获取授权数据。然后 DAL 有责任转到正确的数据库/模式来检索信息。信息将采用 XML 格式(标准 SOA 通信)。

那么,我走在正确的轨道上了吗?其他人有没有做过类似的事情?我还需要考虑哪些其他事项(目前正在获取我们在一小时内平均出价的统计数据)。

每个服务是否应该有自己的 DAL - 例如,安全服务是否应该将 DAL 作为服务的一部分,或者 DAL 是否应该是所有服务都可以使用的共享服务?

最佳答案

在您的情况下,用于完全基于 SOA 的部署的方法是使用 ESB、身份提供者和数据服务解决方案。

分解一下,DAL 应该使用数据服务来实现,这样,该服务将以语言中立的方式成为全局可访问的服务,并将支持重用和松散耦合。因此,您所有的数据访问逻辑都可以作为数据服务中的 Web 服务操作来实现。

所以对于身份验证和授权管理,在SOA 世界中,有一个标准叫做XACML。 ,用于细粒度的授权管理。因此,您需要的是一个 XACML 服务器,它会根据特定标准授权用户,其中还应该能够使用 LDAP 进行身份验证。

然后您的“安全服务”将在 ESB 的服务中实现,该服务将查询身份提供者以进行身份​​验证/授权,并根据其响应调用数据服务中的适当操作,并使用适当的参数获取数据,并将其返回给用户。

以上场景可以分别使用WSO2 Data Services Server、WSO2 Identity Server和WSO2 ESB实现,均为开源产品,可以自由使用和查找here .

关于java - 在 SOA 设计中使用数据访问层 (DAL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7177199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com