MVD与DDD的概念

时间:2013-04-03 01:33:19

标签: c# domain-driven-design mvp

我最近开始使用C#进行Web开发,我对MVP模式与域驱动设计的概念感到困惑。

其中一位老人告诉我,应用程序分为5个不同的层。层次结构如下所示:View,Presenter,Service,Repository,Entity。

以下是我对这些不同层次的理解:

View:表示正在传递给客户的数据

Presenter: Codebehind。处理客户的请求并将信息发送到服务

Serivce:业务逻辑层。处理数据。

Repo:不完全确定它的作用。

Entity:域中的唯一对象,除非它们具有相同的标识(属性),否则没有两个对象相同

那么,我的描述是否正确?有人可以详细说明吗?此外,Repo层有什么作用?它是否处理db事务?

这可能不是纯粹的MVP模式,但似乎这是应用程序的状态,我是所有这些概念的新手。如果有人能用更简单的术语向我解释,那就太好了。感谢。

2 个答案:

答案 0 :(得分:2)

我的经历中有一些冲突。

  • 查看 - 呈现数据的实际页面。代码隐藏将实现View所需的接口。
  • 演示者 - 不,不是代码隐藏。代码隐藏将实例化一个Presenter。代码隐藏实现了View接口,并实例化了一个Presenter(并且通常会自行传递),如下所示:

    public class CodeBehindPage : System.Web.UI.Page, IViewInterface {
        private Presenter myPresenter;
    
        public CodeBehindPage() {
            myPresenter = new Presenter(this); // Presenter will require IViewInterface
        }
    }
    
  • 服务 - 正确。

  • 存储库 - 正确,它处理数据库事务(加载/保存/等)。
  • 实体 - 正确。实体是数据库对象。

答案 1 :(得分:1)

我不喜欢将MVP设计模式与N层架构相结合。您所描述的更有可能是关于N层架构。 N-Tier是一种在逻辑之间创建层的体系结构。

主要有3种逻辑,表示逻辑(UI特定逻辑,如计算控件的高度或宽度),业务逻辑(数据操作,验证等)和数据访问(CRUD操作)。

MVP设计模式本身只包含Model,View和Presenter。 N层架构中的视图和演示者被视为表示逻辑。模型在N层中过于笼统,它可以包括业务逻辑和数据访问。 MVP是一种设计,其中视图通过事件驱动与后面的代码进行通信。例如Asp.Net和C#Winform。另一个好的设计模式是在ASP.Net MVC中使用的MVC。

现在谈谈你对层的理解:

  • View是UI。在Asp.Net中它是.aspx文件。它被视为N层中的表示逻辑层
  • Presenter是背后的代码。在Asp.Net中,它是.aspx.cs文件。它被视为N层中的表示逻辑层
  • 服务很好,它被视为N-Tier中的业务逻辑层
  • 存储库是数据访问。其主要目的是与数据存储进行通信。它可以是Xml,平面文件,CSV或通常的数据库。它被视为N-Tier中的数据访问层
  • 实体是一个对象,其目的是对数据进行建模,并将在图层之间传递。还有一个POCO原则,您的实体应尽可能简单(仅由属性组成)。它的主要目的是使您的实体可以用于任何类型的层。

领域驱动设计本身就是另一个概念。它是关于业务流程需求设计应用程序的概念。不是基于通常由大多数程序员完成的数据。