从ASP.Net MVC返回ASP.Net Webforms。推荐模式/架构?


12

对于你们中的许多人来说,这听起来像是一个荒谬的问题,但我问的是,因为我对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上的人,是否有任何推荐的模式或做法?


感谢您提出的所有建议-希望我能选择多个答案。
jlnorsworthy 2011年

1
我确实希望您的新任务仅用于现有项目,而不是从头开始的工作。您将依赖于许多基本的东西,例如使用Linq对集合进行简单查询时,这些东西将丢失。主要的挫败感将来自于查看生成的HTML并发现它与您所期望的不一样。祝你好运,我希望你成功。
克里斯,

Answers:


7

我会推荐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的框架,但我对此并不了解。


Webvorms MVP看起来真的很酷,但是该项目似乎已停滞(最新版本为07/10)。没有很多可用的文档或教程
jlnorsworthy 2011年

它似乎也需要.NET 3.5 SP1,因此对您可能不太有用。但是,样本和来源可能会帮助您评估MVP模式。
Ciaran

好点,我什至没有注意到。如果我必须与一家拥有最新技术的公司进行网络表单,我将继续关注该项目:)
jlnorsworthy 2011年

4

我建议您了解.net 2.0的页面生命周期

这些视频可能值得一看,尽管并非全部都是免费的,但至少对您而言这将是一个不错的开始...。问题是,这将使您对以后的进一步研究有所了解。


3

到现在您可能已经发现,您将需要取消一些使用ASP.NET MVC确实学过的东西(顺便说一句-当ASP.NET人员继续学习ASP.NET MVC时,情况也是如此)。您仍然可以在ASP.NET中实现MVC模式,但是由于事件/页面回发体系结构,视图和模型的分离在ASP.NET中非常模糊。

我认为,您的大部分新学习都将与页面生命周期以及事件和控件相关。常见的会话,缓存,ViewState和数据库交互保持不变。

嗯...


2

在Asp.Net中签出Front Controller模式并实现Front Controller。仅当您的项目规模足够大时,才执行这些操作。对于一个小型项目这样做并不能证明ROI。

在一个小项目中,您可以尝试设置一些准则。例如-后面的代码中没有业务逻辑,没有会话使用等。

看看最适合您的情况。在任何情况下,都倾向于进行工程设计。


0

回到.NET 1.1的黑暗年代,我为每个应用程序创建了一种MVC系统(我想像每个人一样)。

页面被做成某种“假”母版。它可以显示菜单,脚本,样式等。

“视图”是单独的用户控件。

有一个表,其中包含有关每个视图的信息。例如,“产品”将加载~/Controls/Product.ascx到占位符中。该表还具有一个包含模型类的类型名称的字段(好像)。每个模型都实现了一个众所周知的接口。此类使用实例化Activator.CreateInstance()并调用以进行初始化,然后传递给控件本身(控件的转换?)。然后控件调用了各种方法来获取数据集或诸如此类。接口本身已被标准化为具有常规的CRUD方法(读/写/列表/删除)。在此之下还有DAL / ORM层。

虽然不漂亮,但是效果很好。测试和开发很容易,大多数新加入的开发人员都会很快赶上。最重要的是,创建起来相对简单。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.