ASP.NET MVC 5.0——概念知识

来源:互联网 发布:js为input输入框赋值 编辑:程序博客网 时间:2024/06/05 15:24

1.MVC

MVC模式将可视化UI元素的呈现、UI处理逻辑和业务逻辑分别定义在View、Controller和Model中,但是对于三者之间的交互并没有明显的限制。当我们采用MVC的思想来设计UI的时候,应该根据开发框架(比如windows forms、wpf和web forms)的特点对三者设置一个明确的界限,同时为它们之间的交互制定一个更为严格的规则。

2.MVP——MVC的变体

MVC混乱的交互主要体现在允许View和Model绕开controller进行单独交流,在MVP中得到解决。MVP不仅仅避免View和Model之间的深度耦合,更进一步降低Presenter对View的依赖,Presenter依赖的是一个抽象化的View,这使得定义在presenter中的UI处理逻辑变得易于测试。MVP三者之间的交互体现在,Presenter对Model的单向依赖,View与Presenter之间采用怎样的交互方式使整个MVP的核心。按照两者之间的交互方式,以及View本身的职责范围,将MVP分为两种模式:PV(Passive View)和SC(Supervising Controller)。

    2.1 MVP——PV

针对UI元素的操作不是由View自身来主动控制,而是被动的交给Presenter来操控。PV模式将所有UI处理的逻辑定义在Presnter中。由于Presenter需要在控件级别对View进行细粒度的控制,往往会使原本简单的逻辑复杂化。对于复杂的富客户端,往往采用SC模式。
    2.2 MVP——SC

对于交互操作的响应都是单向的,无论是定义在Presenter中被View调用的方法,还是定义在接口中被Presenter调用的方法,最好都没有返回值。除了采用调用方法的方式,还可以采用事件注册的方式实现view和presenter之间的交互。定义在接口中最好只包含方法,而不包含属性。Presenter所需的view的状态应该在接受到view发送的用户交互请求的时候一次得到,而不需要从view的属性去获取。SC模式将部分简单的UI处理逻辑转移到View中。

3 Model 2——基于MVC的架构模式

最初提出MVC是基于桌面应用的架构模式,并不太适合web本身的特性。web应用与桌面应用的主要区别在于:web应用是通过浏览器与应用进行交互,交互请求和响应是通过HTTP请求和响应来完成。
Model 2作为MVC的变体被提出来,这是一种源于JAVA阵营的web应用架构模式。Model 1也是基于MVC的架构模式,其将数据的可视化呈现和用户交互操作的处理逻辑合并在一起。Model 1适合简单的web应用,对于复杂的多采用Model 2
Model2的交互流程:通过一个拦截器对抵达web服务器的http请求进行拦截。一般的web应用框架都提供这个拦截机制。这个拦截器根据这个请求解析出目标Controller的类型和对应的Action方法的名称,随后目标Controller被激活,相应的Action方法被执行。Action执行过程中,可以调用Model获取相应的数据或者改变其状态。Action方法执行到最后阶段一般会创建一个View,最终被转化为HTTP响应的形式返回到客户端并呈现在浏览器中。

4.ASP.NET MVC——由Model 2模式设计

自定义HttpModule:对http请求进行拦截以实现对目标controller和action的解析
自定义HttpHandler:对目标Controller的激活和Action方法的执行
0 0
原创粉丝点击