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

3-tier architecture business logic layer without logic

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

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

此外,我为每个实体制作了一个控制器 class,但是如果我在两个实体之间有一些方法,这意味着它们可以访问两个实体 classes.

在实际应用程序中,数据库与表示层完全 1-1 映射的情况非常少见。 SQL 数据库通常有规范化,NoSQL 数据库通常有非规范化。此外,业务层通常需要用户身份来确保安全,而这种身份不会直接映射到数据库表示。

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

看起来你有一个 Anemic Domain Model

在 "real life" 中,如果您的域是如此简单,您可能希望跳过多层、量身定制的架构,并采用更简单的方法,例如 Transaction Script 或千篇一律的 RAD 方法这里可以自动生成很多代码。