当前位置:  开发笔记 > 编程语言 > 正文

使用ASP.Net MVC与Web表单的最大优势

如何解决《使用ASP.NetMVC与Web表单的最大优势》经验,为你挑选了11个好方法。

使用一个优于另一个有什么好处?



1> cvs..:

ASP.net MVC的主要优点是:

    启用对呈现的HTML的完全控制.

    提供干净的关注点分离(SoC).

    启用测试驱动开发(TDD).

    与JavaScript框架轻松集成.

    遵循网络无状态性质的设计.

    支持SEO的RESTful网址.

    没有ViewState和PostBack事件

ASP.net Web Form的主要优点是:

    它提供RAD开发

    面向winform开发的开发人员的简易开发模型.


关于SoC,人们可以通过编写带有大量业务逻辑甚至数据访问代码的"胖"控制器,就像他们在webforms上使用它一样.所以我会说SoC必须由编码器提供,fw无法帮助.
@ rodbv:非常正确,但是MVC确实会把你推向正确的方向,或者至少不会让你跳过篮球这样做.所以也许这一点应该读起来像'让SoC更容易实现'
它如何"启用测试驱动开发"而不是任何其他方法?当HttpContext.RewritePath Method(String)自.NET 2.0以来一直存在时,我也很困惑它是如何允许RESTful URL的?
虽然这些要点对于MVC方面来说大多是准确的,但现在很多都被集成到WebForms中.

2> J.C...:

ASP.NET Web Forms和MVC是Microsoft开发的两个Web框架 - 它们都是不错的选择.这两个Web框架都不会被其他框架替换,也没有计划将它们"合并"到一个框架中.微软并行提供持续的支持和开发,两者都不会"消失".

这些Web框架中的每一个都提供了优点/缺点 - 在开发Web应用程序时需要考虑其中一些.可以使用任一技术开发Web应用程序 - 它可以使特定应用程序的开发更容易选择一种技术而不是另一种技术,反之亦然.

ASP.NET Web窗体:

开发支持状态 •让人产生一种错觉,即Web应用程序知道用户一直在做什么,类似于Windows应用程序.即使"向导"功能更容易实现.Web表单可以很好地隐藏开发人员的大量复杂性.

快速应用程序开发(RAD) •能够"跳入"并开始提供Web表单.一些MVC社区对此提出异议,但微软推动了这一争议.最后,它归结为开发人员的专业水平以及他们所熟悉的内容.对于经验不足的开发人员而言,Web表单模型可能没有更少的学习曲线.

更大的控件工具箱 •ASP.NET Web窗体提供了更大更强大的工具箱(Web控件),而MVC提供了更原始的控件集,更多地依赖于通过jQuery(Javascript)的富客户端控件.

成熟 •它自2002年以来一直存在,并且有大量关于问题,问题等的信息.提供更多第三方控制 - 需要考虑现有的工具包.

ASP.NET MVC:

关注点分离(SoC) •从技术角度来看,MVC中的代码组织非常干净,有条理和细化,使得Web应用程序在功能方面的扩展变得更加容易(希望如此).从发展的角度促进优秀的设计.

更轻松地与客户端工具集成(丰富的用户界面工具) •Web应用程序比以往任何时候都越来越多地变得像您在桌面上看到的应用程序一样丰富.使用MVC,它使您能够比Web表单更轻松,更无缝地集成这些工具包(如jQuery).

搜索引擎优化(SEO)友好/无状态 •URL对搜索引擎更友好(即mywebapplication.com/users/ 1 - 检索ID为1的用户vs mywebapplication/users/getuser.aspx(会话中传递的id)).类似地,由于MVC是无状态的,这消除了从同一窗口产生多个Web浏览器的用户头痛(会话冲突).同样,MVC坚持无国界网络协议,而不是"反抗"它.

适用于需要高度控制的开发人员 •ASP.NET Web表单中的许多控件会自动生成您在呈现页面时看到的大部分原始HTML.这可能会给开发人员带来麻烦.使用MVC,它可以更好地完成对渲染内容的完全控制,并且没有任何意外.更重要的是,HTML表单通常比Web表单小得多,后者可以等同于性能提升 - 需要认真考虑.

测试驱动开发(TDD) •使用MVC,您可以更轻松地为Web方面创建测试.另外一层测试将为意外行为提供另一层防御.

身份验证,授权,配置,编译和部署是两个Web框架之间共享的所有功能.


"使用MVC,您可以完全控制渲染的内容" - 如果您使用文字而不是标签,占位符而不是面板,中继器而不是数据网格等,您也可以完全控制WebForms等.太多的开发人员阅读这样的语句和相信这是真的.Downvote ..
@masty我部分同意,但是当使用文字,占位符和转发器时,你将越来越多的html移动到代码隐藏.这也可能导致阅读.aspx的设计人员和阅读.aspx.cs的编码人员产生混淆.所以是的,这是可能的,但是,它也违背了ASP.Net WebForms的目的.在这种情况下,我会说ControlAdapters是一个更清洁的解决方案.您可以替换它们的渲染方式,而不是替换控件.
@masty - 感谢您通过挑剔来保存StackOverflow世界,并要求对这个问题进行投票.我只为你编辑了我的答案 - 所以我希望我可以和你要求投票的其他人一起投票.谢谢!
@masty - 我不知道我个人会亲自投票,但我同意你所说的其余内容.
声明"使用MVC,您可以完全控制渲染的内容",这一点很困惑.我认为更好的说法是,"MVC框架渲染较少,呈现的内容更精简.您可以更好地控制渲染的特定HTML/CSS,但您必须完成工作才能获得控制权."

3> 小智..:

任何一个足以记住经典ASP的人都会记住打开一个混合了html和javascript代码的页面的噩梦 - 即使是最小的页面也很难弄清楚它到底在做什么.我可能是错的,我希望我是,但MVC看起来像回到那些糟糕的旧时代.

当ASP.Net出现时,它被誉为救世主,将代码与内容分离,并允许我们让网页设计师创建HTML和编码器来处理背后的代码.如果我们不想使用ViewState,我们将其关闭.如果由于某种原因我们不想使用代码,我们可以将代码放在html中,就像经典ASP一样.如果我们不想使用PostBack,我们会重定向到另一个页面进行处理.如果我们不想使用ASP.Net控件,我们使用标准的html控件.如果我们不想在控件上使用ASP.Net runat ="server",我们甚至可以询问Response对象.

现在,一个有着极大智慧的人(可能是那些从未编写过经典ASP的人)已经决定是时候回到将代码与内容混合的时代,并将其称为"关注点分离".当然,你可以创建更干净的HTML,但你可以使用经典的ASP.如果你的视图中有太多的代码,说"你没有正确编程"就像是说"如果你在经典ASP中编写结构良好且注释良好的代码,它就会比ASP.NET更清晰,更好"

如果我想回到混合代码与内容,我会看看使用PHP进行开发,这种开发具有更加成熟的环境.如果ASP.NET有这么多问题那么为什么不解决这些问题呢?

最后但并非最不重要的是,新的Razor引擎意味着更难区分html和代码.至少我们可以在ASP中查找开始和结束标记,即<%和%>,但现在唯一的指示是@符号.

可能是时候转移到PHP并等待另外10年,以便有人再次将代码与内容分开.


+1点上.我对MVC的第一反应是我再次做经典ASP; 这次只用C#而不是VBScript.
我很惊讶为什么这个答案得到了很多赞成.首先,ASP.NET MVC内置了MVC的分离.当然,您可以在ASP中执行此操作.其次,ASP.NET MVC远不止是传统的ASP.它提供了对HTML的细粒度控制以及.NET的强大功能以及许多有用的帮助程序.第三,@是一个精确的符号,<%%>也是如此.Razor视图的任何体面编辑器都支持@ -notation.最后,PHP成熟了吗?http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design ASP.NET MVC是一个很棒的平台.给它一些关注.

4> Simon_Weaver..:

如果您正在与其他开发人员合作,例如PHP或JSP(我猜测它们) - 您将更容易在页面上转换或协作,因为您不会拥有所有那些"令人讨厌的"ASP.NET各地的事件和控制.


@cawas - 使用MVC更容易.ASP.NET MVC中没有事件.基本上你要处理标准的HTML和CSS,而不是PHP/JSP开发人员需要学习的很多事件和控件

5> 小智..:

MVC的问题在于,即使对于"专家"来说,它也会耗费大量宝贵的时间并且需要付出很多努力.无论背后的技术如何,企业都受到"快速解决方案有效"的基本驱动.WebForms是一种节省时间和金钱的RAD技术.企业不接受任何需要更多时间的事情.



6> Francis Shan..:

    适当的AJAX,例如JSONResults没有部分页面回发废话.

    没有viewstate +1

    不重命名HTML ID.

    清理HTML =没有膨胀,并且在渲染XHTML或符合标准的页面方面有着不错的表现.

    没有更多生成的AXD javascript.



7> Matthew Rust..:

对我来说,最大的单一优势是模型,视图和控制器层之间的明确分离.它有助于从一开始就促进良好的设计.


我同意这是一个主要的卖点,如果您之前从未使用过这种类型的模式,但您可以在WebForms中实现MVC或MVP模式.感谢让人们转向模式而不是使用数据集整合webform,但他们不是我通常雇用的人.

8> 小智..:

我没有看到MVC优于ASP.Net的任何优势.10年前,微软提出了UIP(用户界面流程)作为MVC的答案.这是一个翻牌.我们当时用UIP做了一个大项目(4个开发人员,2个设计师,1个测试人员),这真是一场噩梦.

不要为了炒作而跳入潮流.上面列出的所有优点已经在Asp.Net中提供(在Asp.Net 4中有更好的调整[ Asp.Net 4中的新功能 ]).

如果您的开发团队或拥有Asp.Net的单一开发人员家庭坚持使用它并快速制作漂亮的产品以满足您的客户(谁为您的工作时间付费).MVC会耗费你宝贵的时间并产生与Asp.Net相同的结果:-)



9> 小智..:

弗朗西斯·沙纳汉,

    你为什么称部分回发为"胡说八道"?这是Ajax的核心功能,在Atlas框架和Telerik等精彩的第三方控件中得到了很好的利用

    我同意你对观点的看法.但是如果开发人员小心地禁用了viewstate,这可以大大减少呈现的HTML的大小,从而使页面变得轻量级.

    仅在ASP.NET Web窗体模型中重命名了HTML Server控件,而不是纯HTML控件.无论它是什么,如果重命名,你为什么这么担心?我知道你想在客户端处理很多javascript事件,但如果你巧妙地设计你的网页,你绝对可以得到你想要的所有id

    即使ASP.NET Web Forms符合XHTML标准,我也看不到任何膨胀.这不是我们为什么需要MVC模式的理由

    再次,为什么你对AXD Javascript感到烦恼?为什么会伤到你?这不再是一个有效的理由

到目前为止,我是使用经典ASP.NET Web表单开发应用程序的粉丝.例如:如果要绑定下拉列表或gridview,则最多需要30分钟且不超过20行代码(当然最小).但是对于MVC,请与开发人员讨论它的痛苦程度.

MVC的最大缺点是我们将回到ASP的时代.还记得混合服务器代码和HTML的意大利面条代码??? 哦,天哪,尝试阅读混合了javascript,HTML,JQuery,CSS,服务器标签的MVC aspx页面,什么不是....任何机构都可以回答这个问题?


部分回发是一个丑陋的kludge
如果您的视图中有很多代码,那么您做错了.视图中的代码应仅涉及布局.

10> 小智..:

Web表单也可以从Telerik等第三方控制提供商的更成熟和支持中获益.


不是说它不能用MVC完成,因为我确信它有,但是如果你想把一个快速而肮脏的内部网或外联网应用程序与很多bling Telerik和WebForms拼凑起来很难被击败.熄灭,这是诚实的事实.

11> Hrvoje Hudo..:

在webforms中你也可以手工渲染几乎整个html,除了viewstate,eventvalidation和类似的少数标签,可以使用PageAdapters删除.没有人强迫您使用GridView或其他具有错误html渲染输出的服务器端控件.

我想说MVC的最大优势就是速度!

接下来是强制分离关注.但是它并没有禁止你将整个BL和DAL逻辑放在Controller/Action中!它只是视图的分离,也可以在webforms中完成(例如MVP模式).人们提到mvc的很多东西都可以在webforms中完成,但需要额外的努力.
主要的区别是请求来到控制器,而不是视图,这两个层是分开的,没有像webforms一样通过部分类连接(aspx +代码后面)

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有