【发布时间】:2014-02-15 01:04:49
【问题描述】:
我有一个 n 层应用程序,其中包括一个数据访问层 (DAL) 和一个业务逻辑层 (BLL)。我在 DAL 中使用 SQL 查询和存储过程来填充我的对象。
这是我的问题:
我的 SQL 查询中的 ORDER BY 子句是否违反了关注点分离?
一方面,排序逻辑似乎属于业务层,因为是我们的业务规则决定了我们为什么要以特定顺序显示数据。此外,我们可能希望以不止一种方式显示相同的数据。此外,我的数据访问代码不应该不知道它的显示方式等问题吗?
另一方面,数据库在排序数据方面通常比应用程序代码更有效,因此出于性能原因,使用 ORDER BY 子句优于在 BLL 中排序。此外,我不确定在 DAL 中指定默认排序顺序是否真的违反了关注点分离。记录必须以某种方式从数据库中出来。为什么不根据最常见的情况对它们进行排序呢?如果我们需要不同于默认的排序顺序,那么我们可以通过 BLL 中的某种方法进行排序。
【问题讨论】:
-
不知道我是否会反对存在排序,但就个人而言,我认为我的业务逻辑依赖于访问层中的排序会感到不舒服。
-
@ChadSchouggins 不确定我是否关注。你的意思是你不相信做 DAL 的人会包含排序逻辑?
标签: sql sorting data-access-layer n-tier-architecture bll