初识ASP.NET MVC
顾名思义,ASP.NET MVC 即为建立在ASP.NET平台上的一种(像web Forms一样)应用框架而该框架的设计思想是采用MVC架构模式。
一、什么是MVC呢?
MVC体现了关注点分离这一基本的设计方针,它将构成一个人机交互应用涉及的功能分为Model、Controller和View三部分。
Model是对应用状态和业务功能的封装,我们可以将它理解为同时包含数据和行为的领域模型(Domain Model)。Model接受Controller的请求并完成响应的业务处理,在状态改变的时候向View发出相应的通知。
View实现可视化界面的呈现并捕捉最终用户的交互操作(比如鼠标和键盘操作)。
Controller: View捕获到用户交互操作后会直接转发给Controller,后者完成相应的UI逻辑。如果涉及业务功能的调用,Controller会直接调用Model。在完成UI处理后,Controller会很据需要控制愿View或者创建新的View对用户交互操作予以响应。
关注点分离:一个典型的人机交互应用具有三个主要的关注点,即数据在可视化界面上的呈现、UI处理逻辑(用于处理用户交互式操作的逻辑)和业务逻辑。而关注点分离即将三者分离开来,采用合理的交互方式将它们之间的依赖关系降到最低
通俗易懂的说法:
模型,包含或表示了用户与之工作的数据,这些可以是简单的视图模型,它只是表现在视图与控制器之间传递的数据;也可以是域模型,它含有业务领域的数据以及处理这些数据的操作和转换规则
视图,用于把模型的某个部分渲染成UI(用户界面)
控制器,处理传入的请求,执行模型的操作,选择渲染给用户的视图
模型不涉及渲染UI或处理请求- 那些是视图和控制器的责任,视图含有把模型元素显示给用户的逻辑,其它的什么也没有,他们不直接感知模型,也不以任何方式与模型直接通信,控制器是视图与模型之间的粘合剂。请求来自客户端并由控制器进行服务,控制器选择一个相应的视图向用户进行显示,而且如果需要,执行模型上的一个相关操作
二、MVC对比其它模式
“智能UI”模式
最通用的设计模式之一称为智能UI(用户界面-译者注)。大多数的程序员都有过智能UI应用程序的经历,最常见的就是经常用的Windows表单或ASP.NET Web表单。
要建立一个智能UI应用程序,开发者要构造一个UI,通常是把一组组件或控件拖拽到一个设计界面或画布上,控件通常通过对点击按钮、按键、鼠标移动等发出事件与用户进行交互。开发者把代码添加到一系列事件处理程序中以对这些事件作出相应,事件是一小段代码,当一个特定组件上的某个事件被触发时,这段代码被调用,在做这些事情的时候,处理UI以及业务的代码全部都混在一起,根本没有任何关系分离。这种设计最大的障碍就是难以维护和扩展。域模型与业务逻辑和UI代码混合在一起导致了复制,要复制并粘贴同样的业务逻辑片段以支持新添加的组件。找出所有复制部分并进行修改可能很困难,在一个复杂的只能UI应用程序中,添加一个新特性而不打断原来已经存在的特性几乎是不可能的。
相比之下,MVC中各个模块都是各自封装好的,模型操作数据的逻辑只包含在模型中,显示数据的逻辑只在视图中,而处理用户请求和输入的代码只包含在控制器中,利用每个部分之间清晰的分离,应用程序在其生命周期中将更容易维护和扩充,无论它会变得有多大。
但不是说智能UI模式就没有优点,其快速切易于开发,组件和设计工具全面且容易使用,尤其对于界面的设计更显得占优势。当开发一个较简单的小型的应用程序时,智能UI应用程序可能是完美的解决方案,因为MVC太过复杂。