3层架构业务逻辑层无逻辑

Posted

技术标签:

【中文标题】3层架构业务逻辑层无逻辑【英文标题】:3-tier architecture business logic layer without logic 【发布时间】:2016-08-12 03:43:23 【问题描述】:

您好,我目前正在做一个学校项目,我们正在制作一个 Web 应用程序。我对 3 层架构有很好的理解,但在我的业务逻辑层 (BLL) 中我几乎没有逻辑。我正在使用从我的数据访问层 (DAL) 检索到的大部分原始数据来显示在我的表示层 (PL) 中。目前在我的控制器类中,我只是调用我的映射器外观类方法而没有做任何进一步的事情。所以我的问题是:

这是正确的做法吗,因为我知道 DAL 绝不能直接与 PL 对话,反之亦然,或者我应该简单地称控制器为其他更具描述性的名称?

此外,我为每个实体创建了一个控制器类,但是如果我有一些方法位于两个实体之间,这意味着它们可以访问两个实体类。

【问题讨论】:

【参考方案1】:

在实际应用程序中,数据库与表示层完全 1-1 映射是非常罕见的。通常对 SQL 数据库进行规范化,或者对 NoSQL 数据库进行非规范化。此外,业务层通常需要用户身份以确保安全,并且不会直接映射到数据库表示。

关于单个控制器知道两个实体的最后一点非常好。这就是为什么您不直接在表示层中使用这些实体的原因。您可以将这些实体混搭成 UI 更容易使用的东西,并在数据访问层将它们分开。

【讨论】:

【参考方案2】:

看起来你有一个Anemic Domain Model。

在“现实生活”中,如果您的领域如此简单,您可能希望跳过多层、量身定制的架构,而采用更简单的方式,例如 Transaction Script 或千篇一律的 RAD 方法,其中有大量代码可以自动生成。

【讨论】:

好的,感谢您的输入,听起来很合乎逻辑!我们必须使用 3 层架构来进行学习(:

以上是关于3层架构业务逻辑层无逻辑的主要内容,如果未能解决你的问题,请参考以下文章

在 3 层架构中实现业务逻辑

Java Web 开发时的 MVC 模型和软件的3层架构(表现层,业务逻辑层,数据访问层)都有哪些区别和联系?

三层架构之业务逻辑层

项目架构开发:业务逻辑层之领域驱动失血模型

java三层架构:数据访问层业务逻辑层表现层

[ASP.NET].NET逻辑分层架构总结