加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 19:10:41 所属栏目:asp.Net 来源:网络整理
导读:我一直在阅读关于在ASP.NET MVC项目中放置业务逻辑一段时间,我仍然不能弄清楚一些事情。 1 – 域模型。这些真的是什么?在我的模型文件夹中,我只有一堆类对应我的数据库。我先使用EF代码。我假设这些是我的域模型。 2 – 服务层。 This answer建议一个服务
我一直在阅读关于在ASP.NET MVC项目中放置业务逻辑一段时间,我仍然不能弄清楚一些事情。

1 – 域模型。这些真的是什么?在我的模型文件夹中,我只有一堆类对应我的数据库。我先使用EF代码。我假设这些是我的域模型。

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

我不知道如何添加逻辑到我的领域模型。

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

解决方法

首先,您的Asp.Net MVC项目中的Model文件夹应该用于ViewModels。这些是您的控制器发送到您的视图的模型。它们应该针对视图进行高度优化,这意味着只有视图所需的属性,而没有别的。

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

第二种方法,在你的服务(真正的业务)层的业务逻辑不被认为是坏的。它是你的数据层和你的UI层(3层架构)之间非常好的缓冲区。您的数据层处理从Web服务或数据库获取数据,并且您的业务/服务层将处理将该数据转换为业务/域模型。它还拥有任何业务逻辑,如计算等。

这些业务/领域模型通常是POCO,但不一定是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;}
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读