MVC学习(一) - - - - - MVC模式与ASP.NET MVC框架概述

MVC模式与ASP.NET MVC框架概述

(学习MSDN WebCast赵劼老师的《ASP.NET MVC框架开发系列课程(1)》笔记)

一、MVC模式

1、  MVC概述

A、 MVC模式是上世纪70年代末由Trygve Reenskaug提出,运用于Smalltalk平台上。

B、 它是一种表现模式(UI/Presentation Pattern

有人把它当作一种架构模式,这也可以。一种模式,有时当做表现模式,有时看作架构模式,要看它的适用场景,这并不矛盾。

学习一种模式,不要过于深究它的一些理念上的东西,尤其是它与其他模式的千丝万缕的关系

C、  三种角色

Model:用于存储数据并给View使用的组件(与领域模型概念不同)

View:根据Model数据进行内容展示的组件。同样的一个Model或者一系列的

            Model在不同的View中会展现出不同的样子(比如HTMLXMLJSON

            等)

Controller:接受并处理用户指令(操作Model),选择一个View并输出内容。

            在大多数情况下并不能当作业务逻辑组件来考虑,它的作用只是用于为了

能和MV协作的一个组件

                  

2、  MVC概述:协作

 

 

假如带箭头的一端是A,另一端是B,那么就表示A是被B引用的,即B是依赖于A

在很多情况下,ViewController也会有另外一个单向引用,也就是说ViewController之间的引用是双向的

 

3、  MVC概述:两种分离

A、 View和数据(Model)分离

a、  能够为相同的Model开发不同的View进行展示

b、  分离可视与不可视的组件,能够对Model进行独立测试(只有ViewModel的单向引用)

View是一个可视的组件,但是Model是不可视的,它有自己的状态,它包含自己的逻辑,因为它是不可视的,所以可以对Model进行独立测试(Model不依赖外部资源)

B、 View和表现逻辑(Controller)分离

分离逻辑与具体展示,能够对逻辑进行独立测试(只有ControllerView的单向引用)

 

4、  MVC的变种

A、 Observer模式

B、 MVP模式

 

二、MVC与三层架构模式

有人说MVC与三层架构类似,即View – UI LayerController – BL LayerModel – DA Layer,其实不然,MVC是表现模式(Presentation Pattern),三层架构是架构模式(Architecture Pattern),两者没有太多的可比性。

对于三层架构来说,UI层依赖于业务逻辑层,业务逻辑层依赖于数据访问层,三层之间是很明显的从上往下的分层。但是MVC是协作,没有一个明显的从上往下的层次关系,即使把MVC当作架构模式来用,它们之间也不是分层关系,而是三个组件之间的协作。

三层架构和MVC大体关系见下图:

 

         注:有时Model也会跟DA层有点关系

 

三、WebForms vs ASP.NET MVC

1、  WebForms的优点

A、 Web开发抽象成一个组件模型

B、 使用方便,入门容易

C、  使控件产业大大加强

经调查,为Asp.NET WebForms开发控件几乎是其它领域开发控件的总和。

                  

2、  WebForms的缺点

A、 封装太强

B、 入门容易,用好难

C、  不易进行单元测试,前后台不易配合

MVP诞生后,相当程度解决了没法进行单元测试的问题,但MVP会麻烦很多,会写更多的代码。

                  

3、  WebForms也在成长

4、  Asp.NET MVC的优势

A、 直接,Web开发就是Web开发

B、 易于对界面逻辑进行单元测试

Design for testability

C、  易于后台与前台开发人员的配合

 

5、  Asp.NET MVC是在Asp.NET平台下开发Web应用程序的另一种选择,并非为了取代WebForms

6、  ASP.NET MVC的特点

A、 一切都是可替换的

ViewEngine

Action Filter

B、 一切都是可测试的

C、  公开源代码

可以修改

不可重新发布

 

四、其他

1、  概念

表现模式、架构模式、领域模型、MVP模式、MvcContrib(为了支持ASP.NET MVC框架所提供的一些可替换的插件式的东西)、ORM框架

这些概念现在还没有完全理解清楚,以后遇到注意学习。

 

2、  问题

对于大型社区类的互动web网站,需要支持高并发访问,适合采用哪种模式?

      对于一个Web应用程序来说,它的性能瓶颈几乎或者99.9%不会出现在表现层的框架选择上,它出现的几乎都是数据库访问上,尤其是不是一个企业级的Web开发而是一个比如说Web 2.0的互联网应用的开发,它的性能几乎完全是在数据访问上,我们要做的事情1. 优化数据库的访问 2. 合理利用缓存。在表现层上,ASP.NET WebFormsASP.NET MVC都可以进行高并发的访问。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值