Asp.net mvc 首次使用ASP.NET MVC时的主要风险

Asp.net mvc 首次使用ASP.NET MVC时的主要风险,asp.net-mvc,Asp.net Mvc,我们计划在一个相对重要的(业务)项目上使用ASP.NET MVC。开发团队由4名开发人员和一名技术负责人组成。其中两名开发人员和技术负责人曾在ASP.NET WebForms项目上合作过,并对使用该技术充满信心 当我们回顾第一个WebForms项目中使用的一些方法时,我们有点畏缩(例如过度使用UpdatePanel,缺乏对控件(如ListView、臃肿的ViewState等)的了解) 重要的是,我们不要在一年内回顾这个项目,并畏缩于我们的一些ASP.NET MVC方法 根据经验,是否有人在首次使

我们计划在一个相对重要的(业务)项目上使用ASP.NET MVC。开发团队由4名开发人员和一名技术负责人组成。其中两名开发人员和技术负责人曾在ASP.NET WebForms项目上合作过,并对使用该技术充满信心

当我们回顾第一个WebForms项目中使用的一些方法时,我们有点畏缩(例如过度使用UpdatePanel,缺乏对控件(如ListView、臃肿的ViewState等)的了解)

重要的是,我们不要在一年内回顾这个项目,并畏缩于我们的一些ASP.NET MVC方法

根据经验,是否有人在首次使用ASP.NET MVC时会遇到任何关键风险


我在想gotchas,花了一段时间才开始使用的灯泡,在学习某个特定项目之前,您感觉一直在与之斗争的框架部分,诸如此类的事情。

对我来说,最大的问题是理解模型绑定,并且您可以使用类型化视图


同时正确保护您的路线。

使用强类型视图,并为每个视图创建一个新模型

原因很简单:这是为了确保模型与视图分离。如果你需要重构,你只需要分解一部分。因此,如果你有一个名为“最新新闻”的视图,你应该有一个“最新新闻视图模型”。然后,控制器的任务是从实际模型/数据库中获取数据,并创建一个视图模型,并将其传递到视图中。此外,如果您决定在视图中需要其他内容,则不必重构整个数据访问层,因为您只需更改ViewModel和填充它的控制器操作

性能


我建议您了解性能问题和优化,它们可能会产生巨大的影响。

您可以从Scotts Guthrie的博客下载免费的take,它为您提供了如何从头开始构建ASP.NET MVC站点的全面深入指南。

我所看到的最大风险来自回归无状态媒体

回发邮件不见了。大多数服务器控件都消失了。视图状态已消失。事件驱动模型已经消失


如果您的开发人员只使用asp.net webforms来构建网站,而从未使用过其他web技术,那么他们将会学到很多东西

一年后回顾你的代码,对你写的东西畏缩,这难道不是很正常吗?特别是一个新的框架?除非你的高年级学生熟悉MVC模式,否则没有人会握着你的手,帮助你第一次编写很棒的代码。@Chad-你可能是对的,我只是想尽量减少我们可能面临的畏缩因素!你能补充更多细节吗?模型绑定-您指的是强类型视图?关于确保路线安全,你是什么意思?我同意这可能需要很多学习,但这是很好的学习;-)不幸的是,许多web表单开发人员对web知之甚少,在许多情况下,他们对web的了解还不如典型的ASP开发人员,他们至少需要考虑HTTP POST,即使大多数代码最终都是意大利面条。我相信web表单人员了解MVC是健康的,因为这意味着他们将了解web应用程序中真正发生的事情。我不同意这是对无状态媒介的回归。web一直是一种无状态的媒介,只是web表单以一种相当笨拙的方式隐藏了事实。哦,完全是这样。这是一个非常好的学习,对任何开发人员都非常有益,如果没有什么比这更能向他们展示如何使用HTTP的基本原理的话。当我说return时,对于太多webforms用户来说,它是有状态的。Viewstate对于那些了解情况的人来说既笨拙又丑陋,但是对于太多的asp.net开发人员来说,这就是web“工作”的方式。我的印象是,您的模型不应该“关心”它们所使用的视图(关注点分离)。您是否推荐两类模型:表示“仅”数据的模型和专门为视图中使用而定制的模型?是的。基本上,您有常用的模型类来处理向数据库中读取和写入数据的操作,但也有针对每个视图的单独模型类,即所谓的视图模型。这些视图模型实际上并没有做任何事情,它们只是一组属性,精确地保存视图所需的数据。然后,控制器与您的“普通”模型对话,以获得所需的准确数据,创建相应ViewModel的实例并填充它,然后将其发送到(强类型)视图。一开始似乎有些过火,但后来又省去了重构的麻烦。另请参见以下链接:示例中的视图模型是HomePageViewModel。