以下是我如何看待DAL和BLL之间的主要区别:
现在,我想知道这些层的函数应该返回什么数据类型。目前,我所有的DAL函数都返回DataTable。但是我的BLL函数返回一些类或我创建的类列表。
例如:
有时,BLL函数并不真正应用任何“业务逻辑”,而是只将DataTable从de DAL映射到BLL的类。
我想知道这是否可以。也许所有的测绘工作都应该由DAL来完成?如果是这样的话,把我的个人映射类放在哪里?在BLL或DAL命名空间中(在BLL之上的层中需要这些类)?
发布于 2014-01-03 16:18:07
我认为这是完全可以接受的--甚至是可取的。DAL只应该是数据访问-这就是为什么它是数据访问层。另一方面,BL不应该直接与数据库交互,而是应该将从DAL中检索到的数据放在更有利于消费者或开发人员的格式中,以便在代码中加以利用。
通过维护这种关注点分离,如果您曾经更改过数据库(数据库结构、数据库类型或物理服务器本身),则只需对DAL进行更改。一般来说,DAL只具有执行存储过程、查询等和返回单个值或数据表/数据集的基本方法。它将这些返回到BLL,然后BLL创建要使用的必要对象。如果您想要一种简单(如果过于简化)的方式来可视化它,Google搜索会弹出以下图像:

发布于 2014-01-03 15:18:58
没有必要将数据从一个层抽象到另一个层,除非发生一个或更多的转换来将数据转换为使用者所期望的格式。
在从“数据访问”返回之前将数据表映射到对象集合比拥有单独的类/函数更谨慎,除非您有期望不同返回类型的使用者。
发布于 2014-01-19 14:40:36
反馈
因此,我离开了我的体系结构,在我的第一条消息中如何描述它,我的DAL返回了DataTable对象。我因为这一选择而受到批评。理由是,如果不同的人在DAL和BLL上工作,那么处理BLL的人将需要更多的文档来使用DataTable对象。这个人不知道DataTable中列的名称,甚至不知道如何从DataTable中提取信息。
https://softwareengineering.stackexchange.com/questions/223034
复制相似问题