我与我的同事就某些逻辑是否属于数据访问层或业务逻辑层进行了辩论。
场景是,BLL 需要一些数据来处理。该数据主要存在于数据库中。我们希望缓存该数据(使用 System.Runtime.Caching),以便在后续请求中快速可用。该体系结构使得 DAL 和 BLL 存在于同一个盒子和不同的程序集中(同一解决方案中的项目)。所以不用担心通过电线或类似的东西击中 DAL。
我的论点是,命中缓存与数据库的决定是 DAL 关心的问题。业务逻辑层不应该关心数据来自哪里,只关心它获取所需的数据。
他的论点是,数据访问层应该是“纯粹的”和“愚蠢的”,任何决定命中缓存还是数据库的逻辑都应该在业务逻辑层中。
在我看来,当目标是保持松散耦合时,他的意思是破坏关注点分离并导致层更紧密地耦合。如果 BLL 是一个特定的程序/ui 函数来决定去哪里获取数据,我可以看到 BLL 可能想要控制的位置,但这里根本不是这种情况。这只是一个非常简单的缓存场景,其中数据库是主数据存储。
想法?