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

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 域模型中的ASP.NET MVC业务逻辑与服务层前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在阅读关于在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;}
    }
}

猜你在找的asp.Net相关文章