2011-08-24 59 views
2

由于我们正在将我们的应用程序恢复到SOA设计的开始阶段,我有一些问题我无法获得清晰的答案/图片。在SOA设计中使用数据访问层(DAL)

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

我磕磕绊绊的是整个DAL概念的外观。所以这更多的是对理解或澄清的验证,以便为我们的平台提供最佳方法。

因此背景。我们目前有几个基于Web的电子商务应用程序,它们几乎都是独立存储的,而且几乎是彼此的副本。我们支持应用程序,例如守护程序和其他杂项Web服务。这些应用中的许多应用大于5年,仅基于技术(模型1)。我们所有的应用都以拍卖销售为中心。因此,在销售活动期间,我们将接受用户的出价,确定谁获胜并将该信息显示回来。每个销售活动都有一定量的时间可供用户使用。

该公司正在朝着SOA解决方案迈进,因为我们最终做的很多事情不仅可以在我们的团队之间共享,还可以在其他团队之间共享。

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

所以服务(任务,实体,实用程序和表示层如果需要)将调用DAL来检索数据。 DAL有责任从消息的内容中知道为了完成请求而需要做什么。

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

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

那么,我在这里的正确轨道?其他人是否做过类似的事情?我还需要考虑哪些其他事项(目前我们可以统计一个小时内的平均出价数量)。

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

回答

2

就你而言,完全基于SOA的部署使用的方法是使用ESB,身份提供程序和数据服务解决方案。

进行分解时,DAL应使用数据服务来实现,这样,这项服务将在语言无关的方式在全球范围通俗易懂的服务,并支持重复使用和松耦合。因此,所有的数据访问逻辑都可以作为数据服务中的Web服务操作来实现。

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

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

以上场景可以分别使用WSO2 Data Services Server,WSO2 Identity Server和WSO2 ESB实现,这些是开源产品,可以自由使用并发现here

+0

这是一个很好的方向 - 买入(免费)与构建 - 回顾产品和看来,它会让我的生活变得更轻松。现在只需要卖理想。 – boyd4715

0

我曾经(开发)一个使用“数据服务”的soa项目。这是前一段时间,我只是略有介入,但我的回忆是,它最终变得太复杂和缓慢。

特别

我们有一个数据没有真正的需要服务 - 它会更有意义已经放置在相同的抽象库中的层,它会给予更高的效率和功能没有真正的损失(我们特殊需求)。由于数据倾向于以许多小“块”被请求,这一事实进一步加剧了这一现象。

我想这可以归结为执行过程中的折衷。在我们的例子中,通过一个相对封闭的系统和单一的底层数据库技术,我们可以很容易地利用数据库提供的对分布式访问的支持;相反,我们最终在一个更慢,更通用的消息总线中复制了这个消息,除了复杂性之外,没有增加任何消息但我可以轻易想象出不同的情况下,访问数据更“遥远”。

0

您如何在设计中使用SOA取决于其要求。

通常,您可以编写粗粮服务并将它们公开为Web服务。在你的情况下,你可以编写一些调用数据库并产生结果的服务。在这种情况下,授权逻辑也可以用服务逻辑写入。

另一种方法是使用ESB或BPEL引擎编写集成逻辑并将集成服务作为Web服务公开。在这种情况下,您可以使用某些数据服务以xml格式公开数据库数据并将其集成。您可以为不同的Sachems使用服务,并使用请求数据调用正确的服务。授权逻辑也可以添加到服务集成逻辑中。

安全方面,如认证,机密性,完整性被视为非功能性需求,因此可以从事任何服务,而无需编写明确的安全服务。

以下文章介绍了第二种方法中提到的可能的服务集成示例。

http://wso2.org/library/articles/2011/05/integrate-business-rules-bpel

http://wso2.org/library/articles/2011/06/securing-web-service-integration