0

我最近开始用 C# 做 web 开发,我对 MVP 模式和领域驱动设计的概念感到困惑。

一位前辈告诉我,该应用程序分为 5 个不同的层。层次结构是这样的:View、Presenter、Service、Repository、Entity。

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

View:正在交付给客户端的数据的表示

Presenter:代码隐藏。处理客户的请求并将信息发送到服务

Serivce:业务逻辑层。操纵数据。

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

Entity:域中唯一的对象,没有两个对象是相同的,除非它们具有相同的身份(属性)

那么,我的描述是否正确?有人可以详细说明吗?另外,Repo 层是做什么的?它是否处理数据库事务?

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

4

2 回答 2

2

根据我的经验,有一个飞行的冲突。

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

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

  • 存储库 - 正确,它处理数据库事务(加载/保存/等)。
  • 实体 - 正确。实体是数据库对象。
于 2013-04-03T01:41:10.023 回答
1

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

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

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

现在谈谈你对层的理解:

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

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

于 2013-04-03T01:59:40.680 回答