我最近开始使用C#进行Web开发,我对MVP模式与域驱动设计的概念感到困惑。
其中一位老人告诉我,应用程序分为5个不同的层。层次结构如下所示:View,Presenter,Service,Repository,Entity。以下是我对这些不同层次的理解:
View:
表示正在传递给客户的数据
Presenter:
Codebehind。处理客户的请求并将信息发送到服务
Serivce:
业务逻辑层。处理数据。
Repo:
不完全确定它的作用。
Entity:
域中的唯一对象,除非它们具有相同的标识(属性),否则没有两个对象相同
那么,我的描述是否正确?有人可以详细说明吗?此外,Repo层有什么作用?它是否处理db事务?
这可能不是纯粹的MVP模式,但似乎这是应用程序的状态,我是所有这些概念的新手。如果有人能用更简单的术语向我解释,那就太好了。感谢。
答案 0 :(得分:2)
我的经历中有一些冲突。
演示者 - 不,不是代码隐藏。代码隐藏将实例化一个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。
现在谈谈你对层的理解:
领域驱动设计本身就是另一个概念。它是关于业务流程需求设计应用程序的概念。不是基于通常由大多数程序员完成的数据。