我记得读到过将低层调用抽象成数据无关框架(例如ExecuteCommand方法等),而另一个通常包含特定于业务的方法(例如UpdateCustomer)。
这正确吗?哪个是哪个?
我记得读到过将低层调用抽象成数据无关框架(例如ExecuteCommand方法等),而另一个通常包含特定于业务的方法(例如UpdateCustomer)。
这正确吗?哪个是哪个?
对我来说,这是一个个人设计决策,关乎你如何处理项目设计。有时数据访问和数据服务是相同的。对于 .NET 和 LINQ 来说就是这样。
对我来说,数据服务层实际上是调用数据库的一部分。数据访问层接收对象并创建或修改它们,以便数据服务层可以调用数据库。
在我的设计中,业务逻辑层根据业务规则操作对象,然后将它们传递给数据访问层,数据访问层将对它们进行格式化,以便将它们存入数据库或从数据库中获取对象,而数据服务层处理实际的数据库调用。
我认为总体而言这两个术语是可以互换的,但根据开发环境的上下文可能会有更具体的含义。
数据访问层位于数据和应用程序之间的边界。 "数据"仅是应用程序使用的各种数据源。这意味着每个应用程序都必须进行大量编码才能从多个源中汇集数据。创建所需数据视图的代码将在某些应用程序中重复。
随着数据源数量的增加和变得更加复杂,需要将数据访问的各种任务隔离以解决数据访问、转换和集成的细节问题。通过设计良好的数据服务,业务服务 将能够以更高级别的抽象与数据交互。处理数据访问、集成、语义解析、转换和重新构造以满足应用程序所需的数据视图和结构的数据逻辑最好封装在数据服务层中。
还可以进一步将数据服务层分解为其组成部分(即数据访问、转换和集成)。在这种情况下,您可能会有一个"数据访问层",它仅关注检索数据,以及一个"数据服务层",它通过数据访问层检索其数据,并将检索到的数据组合和转换为业务服务层所需的各种对象。
在WebSphere Commerce文档中,Data Service Layer的概念很简单:
数据服务层(DSL)为数据访问提供了一个抽象层,独立于物理模式。数据服务层的目的是为访问数据提供一致的接口(称为数据服务门面),独立于对象关系映射框架。
目前在互联网上,DSL概念主要与SOA(面向服务的体系结构)相关联,但不仅限于此。这里提到了N层应用程序的示例。