ASP.NET MVC =具有.NET类库的经典ASP。真?

时间:2009-02-17 18:00:18

标签: .net asp.net-mvc

This blogpost和我们的一位高级开发人员认为Web开发与ASP.net MVC完全一致。它不是一个关于VB脚本与VB9 / 10或其他最新版本的问题。除了路由引擎,帮助程序类和方法。您可以提出哪些有力的论据

  

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

7 个答案:

答案 0 :(得分:20)

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

从响应处理中分离请求处理与ASP完全不同。

答案 1 :(得分:12)

该论证的工作假设是MVC中的所有内容都是视图。

现实情况是,视图是这个难题的一小部分,并且认为整个事物表明对模式和框架的理解都非常缺乏。你不能在没有先教育这个人的情况下进行辩论,并且在教育这个论点的行为中会变得不可靠。

要解决博客文章本身,是的,您通过放弃丰富的控件确实失去了很多功能,特别是如果您正在谈论从第三方供应商处购买的控件。然而,现在有完整的javascript小部件套件,如果没有比asp更好的东西,它们是免费的。不仅如此,使用ASP.net意味着购买一个非常复杂的框架,大约90%的时间都可以使用。这个问题是,90%对于任何非常重要的事情来说都是不够的,并且围绕该额外10%的框架进行工作可能会生活在地狱中。另一件事是,购买这种复杂性带来的表现绝对是糟透了。

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

答案 2 :(得分:9)

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:3)

  

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

我同意维护带有意大利面条代码的页面可能会更难。

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

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

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

答案 5 :(得分:1)

我是该博文的原作者,以下是我对此的看法:

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视为一个非常强大的框架。

答案 6 :(得分:0)

新的ASP.NET MVC支持语法的View组件,它看起来像ASP 3.0。

事实上,这种语法(< %%>)始终可用于ASP.NET WebForms。

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

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