首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAL与BLL函数的返回类型

DAL与BLL函数的返回类型
EN

Software Engineering用户
提问于 2014-01-03 15:12:12
回答 3查看 4.2K关注 0票数 4

以下是我如何看待DAL和BLL之间的主要区别:

  • DAL直接查询数据库。
  • DAL不会创造新的信息。它可以执行复杂的sql请求,连接几个表,但是这种请求的结果永远不会给出数据库中没有的任何信息。
  • BLL对DAL的信息应用业务逻辑来创建新的信息。

现在,我想知道这些层的函数应该返回什么数据类型。目前,我所有的DAL函数都返回DataTable。但是我的BLL函数返回一些类或我创建的类列表。

例如:

  • dal.getAllPortfolios()返回一个DataTable (我正在使用Visual ),这是几个表上连接的结果。
  • bll.getAllPortfolios()调用dal.getAllPortfolios,但返回一个投资组合列表。我的公共投资组合类位于BLL的命名空间中。

有时,BLL函数并不真正应用任何“业务逻辑”,而是只将DataTable从de DAL映射到BLL的类。

我想知道这是否可以。也许所有的测绘工作都应该由DAL来完成?如果是这样的话,把我的个人映射类放在哪里?在BLL或DAL命名空间中(在BLL之上的层中需要这些类)?

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2014-01-03 16:18:07

我认为这是完全可以接受的--甚至是可取的。DAL只应该是数据访问-这就是为什么它是数据访问层。另一方面,BL不应该直接与数据库交互,而是应该将从DAL中检索到的数据放在更有利于消费者或开发人员的格式中,以便在代码中加以利用。

通过维护这种关注点分离,如果您曾经更改过数据库(数据库结构、数据库类型或物理服务器本身),则只需对DAL进行更改。一般来说,DAL只具有执行存储过程、查询等和返回单个值或数据表/数据集的基本方法。它将这些返回到BLL,然后BLL创建要使用的必要对象。如果您想要一种简单(如果过于简化)的方式来可视化它,Google搜索会弹出以下图像:

票数 4
EN

Software Engineering用户

发布于 2014-01-03 15:18:58

没有必要将数据从一个层抽象到另一个层,除非发生一个或更多的转换来将数据转换为使用者所期望的格式。

在从“数据访问”返回之前将数据表映射到对象集合比拥有单独的类/函数更谨慎,除非您有期望不同返回类型的使用者。

票数 1
EN

Software Engineering用户

发布于 2014-01-19 14:40:36

反馈

因此,我离开了我的体系结构,在我的第一条消息中如何描述它,我的DAL返回了DataTable对象。我因为这一选择而受到批评。理由是,如果不同的人在DAL和BLL上工作,那么处理BLL的人将需要更多的文档来使用DataTable对象。这个人不知道DataTable中列的名称,甚至不知道如何从DataTable中提取信息。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/223034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档