Model-View-Presenter,View的界面属于哪里?

时间:2011-10-14 13:04:31

标签: asp.net mvp project-organization

我正在重新审视模型 - 视图 - 演示者(或监督控制器,无论它现在称之为什么),因为我们在工作中专门使用WebForms,我认为关注点的分离可以提供帮助。

我的问题是关于“视图”界面 - 我知道您为每个页面创建了一个视图,以及演示者,ASPX页面实现了IWhateverPageView接口,因此它可以作为演示者将使用的视图传递给自己。关于项目/ DLL,该接口在哪里创建?我知道,Presenters都有一个他们所在的MyProject.Presentation类库(然后你可能有你的存储库/服务/域对象/等的独立库),这是习惯做法。 IWhateverPageView接口是否属于Presentation层,可能在子命名空间中(例如MyProject.Presentation.Views)?它是否需要自己的库(例如MyProject.Views)?

这是什么常见的结构?

2 个答案:

答案 0 :(得分:2)

我在WebForms中做了很多MVP,我通常很简单地组织我的项目。

MyProject.Web.UI

包含网站。网页,javascript等...

MyProject.Web

包含将UI连接到业务逻辑所需的所有演示者,视图(接口)和逻辑。

MyProject.Lib

通常包含域逻辑,但如果项目很简单,我将其推入MyProject.Web程序集。

MyProject.Web.Tests,MyProject.Lib.Tests

你确实有测试项目吗?

最后,它实际上取决于您的需求。没有标准的练习,所以你提出的任何约定都应该对你和你的团队有意义。如果这意味着您有一个,两个或二十个项目,那么就这样吧。

答案 1 :(得分:0)

我有一个具有Models,Presenters和View界面的特定项目,因此演示者可以轻松地通过界面使用视图。它对我们很有用。我认为您不需要单独的合同;我们的想法是,视图界面代表一个契约,以便它可以与演示者合作......