【发布时间】:2011-09-09 06:14:15
【问题描述】:
我已经创建了一个 MVP 模式的论坛系统,但我不确定我是否以正确的方式实现它。所以这就是我的结果:
- 我创建了一个包含三个表的数据库:论坛、线程、帖子
- 向项目中添加了一个新的类型化数据集,然后将所有表拖入其中
- 创建了三个新类:ForumsModel、ThreadsModel、PostsModel
- 新增三个接口:IForumView、IThreadView、IPostView
- 另外三个类:ForumsPresenter、ThreadsPresenter、PostsPresenter
在模型类中,我只调用类型化的数据集方法,而在演示者中,我调用了模型方法。视图为.aspx 页。这就是论坛系统的全部内容,但这里是棘手的部分:
由于 MVP 模式是一种 UI 模式,我必须在应用程序本身中验证数据。所以在我的设计中,MVP 就是应用程序!
我做错了什么?
编辑 1: 首先是关于为什么我选择带有存储过程的类型化数据集而不是其他选项:它是最轻量级的数据提供程序,不会损害您拥有的任何架构.其他选项是直接 sql,这对于新创建的应用程序不是一个好的选择,LINQ to sql 类太重而无法用每个请求实例化,实体框架很棒,但对于这样一个简单的任务来说太多了!至少如果我正在创建一个博客引擎,那将是我的第一选择。 至于我为什么不选择 MVC,那是因为我认为 MVP 是更好的模式,因为它可以完全分离我的应用程序的不同部分。最后这是一个问题,但你应该能够实现任何模式,对吧? 我见过不同风格的 MVP,但我正在尝试实现的是:
model<------------->presenter<-------------->view
databind 选项适用于我所记得的由 martin fawler 引入的表示模型模式,但我正在尝试创建的是一个 microsoft 版本,它基本上是 PM 模式的扩展版本。
两天前我问了一个关于数据验证的问题,有人建议我应该在“应用程序本身”中进行,所以当我问这个“应用程序”在哪里时,他说 MVP 是一种 UI 模式,它不应该成为你的“应用程序”,你应该在你的用户界面层实现 MVP。所以这就是我首先问这个问题的原因!
【问题讨论】:
标签: c# asp.net database mvp strongly-typed-dataset