对于你们中的许多人来说,这听起来像是一个荒谬的问题,但我问的是,因为我对ASP.Net Webforms的了解很少甚至没有经验 -我直接去了ASP.Net MVC。
我现在正在一个项目中,我们仅限于.Net 2.0和Visual Studio 2005。
我喜欢在使用ASP.Net MVC时将关注点清晰地分开,并且正在寻找使Webforms难以忍受的东西。对于喜欢asp.net MVC,但仍停留在.net 2.0和Visual Studio 2005上的人,是否有任何推荐的模式或做法?
对于你们中的许多人来说,这听起来像是一个荒谬的问题,但我问的是,因为我对ASP.Net Webforms的了解很少甚至没有经验 -我直接去了ASP.Net MVC。
我现在正在一个项目中,我们仅限于.Net 2.0和Visual Studio 2005。
我喜欢在使用ASP.Net MVC时将关注点清晰地分开,并且正在寻找使Webforms难以忍受的东西。对于喜欢asp.net MVC,但仍停留在.net 2.0和Visual Studio 2005上的人,是否有任何推荐的模式或做法?
Answers:
我会推荐Model View Presenter(MVP)。我们在最近的WebForms应用程序上使用了此功能,它提高了可测试性,并允许我们强制分离关注点。
http://msdn.microsoft.com/zh-cn/magazine/cc188690.aspx是Jean Paul Boodhoo撰写的有关此模式的精彩文章;代码下载也不错。您可能会发现虽然不需要DTO和DTO接口。
另一个好的文章是在codeproject.com上的这篇文章:http : //www.codeproject.com/KB/architecture/ModelViewPresenter.aspx
编辑:还有一个称为WebForms MVP的框架,但我对此并不了解。
在Asp.Net中签出Front Controller模式并实现Front Controller。仅当您的项目规模足够大时,才执行这些操作。对于一个小型项目这样做并不能证明ROI。
在一个小项目中,您可以尝试设置一些准则。例如-后面的代码中没有业务逻辑,没有会话使用等。
看看最适合您的情况。在任何情况下,都倾向于进行工程设计。
回到.NET 1.1的黑暗年代,我为每个应用程序创建了一种MVC系统(我想像每个人一样)。
页面被做成某种“假”母版。它可以显示菜单,脚本,样式等。
“视图”是单独的用户控件。
有一个表,其中包含有关每个视图的信息。例如,“产品”将加载~/Controls/Product.ascx
到占位符中。该表还具有一个包含模型类的类型名称的字段(好像)。每个模型都实现了一个众所周知的接口。此类使用实例化Activator.CreateInstance()
并调用以进行初始化,然后传递给控件本身(控件的转换?)。然后控件调用了各种方法来获取数据集或诸如此类。接口本身已被标准化为具有常规的CRUD方法(读/写/列表/删除)。在此之下还有DAL / ORM层。
虽然不漂亮,但是效果很好。测试和开发很容易,大多数新加入的开发人员都会很快赶上。最重要的是,创建起来相对简单。