您的位置:首页 > 运维架构 > 网站架构

MVC,N层架构的一点理解

2012-12-05 23:57 246 查看
参考:

http://developer.51cto.com/art/200904/122026.htm

http://www.jdon.com/31894/5

/article/1407392.html

MVC是一种模式。一种实现手段、方式。

首先N层结构是一种软件抽象的层次结构,是对复杂软件的一种纵向切分,每一层次中完成同一类型的操作,以便将各种代码以其完成的使命作为依据来分割,以将低软件的复杂度,提高其可维护性。一般来说,层次之间是向下依赖的,下层代码未确定其接口(契约)前,上层代码是无法开发的,下层代码接口(契约)的变化将使上层的代码一起变化。

MVC模式是一种复合设计模式,展示层-View;业务逻辑层-Control;持久层-Model。首先MVC中的三个事物之间并不存在明显的层次结构,没有明显的向下依赖关系,相反的,View和Model往往是比较独立的,而Control是连接两者的桥梁,他们更像是横向的切分。这样一来就出现一个结果,MVC中每个块都是可以独立测试的,而三层结构中,上层模块的运行测试势必要提供下层代码或者提供相同接口的桩。相对来说,MVC复杂得多,但是结构更清晰,耦合性更低。

另外,MVC中每一块内部特别是Model内部经常被设计为多层的。在我认为的一个良好的MVC模式构建的结构中,Control是核心,小且较为稳定的,可以作为一个核心框架来提供,有扩展点,但基本上可以简单配置不需要任何代码就可以运行。而View则可能是一套或多种可选择的视图引擎,决定了软件展示给用于的界面,使用时的主要工作量在于扩展点以及根据需要而数量不同的视图模板。Model则是业务提供者,决定了软件提供的功能,其内部可能是一些普通的类或者是实现了某些接口的类,在这一块当中可能根据业务的不同而色彩缤纷,对于复杂的软件可能会分成很多层,如业务逻辑层、业务提供层、系统提供层、数据提供层、数据访问层等。

所以:

J2EE[以SSH说事]大体分为:WEB层、业务层、持久层。千万别认为:WEB层=View,业务层=C,持久层=M。事实上,MVC只是WEB层的实现模式而已。而Struts正是一种体现MVC模式的框架,也就是说整个WEB层都由Struts来构建,从这种角度来看(strut有三层的MVC了),后面加入的SPRING,HIBERNATE都是其他的层,谓之多层架构。

Struts中的MVC划分:

Struts1:由ActionServlet和ActionMapping对象构成MVC的C (controller); struts的标签+JSP(或者其他模板引擎)属于V(View),而Action和ActionForm可以看成是Model

struts2:Model对应业务逻辑组件,它通常用于实现业务逻辑方法以及以及与底层数据库的交互等;View对应视图组件,通常是指JSP页面,但也适用于其他视图显示技术,如Velocity或者Excel文档;Control对应系统核心控制器和业务逻辑控制器,系统核心控制器为Struts2框架提供的FilterDispatcher,它根据请求自动调用相应的Action。而业务逻辑控制器是指开发人员自行定义的一系列Action,在Action中负责调用相应的业务逻辑组件来完成处理。

其实,根据上面,我理解整个SSH就是一个MVC模式的实现,Struts体现了MVC,SPRING+HIBERNATE只是业务逻辑组件里的分层实现!

未完!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: