ASP.NET MVC =使用.NET类库的经典ASP。真?

问题描述:

This blogpost和我们的一位高级开发人员在工作中认为,Web开发已经与ASP.net MVC完全一致。它不是一个真正的VB脚本vs VB9/10或最新的任何问题。除了路由引擎,辅助类和方法。什么是一些有力的论据,你可以说ASP.NET MVC =使用.NET类库的经典ASP。真?

ASP.net MVC =经典ASP + .NET BCL

+0

Downvoters - 请留下评论,当你downvote一个问题。海事组织这不是一个坏问题,是吗? – Perpetualcoder 2009-02-17 20:12:10

+0

不,这个问题有很多很好的答案,它增加了SO的总价值。 +1 – 2009-02-18 22:14:35

+0

您工作的高级开发人员应该多读一点 – juan 2009-02-18 22:18:12

在ASP中,“View”接收请求。在ASP.NET MVC中,控制器接收请求,随后它可以从多个不同的视图中选择来创建响应。

响应处理中的请求处理的这种分离与ASP非常不同。

新的ASP.NET MVC支持语法的View组件看起来!像ASP 3.0一样。

事实上,此语法(<%%>)始终在ASP.NET WebForms中可用。

您仍然可以在MVC中使用ASP.NET控件(< asp:control>),或者您可以使用新的语法(这是奇怪的IMHO)或使用其他框架,如NVelocity。

这一系列可用技术不能被视为.NET BCL上的旧ASP。

该博客文章并非基于对MVC框架的非常完整的理解。 MVC促进了关注的良好分离,View文件中包含的代码应该非常基本;所有的实际编码都发生在控制器内。这位博客作者说,ASP.Net的真正优势在于控制,我认为其优势在于事件驱动模型和有状态环境的展示超过了几乎无状态的环境。 MVC保持这种优势,同时还促进了与实际UI的进一步分离。

该参数在假设MVC中的所有内容都是Views的情况下工作。

现实情况是,这种观点只是谜团的一小部分,并且认为它是整个事物表现出对模式和框架的深刻理解。如果没有先教育这个人,你就不能提出争论,而在教育这个争论的过程中,这种争论将变得不可靠。

为了解决博客文章本身,是的,通过放弃丰富的控件,尤其是在您正在讨论从第三方供应商购买的控件时,您确实丧失了大量功能。然而,现在有完整的JavaScript小部件套件,如果不是那么好,那么任何可用于asp的东西都是好的,而且它们是免费的。不仅如此,使用ASP.net意味着购买一个非常复杂的框架,大概90%的时间都可以工作。问题在于,对于任何不重要的事情来说,90%是永远不够的,并且围绕该额外10%的框架工作可能会变成地狱。另一方面,购买这种复杂性所带来的性能绝对是糟糕透顶的。

MVC和ASP.net之间的比较需要在小部件与良好架构之间,灵活的直接标记和良好的性能之间进行比较。如果你需要这些小部件,然后坚持ASP.net,主知道它不会很快消失。如果你对HTML,JavaScript和CSS等网络技术感到满意,那么丢失那些开箱即可的小部件将会很糟糕,但是你得到的将远远超过你失去的东西。

经典ASP和ASP.NET MVC之间存在重大的基本设计差异。最显着的区别是商业逻辑与显示逻辑的分离。在经典的ASP中,这两种逻辑大部分都是混合在一起的。在ASP.NET MVC中 - 正确使用 - 视图组件中唯一的代码是呈现页面所需的代码。业务逻辑,出现在页面上的数据选择以及解释和处理输入的逻辑可以在控制器和模型中找到。

由于这种差异,ASP.NET MVC显着提高了代码在传统ASP和WebForms上的可测试性。所有业务逻辑都可以在与渲染引擎分离的类中找到,因此可以通过单元测试(更容易)进行测试。在传统的ASP和WebForms中,在某种程度上,这种逻辑的大部分可以在页面上或代码隐藏中找到,这更难以测试。

另外,在我看来,一旦你有经典的ASP代码漂浮在页面的HTML中,将很难保持应用程序。

我可以同意,用意大利面代码维护页面可能会更困难。

但是ASP.NET MVC Views仍然像ASP.NET一样编译WebForms是 - 这与ASP 3相比有很大的不同,您可以在.aspx中使用IntelliSense。

使用MVC进行整体应用程序维护实际上要简单得多。为代码创建单元测试要容易得多,这些代码可以为捕获错误创建一个很好的网络(并且可以提高开发人员对代码真正起作用的信心)。

在Web窗体中创建页面非常容易,但很多时候很难测试页面后面的代码。

我是博客文章的原作者,这里是我的看法是:

ASP.NET MVC是针对不同的受众和目的不同的框架。 ASP.NET MVC的主要用途是分离关注点和可测试性。视图代码和HTML混合代码确实会创建意大利面代码,但您应始终将视图保留为小组件。这样可以更轻松地调试应用程序并发现问题,而不是将所有视图保留在同一页面上并造成混乱。

ASP.NET MVC不得不放弃许多强大的ASP.NET控件。但幸运的是,许多JavaScript库出来了新的酷控件插入ASP.NET MVC。

软件全是关于折衷。您正在交易ASP.NET强大的控件,ViewState管理,回传等功能,并完全控制请求/响应周期。如果您对ViewState,Postback问题感兴趣并且对单元测试不感兴趣,那么ASP.NET MVC可能不适合您。

此外,在进行IronRuby的过程中,我将ASP.NET MVC看作非常强大的框架。