SCI论文(www.lunwensci.com):
摘要:伴随信息化时代的发展,软件开发模式也在实际应用中逐渐成型和完善,现今开发项目越来越大,而各种开发模式的优缺点也凸显出来,开发者们经过不断的技术优化和改进,已经逐步发展出基于MVC模式的三层架构的框架,并且开发出了一系列的框架技术,让软件开发工作变得越来越轻松。
关键词:软件开发;MVC;三层架构
Research on Three-layer Architecture Based on MVC Pattern
DU Chenglong
(Hubei Land Resources Vocational College,Wuhan Hubei 430090)
【Abstract】:With the development of the information age,the software development model has been gradually formed and perfected in the practical application.Nowadays,the development projects are getting bigger and bigger,and the advantages and disadvantages of various development models are also highlighted,after continuous technical optimization and improvement,developers have gradually developed a three-layer framework based on the MVC pattern,and developed a series of framework technology,making software development easier and easier.
【Key words】:software development;MVC;three-tier architecture
0引言
随着软件开发技术的发展,许多开发过程中需要实现的关键技术已经实现了封装及简化,并随着开发模式及开发架构技术的演变,使得先前开发感觉很难的技术,现在已经变得相当简单轻松。这些都得益于先辈们的不懈努力和不断的技术改进,作为一个开发者就必须要在不断地学习过程中,掌握最新的开发技术。不管框架技术如何变化,都离不开实现的原理,只有理解了最基本的原理后,并且在理解原理的基础上,要熟悉每种技术的优缺点,这样我们就能利用各种技术的优势高质量高效地进行软件开发,开发过程就会变得相当简单。之所以很多人觉得软件开发很难,其实就是没有充分理解各种架构技术的优缺点,也没有充分利用好各种架构技术的优势。
1两种架构技术概述
如果没有细心研究MVC及三层架构技术的人,可能会认为MVC就是三层架构,这是非常错误的认识,虽然两者都是软件开发过程中的分层技术,但两者实现的过程是有很大区别的,并且两种架构实现的优势还不一样,甚至是互补的。这两种技术正是基于实际开发过程中遇到的问题出现的解决方案,这两种分层技术分别至少解决了实际问题中的一个重大难题。下面先了解基于Java语言的MVC和三层架构的概念。
1.1 MVC概述
MVC是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式[1],提供了一种按功能对软件进行模块划分的方法。MVC设计模式将软件程序分为3个核心模块,模型(Model)、视图(View)和控制器(Controller)。早期的MVC可以单独开发出数据库访问系统,即在Model层就包含有数据库的读写操作。这种模式最大的优势就是可以为一个模型在运行时同时建立和使用多个视图,变化—传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步[2]。正是这种优秀的视图与模型数据及时同步的特征,使得它成为了优秀的前端解决方案。目前已经有成熟的应用框架,比如Spring MVC、Struts等,这些框架在处理显示数据和模型数据之间的同步时,甚至可以实现自动化。下面先解释一下MVC的概念。
M指Model,即数据模型,这里主要指实体类,早期的概念是通过EJB组件实现的,EJB组件还包括了数据库访问操作,在项目开发实现过程中,发现一旦需要进行修改,会牵扯到很多功能,修改难度变大,所以后来就逐步演化为单纯存取数据用的实体类。实体类定义主要与数据库中的表有一对一的关系,也就一个表对应一个实体类,这些实体类主要用于存储数据和传输数据。
V指View,即视图模式,这里指与用户交互的界面,主要是用HTML、CSS、JS及JSP等技术实现,目前已经出现很多功能强大的二次开发前端技术,比如jQuery、Bootstrap、Vue.js等,这些前端技术已经将交互界面设计变得非常简单。
C指Control,即控制模块,这里主要指视图与模型转换的流程控制,控制模块主要完成流程的方向选择,比如分支条件下,供选择的View有两个,至于选择向哪一个View填写数据,就是由Control根据条件选择实现的,这里主要用Servlet等技术实现的。
1.2三层架构概述
早期.net平台应用最广泛就是基于三层架构的开发[3],三层架构能够把实际工作中复杂的业务流程独立出来,并能很好地解决业务流程过程中出现的业务数据处理问题。正是因为这种优秀的业务逻辑处理解决方案,三层架构也就成为了解决复杂的业务流程处理非常好的选择。目前市场上出现了一些优秀的后台开发框架技术,比如Spring、MyBaits、Hibernate等。下面解释一下三层架构的概念。
(1)Web表现层:这里主要指与用户交互完成的功能,随着技术的发展,Web表现层完成的功能越来越复杂,而随着技术的发展,发现三层架构在表现层的实现上出现了短板,三层架构虽然能解决复杂的逻辑问题,但在视图与模型数据的转换过程中,表现得很无力。但MVC模式在解决表现层问题时就显得相当轻松,所以MVC模式已经成为解决Web表现层的独立技术。
(2)业务逻辑层:这里主要指业务逻辑上的处理,当Web表现层的需求有复杂的数据处理请求时,可能会涉及到多个数据表处理,这时候,就需要在业务逻辑层完成数据转换处理,比如,订单信息处理,这里订单信息就涉及数据库中与购买者相关的订单信息表以及与商品信息相关的订单明细表,虽然是两个表,但在逻辑处理上存在完整的事件,此时就需要专门在业务逻辑层进行同步处理,业务逻辑层实现的代码定义在Service层。
(3)数据访问层:这里主要指实现针对数据库中单表的增、删、改、查等基本操作的流程处理,数据访问层主要是面对数据库,在逻辑上要求简单,即主要完成单表的处理,实现的代码定义在Dao层中。
上面介绍了MVC和三层架构的基本概念,也对每一层的定义做了详细的解释,其实在分层开发中,经常还需要编写一些通用辅助的功能代码,这些功能代码可以让编写的代码结构更清晰,这样的功能代码通常放在辅助层。
早期这两种分层方案都是独立应用产生的,在项目开发过程中,随着项目的需求增加,项目开发的复杂度也越来越高,随之发现两种方案的优缺点表现得越来越突出。开发者们就将这两种方案分别进一步细化分层,逐步解决对应的架构中出现的问题。细心的开发者们注意到,两种分别细化后的方案出现了相同的功能层,很显然这是技术优化发展的结果,两种方案细化趋同,也正说明了开发模式越来越成熟。
2两种模式分析
两种模式都是优秀的分层开发技术,但各有优缺点,并且细化后的方案出现相同的功能层,聪明的开发者很容易想到能不能将两者融合在一起,各取优点组合成新的模式是不是就是更优秀的解决方案呢?答案是肯定的,并且目前这种基于MVC模式的三层架构已经成为开发主流,.net平台也开发出了对应的ASP.NET MVC技术来适应这种优秀的融合模式。下面就两种模式进行融合分析。
2.1 MVC模式的优缺点分析
由于MVC本身就是一种分层开发系统模式,只是在设计过程中,数据模型是独立于视图的,所以可以把一个数据模型独立地移植到新的平台工作,需要做的只是在新平台上对视图和控制器进行新的修改,这样视图效果设计任务和数据逻辑设计任务可以由不同的开发者完成。正是基于早期这种MVC模式的优点,现在已经逐步演化成专门用于解决Web前端开发的优秀解决方案。
但是早期MVC模式也有弊端,最明显就是数据访问和处理过于集中,导致熟练编写显示代码的开发者难于实现业务逻辑的处理,所以MVC模式在处理业务流程时就显得力不从心。早期数据库操作的方法是写在JavaBean中的,即现在所谓的实体类和数据操作类合在一个文件中的,随着应用的发展和技术的需求,实体类和数据库操作类已经分开编写,那么目前的Model层就只有用于数据存储和传输的实体类,并不包含数据访问的代码。
MVC模式主要实现原理是通过视图页面与Servlet进行交互,完成数据的显示与存储的转换,数据本身没有变。这种实现也可以通过JavaScrip技术实现,目前流行的jQuery、Bootstrip、Vue.js等前端框架技术就是这样实现的,由于目前流行的后台框架都对JavaScrip技术的支持,所以这些技术可以与后台框架进行无缝衔接。
2.2三层架构的优缺点分析
三层架构模式的提出明显就是为了解决开发过程中业务流程复杂的问题,将复杂的问题简单化,并且还能分工合作,很显然三层架构模式就是非常好的解决方案,很多复杂的业务流程只要进行分块及层次化后,其功能实现就变得轻松简单了,其目的就是实现“高内聚,低耦合”[4]。通常的做法就是:将业务流程中的业务处理过程在业务逻辑层编写完成,在实现过程中尽量不要考虑具体详细的数据库操作,只需要调用相应的数据库操作方法即可,这样处理就可以很容易实现业务流程代码;数据访问层代码尽量不要考虑业务流程处理的功能,以实现数据库单表常规操作为主,这样处理就是为了将功能实现简单化。
但是三层架构也有一些弊端,最明显就是视图与数据模型转换问题,它遇到了与MVC相反的开发难度问题,熟练编写业务逻辑代码的开发者难于实现交互性很强的视图显示设计。三层架构的优势在于后台处理能力,而MVC的优势在视图设计中是独立,并且可以很轻松做到视图与模型数据及时同步,两者的优缺点也正好是互补的,很显然两者融合是必然的趋势。
2.3两种模式融合分析
聪明的开发者想到将MVC与三层架构融合在一起,直接降低项目整体开发难度,通过团队分工合作方式的组织开发,可以大幅提高开发效率同时也降低开发难度,所以现在项目的开发一般分为前端开发和后台开发两部分。
前端开发主要就是使用MVC模式实现,这里Model层只有实体类,并无数据库的操作。后台开发则以三层架构中的业务逻辑层和数据访问层为主进行实现,而三层架构中的Web表现层很显然就是由MVC实现的。特别注意,Model实现只有实体类,主要用于整个框架的数据存储和传输,很显然它有双重作用,可以把它理解为MVC的Model层,它同时又贯穿于三层架构进行数据传输,又可以把它理解为三层架构的辅助层。具体的整体框架如图1所示,从图1可以看到客户与Web表现层的控制信息是交互的,这是因为包含HTML等静态页面内容的JSP文件其实是编译为Servlet类执行的,即视图页面和Servlet在同一层,这也导致交互性前端开发变得非常灵活,而后台开发上要求控制信息又是单向的,这为开发安全性比较高的系统提供了保障。数据信息在整个框架中始终是被处理的对象,它主要是完成数据信息的存储和传输,根据操作特征,确定数据传递是双向的。
3结语
基于MVC模式的三层架构已经成为目前主流的开发框架,不仅Java编程实现了这种模式,.net平台下的开发也实现了这种模式。基于MVC模式的三层架构既解决了视图设计独立简化问题,又解决了后台数据复杂逻辑处理问题,前端和后台都是通过解耦的方式将复杂的问题简单化,从而达到降低整体项目开发难度。
参考文献
[1]黑马程序员.Java Web程序设计任务教程[M].北京:中国工信出版集团,人民邮电出版社,2017.
[2]李容.基于MVC模式的Web应用研究[J].软件导刊,2010(01):20-21.
[3]徐文锋.软件开发中的三层架构技术分析[J].无线互联科技,2015(22):46-47.
[4]陈辉.软件工程中的解耦核心技术MVC和三层架构比较[J].廊坊师范学院学报(自然科学版),2014,14(4):44-46.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/41632.html