2013-05-09 87 views

回答

1
  • 松散耦合

ASP.NET MVC工作与抽象超过标准的HttpContext类,如HttpContextBase,HttpRequestBase,HttpResponseBase,HttpSessionBase它允许在隔离更容易单元测试,因为这些类是抽象的,可以被嘲笑。在传统的ASP.NET WebForms中,单元测试代码要困难得多,因为它依赖于真正的ASP.NET上下文类,它们几乎不可能嘲笑,因为它们需要真正的上下文才能工作。恕我直言,这是关于ASP.NET MVC与传统WebForms相比最好的事情之一。

还你的各个方面之间更清晰的分离:模型逻辑,逻辑视图和控制器逻辑。这并不意味着在传统的WebForms中无法实现这种分离。如果你遵循标准的方法,把所有的东西都放在视图和代码背后,那就更难了。

    在HTML

相反,经典的ASP.NET Web窗体在其中放置一个用户控件中,在运行时生成的HTML为您的WebForm(远用以下控制此生成的HTML)

  • 完全控制,在ASP.NET MVC View中,你是在编写HTML,因此你可以编写任何你喜欢的HTML。

  • 0

    WEEL虽然你的问题很模糊的还是我假设你用asp.net比较和你什么地方在互联网上阅读这条线。

    1. 松耦合 - 这主要用于开发完整网站的单元。在Asp.net MVC或任何其他MVC模式MVC本身代表模型视图控制器,所以这是关注的分离和事实,即每个项目是不是它意味着做什么ie-view处理所有的用户界面层意味着每个单独的实体可以单独进行测试。

    2. 在HTML完全控制 - 在传统的asp.net标记是由asp.net框架产生尽可能多的服务器控件使用。在asp.net MVC的所有标记写入或至少是可编辑的用户

    来感受过它了解更多关于MVC模式,以及如何在asp.net其使用MVC

    +1

    正是夏尔马先生 – 2013-05-09 16:10:08

    0

    的两个想法(有点)是分开的。这可能是你混乱的地方。

    ASP.NET MVC(和一般的MVC模式)被认为是松耦合由于每个关注 - 模型,视图和控制器 - 处理应用程序的不同方面。模型=数据,视图=用户界面,控制器管理这两者和业务逻辑之间的交互(如果你使用MVC的洋葱模式,可以进一步分离出更多的子层)。这种关注的分离可以改进用户测试,模拟和重构的便利性,这与WebForms所没有的一样(或者至少不那么容易)。

    您完全控制HTML的原因是由于ASP.NET的历史。 ASP.NET最初是从WebForms开始的。WebForms是为了响应非常喜欢他们能够创建的应用程序的“拖放”和“点击”范例的开发人员而创建的。拖动一个按钮到屏幕上,双击以获得与其相关的操作,编写一些代码,完成!很容易。

    与此同时,这种缓解隐藏了很多正在发生的潜在“东西”。 HTTP在设计上是无状态的。 WebForms专门隐藏了所有这些无状态,并且实际上试图通过围绕管理ViewState的许多不同技术使HTTP呈现为有状态。另外,这个拖放范例删除了人们直接对其HTML进行的控制。通过让你直接在视图中编写HTML,ASP.NET MVC“修复”(有些人认为这不是一个修复 - 它取决于你关心的内容)。因此...更多的控制。

    有关的WebForms模型这里其他的一些好的信息:https://stackoverflow.com/questions/46031/why-does-the-asp-net-web-forms-model-suck