mvc 开发模式和框架类型
c#中的mvc是一种开发模式和框架类型 只是为了对象和层之间的独立,将使我们的维护变得更简单
益处很多 网上关于mvc的资料很多,可以找找看。
MVC的作用是将表现层、业务层(逻辑层)、数据控制层分离,
有利于代码的重用和扩展,降低系统的耦合。
表现层和业务层的分离,就是你说的界面和代码的分离,
这样的好处是,你底层实现的代码,不仅在你的ASP.NET中可以用,
就是改天你的老板突然说不用B/S架构了,那么除了界面部分,
你的业务层和数据控制层可以完全转移到winform中而不用做任何的改动。
其它的还有可以随时扩展代码(不同的类、方法等),继承,等等。
用MVC做的话,结构清晰,很有条理,框架层次分明。并且易扩展与维护。
我理解的MVC 就是实现了: 高内聚低耦合
内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述
的是模块内的功能联系;
耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访
问一个模块的点以及通过接口的数据。
它使模块之间的分工更明确了,又让模块之间的联系不紧密了
很多人說ASP.NET門檻低,那也只是說webform的門檻低,
試試MVC就知道不是那么容易的了,
不能用服務器控件在表單的處理方面就沒有原來那么方便,那么傻瓜了;
不過使用MVC可以強迫你去接觸更多的東西,學習更多的東西:比如js,JQuery。。。
JQuery在表單處理方面提供了極大的方便,另外再配合js和asp.net MVC 所提供的ajax功能,
做出來的項目跟用webform做的相比,相信你自己都會有成就感~~
提出MVC的目的无非是提高开发效率、提高可测试性。官方的ASP.NET MVC 1.0指南中指出(以下简称指南
),基于MVC的Web应用程序有如下优点:
[1]对复杂的程序管理更方便
It makes it easier to manage complexity by dividing an application into the model, the
view, and the ontroller.
[2]在开发上有更高的可控性
It does not use view state or server-based forms. This makes the MVC framework ideal for
developers who want full control over the behavior of an application.
[3]Routing使软件设计有更多灵活性
It uses a Front Controller pattern that processes Web application requests through a single
controller. This enables you to design an application that supports a rich routing
infrastructure.
[4]更加适合测试驱动开发
It provides better support for test-driven development (TDD).
[5]团队开发项目中有更高的可控性
It works well for Web applications that are supported by large teams of developers and Web
designers who need a high degree of control over the application behavior.
MVC (Model-View-Controller) 的网站应用程序开发架构,在 Java / JSP / J2EE 已行之多年,并曾衍
生出 Struts 等开放源码的 Framework (框架)。其主要目的是为了在开发复杂的大型网站时,能将不同
的功能作切割、提高程序代码的可读性,以及组件的可重用性,其结构如下:
● View (JSP) 只纯粹用来显示数据,不涉及数据来源的捞取、各种逻辑处理和运算工作。这层完全由
美工人员负责制作。此层如同 ASP.NET 中的 .aspx 前端页面。
● Model (JavaBean、EJB 组件) 用来存放独立且可重复使用的组件,包括:数据来源 (数据库) 的存
取、商业逻辑的程序代码,并应与 View 作完整的切割,以便保留系统日后扩充时的弹性。此层如同
ASP.NET 2.0 中的 App_Code 系统数据夹中存放的自订类、DataSet,或是自订的 .cs 或 .vb 类库。
● Controller (Java Servlet) 用来控制整个网站处理的「流程」,负责协调 View 和 Model 之间的
流程传递和转向,也要管理和指派由谁去接收使用者所提出的「请求 (request)」。当使用者在 View
里送出 request (Form 中控件的选项或输入数据后 submit、URL 网址、点选超级链接…等等) 后,
Controller 里定义的某些 method 会判断,要交由 Model 中的哪些运算逻辑去处理,然后再判断要将
处理结果传回哪一个 View 去显示出来。Controller 也是目前 ASP.NET 1.x / 2.0 所欠缺的部分 。
事实上在 Java / JSP 常引用的网站开发架构中,还可分为 Model 1 与 Model 2。Model 1 还可分为二
至三种,如下:
第一种是将 HTML 和 .NET (Java) code 混在一起,俗称意大利面式的写法,如:ASP。这种 Inline
code 最为人垢病的问题是程序可读性低、难以维护。
第二种是由与 .aspx 一对一对应的 Code-Behind code 直接存取数据库,亦即二层式的架构。但这样的
缺点是程序代码难以重复使用,且因为逻辑已经写死在固定的页面中,会造成系统日后扩充困难。
第三种是经由自订类别库、App_Code 数据夹中的自订类或软件组件,去存取数据库,或做商业逻辑的运
算 (JSP + JavaBean)。但此种做法仍缺乏流程的统一控管,导致每一支 ASPX (JSP) 都要验证使用者身
份、验证 request 的参数、处理 Session、做例外处理,甚至包括 View 里的编码原则、语系设定,都
得在每一支 ASPX 对应的 Code-Behind 去处理,也因此不适合大型系统的开发、扩充和维护。这种架构
虽然也能做到虚拟式的三层式或多层式架构,但也是目前 ASP.NET 2.0 的极限。
至于 Model 2,即俗称的 MVC Framework,则加入了 Controller 的部分,将流程及事件交由中心控管
,除了可让整个系统的运作流程更为明确,有效切开各层的工作,亦可避免让 View 里的 Code-Behind
去处理 Model 中的数据库存取、商业逻辑运算,也不必再到处撰写「流程传递和转向」的程序代码,而
改由中央的 Controller 程序代码 (action method) 来统一控管。
但 MVC 架构也有其缺点,例如开发人员需要另外花时间转换观念及学习 Framework,尤其是 .NET 的开
发人员或团队,因为过去较没有 Controller 统一协调流程的观念,势必得重新习惯,将很多原本写死
在各个页面中的程序代码,改写进 Controller 里面。而且系统在设计阶段时,即要先协调好各个类别
对象彼此间数据交换的格式及做法,因此势必得拉长系统事先的分析、规划时程。但若能有像 Struts
或 .NET MVC Framework 这样现成的框架可套用,则日后开发大型系统时,即可望达到事半功倍的效果
。