迁移经典ASP - Webforms还是ASP.NET MVC?

10

我正在为客户维护一款经典的ASP应用程序,当我查看ASP时,有个问题浮现在我的脑海中 - 把一个经典的ASP应用程序转换为ASP.NET MVC或ASP.NET WebForms哪个更容易?

从许多方面来看,将ASP的HTML转换为MVC似乎会比将HTML块剥离并将它们转换为ASP.NET控件、重复器、数据网格等更容易。此外,必须添加ViewState等处理和逻辑,这可能需要额外的工作。

我不认为我的客户会要求升级这样的应用程序,所以这只是理论上的想法。

假设这个ASP代码编写得很好(当然,并非总是如此),那么真正的问题是,最佳情况下设计良好的ASP网站是否比WebForms更适合迁移到MVC?

(请注意,我对ASP.NET MVC非常陌生,所以可能会漏掉一些重要内容)。

10个回答

7
这很大程度上取决于经典的asp应用程序的结构。与asp.net mvc混合在HTML中的服务器标记类似,但MVC不会那么混乱(或者不应该混乱)。你可能能够更容易地将经典的asp演示代码移动到MVC视图中,而不是Web表单中。此外,经典的asp应用程序通常是根据Web的无状态性开发的。您的经典ASP中可能没有任何与postabacks或viewstate匹配的内容。经典ASP还使用普通的html元素而不是asp.net webform控件。在这些方面,它与MVC更相似。如果您不了解asp.net webforms或asp.net mvc,则我建议选择MVC。如果您非常熟悉WebForms而不了解MVC,则我建议选择WebForms。但是,如果您的客户出于某种原因确实想重新开发网站,我建议使用MVC。只要您能够交付,让客户支付部分您的经验开发费用总是很好的。另外,当我遇到要求我对他们的经典asp站点进行工作的客户时,我总是感到吃惊。在每种情况下,该站点都是一团糟。最糟糕的是,它们通常充满了巨大的安全漏洞。

4

我认为在很多情况下,将Webforms转换为MVC可能会更容易。大多数经典ASP应用程序展示了非常少的关注点分离,因此最大的任务可能就是将逻辑分离成数据访问、业务逻辑、业务实体和UI组件。在这样做的过程中,将内联ASP代码转换为视图、业务逻辑转换为控制器,业务实体转换为模型可能会更容易。


4

我认为将它们转换成另一个比起另一个更容易的说法是不正确的。

如果你愿意,在编写ASP.NET时可以几乎与编写ASP相同,只需在codebehind中放置一些关键元素即可在aspx中访问。没有数据绑定、没有gridview和repeater。视图状态可帮助您,并且很容易理解,如果您不想使用它,则无需使用它,并且可以在web.config中关闭并在页面属性中打开。Web表单还有一个AspCompat模式,允许访问Request和Response对象或asp,如果需要,可以进行逐个页面的转换。

至于MVC.net,显示HTML的方法非常相似。在我看来,这就是相似之处结束的地方。您仍需要将所有逻辑分离到MVC模型中。

从ASP转向Web.Form再到MVC.Net,我可以告诉你,学习WebForms有点烦人/令人沮丧,90%的MS教程教你最糟糕的习惯,比如在页面上使用SQL连接,在设计器中拖动数据集。然而,一旦你克服了这个问题,就能够比在asp中更快地完成很多事情(例如分页或构建带编辑功能的简单数据表),但是我仍然没有看到一个大型的WebForms项目,其n层设计让我觉得易于理解、实现和使用。
MVC.NET就像是天赐之物。它强制实施模式和实践,有严格的规则,大多数人都遵守。它允许轻松进行代码覆盖和关注点分离。在被WebForms困扰多年后,当我试图做一些无法从工具栏拖出来的事情时,终于感觉不再是在拼凑东西。
我个人建议尝试一下WebForms,这样你就会知道开始使用MVC时有多么好。

2

ASP.NET-MVC不仅仅是视图代码和ASP内联代码之间的明显相似之处。还有要考虑的所有模型和控制器部分,这与大多数ASP编写方式非常不同。

话虽如此,我认为MVC是最好的起点。


1

毫无疑问,ASP.NET MVC在风格方面更好。(也就是说,在WebForms应用程序中,您不必使用Repeaters和其他愚蠢的控件,您可以像在MVC中一样使用内联代码。)

总的来说,MVC将更容易移植,给您提供更好的结构,并且会带来更愉悦的体验。


1

Web Forms更加面向对象,而MVC则像是在.NET代码之上的经典ASP。使用Web Forms或MVC时,模型设计应该是相同的。唯一的区别是Web Forms具有面向对象的UI抽象,而MVC使用函数和代码片段而不是类来组织UI代码。


1

我认为IMO WebForms尝试过度隐藏html,这可能会导致您的项目需要将大量的html转换为WebForms控件,从而使您的项目花费更长的时间。

另一方面,MVC允许您重用部分逻辑,同时使应用程序更易于维护,并且通过适当的架构模式,您的应用程序可以比任何WebForms项目更快地开发和重构。

我认为MVC是最好的选择!


1

无论如何,最好的方法始终是从头开始实现逻辑。

我很久以前(超过12年前)开始使用ASP,直到2006年才转向ASP.NET 2.0,即使今天我也不知道所有的东西,但我确实知道我每天在工作中做什么。

在我看来,回顾我对ASP的了解,我会选择Web Forms而不是MVC。首先,它是一种已经在“市场”上使用多年并且在全球范围内广泛使用的语言,而MVC仍处于Beta阶段,因此不适合生产环境(尽管此网站是用MVC编写的,微软也这样说)。

我仍然容易混淆MVC图表,并且有更多的技巧需要学习,如果我需要快速更改一个ASP项目。


1

这要看情况。ASP.NET MVC并非万能药,在开发者生产力方面在很多方面都会退步。

如果你的预算紧张,需要快速完成,我认为ASP.Net是最好的选择,因为它拥有丰富的控件,如网格、分页、验证等,可以直接使用。使用这些控件无疑会节省大量的开发时间。当你使用ASP.NET MVC项目时,所有这些控件(现在大多数人都认为是平凡的)都必须从头开始创建或从互联网上获取。

另一方面,如果你现在和未来有时间和预算,并且想要一个坚如磐石的解决方案,更容易适用于测试驱动开发,那么ASP.NET MVC可能是最好的选择。


-1

ASP.NET MVC比Web Forms更适合自动化单元测试UI。然而,自动化单元测试总体上是不好的实践,对于UI来说更糟糕。手动测试是构建高质量应用程序和充分利用开发时间的最佳方式。创建自动化单元测试是浪费时间,你最终会得到一堆需要与核心代码一起维护的垃圾代码。许多开发人员喜欢自动化单元测试,因为他们认为这是证明他们的应用程序工作的证据,这是错误的。他们也试图避免使用UML设计应用程序,所以他们使用测试驱动开发来使用代码进行设计,这导致了设计不良的应用程序。使用TDD,你正在重构你写得不好的代码,而没有考虑在第一次使用模型时考虑整体情况。

所以MVC是无用的。Web Forms使用更好的面向对象模型,而MVC更像旧式经典ASP和其他较旧的设计模式。现在是2010年,MVC已经死了。Web Forms就像UI的ORM。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接