如果是,什么时候?以及您认为迁移您当前项目的过程需要多长时间(如果是这样的话)?
13 回答
ASP.NET MVC并不是要取代 WebForms。它们是不同的技术,是为不同的目的而设计的。
笼统地说我只会使用一种而不使用另一种是一种非常狭隘的方法,因为您错过了每种技术的优缺点。
Microsoft 致力于这两种技术的发展,并且在 WebForms 4.0 中提供了很多不错的新功能。
我将使用 WebForms 和 ASP.NET MVC,但会考虑当前项目的需求,以便为当前的实现做出正确的决定
我已经使用了几个月了。我绝对喜欢 MVC。转换现有项目可能不现实,具体取决于可用时间。正如我所看到的,Web 窗体模拟了旧 VB 人群的 Windows 窗体开发。虽然 MVC 并没有假装它不是它,但它更紧密地遵循 Http 过程。
我在 MVC 中看到的一些优点
1) 可通过单元测试进行测试
2)直接控制Html。我们做网站,我们如何接受无法控制我们所有的html?
3) 没有视图状态包
4)没有控制树浪费时间渲染
5) 从表单帖子自动绑定模态
6)它可能相当性感
还有一些缺点
1) 不再有网络控件(并且丢失了许多丰富的第 3 方控件)
2)发展较慢
3) 大的学习曲线
4) 仍处于 Beta 阶段(不过 CTP 很快)
是的,对于我的新项目。但不适用于当前的生产软件。
是的,以尽可能有序的方式进行。
MVC 为 .NET 开启了敏捷开发最佳实践的世界。它专门解决了对关注点分离和耦合/内聚的担忧。它还允许我们编写更便携的软件,而无需创建对任何供应商特定参考或组件的依赖。
毫无疑问,它是 WebForms 以及 WPF 的继任者,无论您阅读什么 PR。
维基百科条目非常清楚,甚至在为微软的 MVC 更新之前。
假设您更喜欢 ASP.NET MVC 而不是 Web 窗体,那么对于处于积极开发/维护中的系统来说,这是值得的。
它们可以并行共存,因此可以迁移应用程序的某些部分(新的或选定的旧的)并查看它是如何工作的。如果成功,请继续。
不过,“全有或全无”迁移可能是灾难性的——在没有快速反馈的情况下进行大量投资是一个巨大的风险。
WebForms 用于丰富的 UI
这些可以用 MVC 或 Webforms 完成。一年后,丰富的基于 MVC 的工具包将会出现(从技术上讲,如果你喜欢 YUI、ExtJS 等,它们已经在这里了)并使这个论点无效。
迁移您当前的项目
将现有的 WebForms 项目迁移到 MVC 并没有多大意义。你会得到什么?但是,根据您的要求,将 MVC 用于新项目可能会很有意义。
我已经使用 ASP.NET MVC 几个月了,我更喜欢它而不是 Web 窗体。但是,我没有看到自己将现有项目迁移到 MVC。对我来说,这将毫无意义。但是,我所有的新 ASP.NET 项目都将(或应该)使用 MVC 开发,因为它是一个更好(并且更灵活)的框架。
我从一开始就不太喜欢 WebForms,所以开始使用 MVC 对我来说就像呼吸新鲜空气。我一直更喜欢关注点分离,因为我可以处理我真正擅长开发的块、逻辑和数据访问,并将演示工作留给具有这种天生能力的团队成员。我认为 MVC 库使团队更容易在各个页面上一起工作,因为一个人可以在控制器上工作,而另一个人可以在视图上工作。
话虽如此,当我从事不需要过多关注编码并且更面向显示的项目时,我仍然会回到 WebForms,因为它们更容易实现和启动和运行。两者都有自己的位置,我认为一个永远不会取代另一个。
我个人将 ASP.NET MVC 限制为轻量级前台网站。
但仍将 ASP.NET WebForms 用于 Righ BackOffice 应用程序,以利用丰富的自定义控件和 Web 窗体的其他一些不错的功能。
mvc 的另一个优点是像 jquery 这样的 javascript 更容易实现,所以如果你打算使用大量 js,mvc 可能是要走的路。
不,没有理由这样做。这是另一种风格,我不喜欢。但那只是我的个人意见; 很多人喜欢它,我希望它对他们有用。
如前所述,它们并不相互排斥,我玩游戏是为了充分利用两者。
IMO MVC 更适合网站,而 WebForms 更适合 Web应用程序。
例如,这个站点完美地展示了 ASP.NET MVC 是一个不错的选择,因为站点的性质和需要完成的任务;其他很好的例子是网上商店、项目管理网站(如 Basecamp)或社交网络。
但是,如果您正在开发企业 CRM/ERP 系统,我会坚持使用 WebForms 来获得丰富的控件和更“类似桌面”的编程模型,因为 CRM 应用程序传统上是桌面应用程序的领域。
ASP.NET MVC 更适合我想要的开发风格,但我对信任自己持谨慎态度,因为它不是 RTM。它也足够不同,以至于我们的遗留代码无法使用它。如果我们一直在练习领域驱动开发,事情可能会更容易,但是......