我应该迁移到ASP.NET MVC吗?
我只是听了StackOverflow团队的第17个播客,他们对ASP.NET MVC的评价很高,以至于我决定检查一下。
但是首先,我想确定这是值得的。我已经为一个即将开始的项目创建了一个基本的Web应用程序(供其他开发人员使用),并希望根据经验知道我是否应该花时间学习MVC的基础知识并重新创建它。具有此模型的基本Web应用程序。
是否有真正的大职业者值得这么做?
编辑:这不是一个现有的项目,这是一个即将开始的项目,所以如果我要去做的话,应该现在...
我刚发现这个
It does not, however, use the existing post-back model for interactions back to the server. Instead, you'll route all end-user interactions to a Controller class instead - which helps ensure clean separation of concerns and testability (it also means no viewstate or page lifecycle with MVC based views).
那将如何工作?没有检视状态?没有活动吗?
解决方案
回答
除非我们与之合作的开发人员熟悉MVC模式,否则我不会。至少我会先与他们交谈,然后再进行如此大的更改。
回答
我不建议仅在现有项目上进行切换。也许开始一个小的"演示"项目,团队就可以使用该项目进行技术试验,并(如有必要)了解他们的需求,并向管理层证明进行转换的价值。最后,即使开发团队也可能意识到他们还没有准备好或者不值得。
无论我们做什么,都要确保将其记录在案。也许如果我们使用演示项目,请写一份事后备查。
回答
我将首先创建一个测试站点,然后了解团队的想法,但是对我来说,在使用MVC之后,我不会再使用WebForms了。
有些人不喜欢将代码与HTML混合在一起,我可以理解这一点,但是我更喜欢灵活性,而不是页面生命周期之类的东西,因为对我来说,呈现HTML和biggy不会在页面源代码中嵌入任何视图状态。
有些人喜欢使用MVC来实现更好的可测试性,但是个人而言,我的大多数代码都位于中间层,并且无论如何都易于测试...
回答
我不了解ASP.NET MVC,但我对MVC模式非常熟悉。我没有看到没有MVC来构建专业应用程序的另一种方法。它必须是MVC模型2,例如Spring或者Struts。顺便说一下,人们如何在没有MVC的情况下构建Web应用程序?当我们遇到对每个请求都需要某种验证的情况时(例如验证用户是否通过身份验证),解决方案是什么?每页都有某种include(validate.aspx)吗?
回答
我正在就ASP.NET MVC做出同样的决定,胡安·曼努埃尔(Juan Manuel)。我现在正在等待合适的项目来进行实验。如果实验顺利进行(我的直觉就可以了),那么我将围绕该框架设计我的新大型项目。
使用ASP.NET MVC,我们将失去ASP.NET Web窗体的视图状态/回发模型。没有这种抽象,我们将与HTML以及HTTP POST和GET命令更加紧密地协作。我相信UI编程在某种程度上朝着经典ASP的方向发展。
带来的不便带来了更大程度的控制。我经常发现自己正在与ASP.NET的伪会话垃圾作斗争,重新获得对输出HTML的完全控制的前景似乎非常令人耳目一新。
也许这两个世界都是最好的,也可能是最坏的。
回答
不,你不应该。可以在一个新项目中随意尝试,但是许多熟悉ASP.NET Web表单的人还不喜欢它,因为它们必须混用原始HTML +许多不同的概念+在文档中非常苗条的选择/教程。
回答
@Juan Manuel我们曾经在经典ASP中工作吗?什么时候必须对所有自己的事件和" viewstatish"项进行编程(如下拉菜单,在提交表单后调用其选定的值)?
如果是这样,则ASP.NET MVC不会觉得尴尬。我将查看Rob Conery的Awesome系列" MVC店面",其中他一直在浏览框架并为店面站点构建每个预期的组件。这确实令人印象深刻且易于遵循(追赶非常艰巨,因为Rob一直非常活跃并在该系列中发表了很多文章)。
就个人而言,与Jeff Atwood在该主题上的想法完全相反,我宁愿喜欢Webform模型。当然,这与vbscript /经典ASP时代完全不同,但实际上,保持viewstate的状态并编写自己的CSS友好控件是一件令人愉快的事情。
再说一遍,注意我说"喜欢"。 ASP.NET MVC确实很棒,并且更像其他Web技术。如果我们愿意或者需要在多个平台上工作,从ASP.NET MVC转换为RAILS当然更容易。而且,是的,如果公司禁止使用任何颜色的"测试版"软件,它显然是非常稳定的(本站点)。此时将其实施到生产中可能是一个问题。
回答
研究ASP.net MVC仅在" Preview 5"中时,是否值得引起关注?
我知道StackOverflow是使用它创建的,但是在正式退出beta / alpha / preview版本之前,Microsoft是否有可能对框架进行重大更改?
回答
I dont′t know ASP.NET MVC, but I am very familiar with MVC pattern. I don′t see another way to build professional applications without MVC. And it has to be MVC model 2, like Spring or Struts. By the way, how you people were building web applications without MVC? When you have a situation that some kind of validation is necessary on every request, as validating if user is authenticated, what is your solution? Some kind of include(validate.aspx) in every page?
我们是否从未听说过N-Tier的发展?
回答
我曾经使用过ASP.NET MVC(甚至编写了一个HTTPModule,可以通过它在web.config中定义路由),但对此我仍然有些苦涩。
这似乎在组织和生产力方面倒退了一大步。也许不是某些人想要的,但我已经弄清楚了Web表单,就可维护性而言,它们对我没有任何挑战。
那,我不赞成当前的"一切都测试"风尚...
回答
@乔纳森·霍兰德我看到你被否决了,但这是非常有效的一点。我一直在阅读有关intertube的文章,人们似乎在混淆ASP.NET MVC框架和MVC模式。
MVC本身就是一个设计模式。如果我们只需要"关注点分离",那么我们当然可以使用Web表单来实现。就个人而言,我是标准n层环境中MVP模式的忠实拥护者。
如果我们真的想在ASP.NET世界中完全控制标记,那么MVC就是最佳选择。
回答
重要的是要记住,MVC和WebForms没有竞争,并且两者之间并不比其他更好。它们只是不同的工具。大多数人似乎将MVC与WebForms结合起来是因为"一个必须比另一个更好"。那是错的。一个是锤子,另一个是螺丝刀。两者都用于将事物放在一起的过程中,但是有不同的优点和缺点。
如果口感不好,我们可能正在尝试使用螺丝刀敲打指甲。 WebForms的某些问题使MVC变得优雅而简单,反之亦然。
回答
ASP.NET MVC基本上允许我们将代码不同部分的职责分开。这使我们能够测试应用程序。我们可以测试视图,路线等。由于现在没有ViewState或者Postback,因此它也可以加快应用程序的速度。
但是,也有缺点。因为我们不使用WebForms,所以不能使用任何ASP.NET控件。这意味着如果要创建GridView,将运行for循环并手动创建表。如果要在MVC中使用ASP.NET向导,则必须自行创建。
如果我们对ASP.NET Webform感到厌倦并想自己执行所有操作,则它是一个不错的框架。但是我们需要记住,是否再次创建所有内容会从中受益?
通常,由于控件和自动检测功能丰富,我更喜欢Webforms框架。
回答
如果我们今天对WebForms感到很满意,那么也许ASP.NET MVC不适合我们。
很长时间以来,我对WebForms感到沮丧。我绝对不是一个人在这里。 Web上的智能客户端,有状态抽象在复杂情况下会严重崩溃。我碰巧喜欢HTML,Javascript和CSS。 WebForms试图向我隐藏它。对于没有那么复杂的问题,它也提供了一些非常复杂的解决方案。 Webforms本质上也很难测试,虽然可以使用MVP,但对于Web环境而言,它并不是一个很好的解决方案...(与MVC相比)。
如果...,MVC将吸引我们
我们想要对HTML进行更多控制
想要像其他平台一样的无缝ajax体验
想要贯穿始终的可测试性
想要有意义的URL
讨厌处理回发和视图状态问题
至于Preview 5的框架,它非常稳定,设计就在那儿,升级也不难。我在Preview 1上启动了一个应用程序,并在可用的最新预览后的几个小时内进行了升级。
回答
如果我们是专业的ASP.NET开发人员,并且有一些时间可以用来学习新知识,那么我当然建议我们花一些时间来尝试ASP.NET MVC。可能不是解决所有问题的方法,许多项目可能会从传统的Webform实现中受益匪浅,但是在尝试弄清MVC时,我们肯定会学到很多,并且可能会提出许多想法我们可以申请工作。
我在尝试开发MVC宠物项目时浏览许多博客文章和视频教程时注意到的一件好事是,它们中的大多数遵循了当前的最佳实践(TDD,IoC,依赖注入和较低程度的POCO),加上大量的JQuery,使用户的体验更加有趣,这是我可以在当前的Webform应用程序中应用的东西,而且我之前从未接触过如此深入的内容。
ASP.NET MVC的处理方式与Web表单非常不同,以至于我们会有些动摇,对于开发人员而言,这是非常好的!
OTOH对于Web开发的初学者来说,我认为MVC绝对是一个更好的开始,因为它提供了一种开箱即用的良好设计模式,并且更接近于Web的真正工作方式(毕竟HTML是无状态的)。在MVC上,我们决定在网络上来回传输的每个字节(至少在我们不对html helper疯狂的时候)。一旦这个家伙明白了,他或者她将有更好的能力来转移到ASP.NET Web表单和服务器控件提供的"人工"功能。
回答
如果我们对使用MVC框架一无所知,那么我宁愿使用Castle项目的...
话虽如此,我个人认为WebControls具有很多优点,例如能够创建具有状态客户端的事件驱动应用程序等。构造大多数针对WebControl的参数是因为缺乏对WebControl模型等的理解。并不是因为它们实际上是很糟糕的...
MVC不是Silver Bullet,尤其不是Microsoft MVC。
回答
如果我们喜欢使用为我们做很多工作的服务器控件,我们将不喜欢MVC,因为我们将需要在MVC中进行大量的手工编码。如果我们喜欢GridView,请期望自己编写或者使用其他人的GridView。
MVC并非适合所有人,特别是如果我们不打算对GUI部分进行单元测试。如果我们对Web表单感到满意,请继续使用它。 Web Forms 4.0将解决一些当前的缺陷,例如由ASP.NET自动分配的ID。在下一版本中,我们将可以控制它们。
回答
我已经看到了MVC框架的一些实现,其中为了可测试性,有人用代码呈现了整个HTML。在这种情况下,视图也是可测试的代码。但是我说,我的朋友,将HTML放入代码中是维护的噩梦,他说我很好,我喜欢编译和测试的所有内容。我没有提出异议,但后来发现他确实将此HTML放入了资源文件中,并且疯狂仍然存在。
他几乎没有意识到分离View的整个想法也解决了维护部分。在某些应用程序中,它胜过可测试性。如果我们使用的是WYSWYG工具,则无需测试HTML设计。出于这个原因,WebForms是很好的。
我经常看到人们滥用回发和视图状态,并将其归咎于ASP .NET模型。
请记住,最好的网页仍然是.HTML,这就是ASP .NET MVC的强大功能。
回答
我们应该仔细研究ASP.NET MVC的5个理由
回答
Ajax,RAD(带有ajax的Web窗体经常是反RAD),完全控制(无需开发全部代码和周期)。 Webforms仅能绑定某些网格,而不是用于其他任何东西,而它是真正重要的性能,它是很好的。当我们陷入网络表单时,我们迟早会打开MVC。