gpt4 book ai didi

asp.net-mvc - 域模型与服务层中的 ASP.NET MVC 业务逻辑

转载 作者:行者123 更新时间:2023-12-03 07:59:35 25 4
gpt4 key购买 nike

我一直在阅读有关将业务逻辑放置在 ASP.NET MVC 项目中的位置有一段时间了,但我仍然无法弄清楚某些事情。

1 - 领域模型 .这些究竟是什么?在我的模型文件夹中,我只有一堆与我的数据库相对应的类。我首先使用 EF 代码。我假设这些是我的领域模型。

2 - 服务层 . This answer建议一个服务层,我认为这是完全有道理的。我决定和这个一起去。然而,Martin Fowler's "Anemic Domain Models"文章搞砸了我的心。

我不太确定如何向域模型添加逻辑。

我经历了许多与业务逻辑相关的问题,每个问题都提出了 1 或 2。我不明白如何实现第一个。将方法添加到实体类(对我来说是域模型)根本没有意义。为什么第二种方法被认为是不好的?

最佳答案

首先,您的 Asp.Net MVC 项目中的 Model 文件夹应该用于 ViewModel。这些是您的 Controller 发送到您的 View 的模型。它们应该针对 View 进行高度优化,这意味着只有 View 所需的属性,而不是其他任何属性。

您正在研究的领域模型与业务模型相同,属于您的业务层。 Asp.Net MVC 项目中的 Model 文件夹是 UI 层的模型。

第二种方法,您的服务(真正的业务)层中的业务逻辑不被认为是糟糕的。这是您的数据层和 UI 层(三层架构)之间的一个非常好的缓冲区。您的数据层处理从 Web 服务或数据库获取数据,而您的业务/服务层处理将该数据转换为业务/领域模型。它还包含任何业务逻辑,例如计算等。

这些业务/领域模型通常是 POCO,但并非必须如此。这就是我有时建立我的商业模式的方式:

public class BusinessObject
{
private DataObject _dataObject;

public BusinessObject(DataObject dataObject)
{
_dataObject = dataObject;
}

public int BusinessId
{
get {return _dataObject.Id;}
set {_dataObject.Id = value;}
}

public string Name
{
get {return _dataObject.Description;}
set {_dataObject.Description = value;}
}
}

关于asp.net-mvc - 域模型与服务层中的 ASP.NET MVC 业务逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14657656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com