我正在重新审视Model-View-Presenter(或监督控制器,无论它现在称之为什么),因为我们在工作中专门使用WebForms,我认为关注点的分离可以提供帮助.
我的问题是关于“视图”界面 – 我知道您为每个页面创建一个视图,以及演示者,ASPX页面实现了IWhateverPageView接口,因此它可以作为演示者将使用的视图传递自己.关于项目/ DLL,该接口在哪里创建?我知道,Presenters都有一个他们所在的MyProject.Presentation类库(然后你可能有你的Repositories / Services / Domain Objects /等的独立库). IWhateverPageView接口是否属于Presentation层,可能在子命名空间中(例如MyProject.Presentation.Views)?它需要自己的库(例如MyProject.Views)吗?
这个常见的结构是什么?
最佳答案 我在WebForms中做了很多MVP,我通常很简单地组织我的项目.
MyProject.Web.UI
包含网站.网页,javascript等……
MyProject.Web
包含将UI连接到业务逻辑所需的所有演示者,视图(接口)和逻辑.
MyProject.Lib
通常包含域逻辑,但如果项目很简单,我将其推入MyProject.Web程序集.
MyProject.Web.Tests,MyProject.Lib.Tests
你有测试项目吗?
最后,它实际上取决于您的需求.没有标准练习,所以你提出的任何约定都应该对你和你的团队有意义.如果这意味着您有一个,两个或二十个项目,那么就这样吧.