软件体系结构结课论文_第1页
软件体系结构结课论文_第2页
软件体系结构结课论文_第3页
软件体系结构结课论文_第4页
软件体系结构结课论文_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国矿业大学计算机学院2011级本科生课程报告课程名称软件体系结构报告时间2014629学生姓名学号专业任课教师任课教师评语任课教师评语(①对课程基础理论的掌握;②对课程知识应用能力的评价;③对课程报告相关实验、作品、软件等成果的评价;④课程学习态度和上课纪律;⑤课程成果和报告工作量;⑥总体评价和成绩;⑦存在问题等):成绩:任课教师签字:成绩:目录TOC\o"1-5"\h\z1软件体系结构的性质、研究意义和目标41.1软件体系结构的性质.41.2软件体系结构的研究意义.41.3软件体系结构的目标5软件设计风格、软件应用框架和软件设计模式的特征和区别52.1软件设计风格52.2软件应用框架52.3软件设计模式52.4三者之间的区别6人力资源管理系统的分析6系统目标63.2系统需求63.2.1功能需求63.2.2质量需求.73.3性能需求83.3.1数据精确性83.3.2时间特性8人力资源管理系统架构分析104.1•系统体系结构选择11C/S模式结构分析11B/S模式结构分析114.1.3人力资源管理系统体系结构-一B/S结构124.2设计模式在本系统中的应用12IOC模式12MVC模式134.2.3本系统采用的设计模式144.3人力资源管理系统框架15SSH框架介绍15Struts架构15Spring架构16Hibernate架构16SSH的优势17SSH框架在本系统中的应用18中间件在系统中的运用205.1中间件定义205.2中间件分类205.3中间件作用235.4中间件目标205.5本系统中采用的中间件216.S0A软件体系结构226.1.SOA概述226.2.SOA组成元素22WebService的主要协议SOA在人力资源管理系统中的应用231■软件体系结构的性质、研究意义和目标1.1软件体系结构的性质软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。(1)软件体系结构是软件设计过程的一个层面,是相对独立的、有价值的软件设计方法的总结,可作为软件开发指导性的策略和途径。(2)强调设计过程,而非分析的过程。分析的目标是理解和表示,设计的目标是实现。(3)非用户的观点及非功能的观点。对于用户,结构是软件系统功能的组合。对于设计者,结构是为特定目标而设立的软件成分以及成分之间的关系。1.2软件体系结构的研究意义软件体系结构是软件系统的高级抽象,体现根本性的系统设计思路。这将进一步影响到开发资源的配置和开发团队的组织等其他方方面面的开发活动,并影响着最终的软件产品质量。(1)对系统分析的意义在系统分析阶段,软件体系结构发挥着巨大作用。一方面,可以使问题得以进一步抽象,使整个系统更易于被系统分析设计人员把握,完善对系统的理解。另一方面,帮助软件系统的各有关权益方形成统一认识,互相交流。(2)对软件开发的意义软件体系结构代表了系统早期的设计决策。与开发、设计、编码或运行服务及维护阶段相比,早期设计决策的处理难度最大,对系统的生命期的影响也最大。(3)对软件质量控制的意义。软件体系结构在很大程度上确定了系统是否能达到其需求的质量特性。软件质量特性可分为两类:第一类是功能、性能、安全性及可靠性等;第二类是可适应性、可移植性、可重用性等。(4)对软件重用的意义重用是提高软件开发效率、保证软件质量的重要手段。软件体系结构有利于形成完整的软件生产线。体系结构良好的软件系统中,不仅构件库能够重用,还可以在更高层次上实现软件子系统乃至软件系统框架的重用。(5)对系统演化的意义对软件系统的演化过程中,维护人员需要不断地进行调整、修改、增加新的功能或构件等工作。解决好系统演化阶段的开发问题具有重要意义。1.3软件体系结构的目标软件体系结构是一系列决策和基本原理的集合,这些决策的目标在于开发高效的软件体系结构。在体系结构设计中所强调的基本原理是系统的可理解性、可维护性和可扩展性。软件设计风格、软件应用框架和软件设计模式的特征和区别2.1软件设计风格软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。风格是表达特定系统元素和组织方式的通用范例(idiomaticparadigm)。软件体系结构风格,是在构件和连接子的层次所描述的可重复使用的软件设计问题解决方案。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。软件体系结构的设计风格大致可以分为5种风格:数据流风格:批处理序列;管道/过滤器。调用/返回风格:主程序/子程序;面向对象风格;层次结构。独立构件风格:进程通讯;事件系统。虚拟机风格:解释器;基于规则的系统。仓库风格:数据库系统;超文本系统;黑板系统。2.2软件应用框架对于特定的一类软件,框架构成了一种可重用的设计。框架比体系结构更具体。更偏重于技术层面。同一软件体系结构可以通过多种框架来实现。框架构成了通用的、具有一般性的系统主体部分,二次开发人员像做填空一样,根据具体业务,完成特定应用系统中与众不同的特殊部分。1.在应用方面,框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;在目标方面,框架是可被应用开发者定制的应用骨架。2•框架是一种软件,是应用程序的半成品。它可以供系统开发者选用,以完成系统的开发。3.框架解决的是某个特定范围即领域的问题。每个框架都有自己的目标领域,它并不能满足所有人的所有需求。2.3软件设计模式软件设计模式是软件问题高效和成熟的设计模板,模板包含了固有的问题的处理逻辑,强调处理逻辑采用方式的直接复用。对于软件体系结构的设计模式广义定义为:可解决一类软件问题并能重复使用的软件设计方案。狭义定义为:设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。是在类和对象的层次描述的可重复使用的软件设计问题解决方案。设计模式的四要素为:模式名称(patternname)、问题(problem)、解决方案(solution)、效果(consequences)。模式名称就是助记名,用一两个词描述模式的问题、解决方案和效果。问题描述应该在何时使用该模式。有时候,问题部分会包括使用模式必须满足的一系列先决条件。解决方案描述设计的组成成分,它们之间的相互关系及各自的职责和协作方式。模式像一个模板,可应用于多种不同场合。解决方案并不描述一个特定而具体的设计,而是提供设计问题的抽象描述,用具有一般意义的元素组合来解决这个问题。效果用来描述模式应用的效果及使用模式应权衡的问题。2.4三者之间的区别三者之间的区别如下:应用领域。框架给出的是整个应用的体系结构;而设计模式则给出了单一设计问题的解决方案,并且这个方案可在不同的应用程序或者框架中进行应用。内容。设计模式仅是一个单纯的设计,可被不同语言以不用方式来实现;而框架则是一种或多种设计模式和代码的混合体,编程者可以用各种方式对框架进行扩展,进而形成完整的不同的应用。移植性。设计模式比框架更容易移植:框架一旦设计成形,以其为基础进行应用的开发显然要受制于框架的实现环境;而设计模式是与语言无关的,所以可以在更广泛的异构环境中进行应用。框架是软件,而设计模式是软件的知识体,提升框架的设计水平。人力资源管理系统的分析3.1系统目标设计开发人力资源管理系统的目的在于通过人力资源管理系统可让人力资源管理专员在最短的时间内完成各项日常工作,并减少管理过程中的不必要的浪费,为企业节省成本,从而可让管理者有更多的精力思考企业的发展。人力资源管理系统的具体目标可描述如下:系统必须符合企业人力资源管理流程。系统可维护性比较高,且配置方便,适合中小企业使用。界面友好,需提供尽可能多的操作提示,以减轻用户的记忆负担。系统需在用户可忍受的时间内完成用户的基本请求。系统运行稳定,安全可靠。系统可对人力资源管理流程中的所有信息进行管理。3.2系统需求3.2.1功能需求

根据对系统的业务需求分析,可以得到系统包含的基本功能。然后利用模块化设计思想,可将本系统划分为部门管理模块、招聘管理模块、员工管理模块、培训管理模块、考勤管理模块、薪资管理模块以及系统管理模块。每个模块负责处理不一样的功能。部门管理模块由人事部门管理员操作,主要的功能有添加、删除以及修改公司部门相关信息。招聘管理模块负责处理企业招聘问题。它包含的功能主要有各部门颁布招聘计划、对应聘人员进行录用和不录用处理以及将录用成功的应聘人员的基本信息存储进入系统数据库等。员工管理模块负责处理员工基本信息。它包含的功能分为两部分,一部分即添加和删除员工信息,一部分即管理员工信息调整工作。培训管理模块负责添加以及删除培训计划,并可查询相关培训信息。考勤管理模块负责记录员工的考勤信息,以便日后利用其对员工进行职位变动依据。薪资管理模块负责记录每个员工的工资信息,以便日后作为员工月工资的凭据。系统管理模块使用者为系统管理员,其包含的功能为用户管理、数据恢复以及数据备份三种功能。根据上述分析可以得到系统的功能模块结构,如图3.2:企立人力號瀕管理系统刖除培训信息舔加培训信息详看员工信息员工查询删除员工離加员工査看招嗚人员册除招嗚人员娥加招疇人员查看部门册除部门娥加部门招聘佶息查询数据备份用户管理数堀恢复祥看培训信息删除考動信必企立人力號瀕管理系统刖除培训信息舔加培训信息详看员工信息员工查询删除员工離加员工査看招嗚人员册除招嗚人员娥加招疇人员查看部门册除部门娥加部门招聘佶息查询数据备份用户管理数堀恢复祥看培训信息删除考動信必下质量需求:可靠性人力资源管理系统中存储着公司的核心信息,如员工信息以及工资信息等,每一类信息都不能被泄露或丢失,否则会影响公司人力资源的稳定性,由此为了保证系统具备高可靠性,本文采取了如下措施:首先对进入系统的用户进行严格身份验证,并采取措施防止不法分子进行注入式攻击,然后为电脑安装杀毒软件并进行定期维护,以确保系统具备高可靠性。可扩展性系统应充分考虑到企业的发展需求,当遇到系统功能调整或人力资源管理流程改变等情况时,系统须作出及时的对应调整,因此系统须具备可扩展性,本文为系统预留了一定的扩展接口,以便满足企业需求。可用性在人力资源管理系统的开发过程中,紧密联系人力资源管理的实际需求,从而保证系统可用于企业的实际管理中。同时为系统设计了操作提示友善的界面以加强用户对系统的可操作性。可维护性本文选择SSH框架用于开发人力资源管理系统的目的之一就在于提高系统的可维护性,SSH框架中三种技术的组合实现表现层、业务层以及数据层的分离,从而可使系统结构更加清晰和透明化,从而管理人员能更快发现系统问题所在。这对于系统维护都是非常有效的。安全性本系统的系统架构,以及权限机制可以保证系统的安全性。从系统架构看,本系统采用B/S模型,从而使服务器数据源与客户端分离,保证了数据的物理独立性;其次,本系统的用户授权机制通过权限的定义管理实现,通过对不同用户定义不同能进行的操作权限,限定用户的操作权限,实现对用户的授权。3.3性能需求3.3.1数据精确性当用户查询信息时输入不合法的条件时将给出相关提示并不能得到合适的结果。3.3.2时间特性本系统在正常的网络环境下,应能够保证系统的及时响应:小批量的业务处理的响应时间在1〜2秒;大批量的业务处理和查询的响应时间控制在10〜20秒以内;更新处理时间:1秒;数据的转换和传送时间:2秒;系统设计原则系统设计建立在需求分析的基础上,需求分析阶段先确定系统功能模块组成,然后在设计阶段对功能模块的工作流程进行详细设计,以便为系统代码实现奠定基础。为了使开发的系统达到预期目标,那么系统必须按照一定的标准进行总体设计,具体可总结为如下几方面:实用性本文所实现的人力资源管理系统的功能处理流程必须符合企业实际的管理流程,只有这样其才具备实用性,才能直接为企业人事管理部门服务,这也决定了系统是否具备开发意义,这也是系统设计阶段必须遵守的第一准则。系统的使用者包括人事部门管理员以及企业员工等,系统是否满足他们的使用需求是衡量系统实用性的最重要标尺。因此需针对系统包含的业务需求,设计界面友好、操作方便、结构清晰及扩展性好的人力资源管理系统,以便加强系统的实用性。先进性开发系统所选择的技术,必须具备成熟可靠的特性,开发平台和系统运行环境都应选择当前主流产品。同时系统的整个研发过程都必须遵循软件工程思想,并综合软件构建的最新技术进行系统开发,以便开发的系统能满足用户的性能需求。根据此设计理念,本文使用当前流行的J2EE平台进行系统开发,在此平台上综合了Struts、Spring以及Hibernate框架技术用于系统实现,确保系统在技术上保持先进性。自中国改革开发以来,企业面临的竞争压力也越来越大。在这种背景下,企业必须不断提高工作效率,节约劳动成本。而传统的人力资源管理模式耗时耗力,降低了企业整体的工作效率,而人力资源管理系统的引入能将人事部门员工从琐碎的日常事务中解放出来,并可降低人事管理业务的复杂度,从而为企业的高效率作出贡献。稳定性稳定性是用户评价系统的重要标准,其涉及系统的许多方面,第一保证系统数据具备高可靠性,因为在某些意外情况下,系统数据库会发生故障甚至毁坏,这时系统必须能恢复数据库,保持稳定运行。第二对人员操作失误而导致的故障,系统需给出相应的出错提示。为了达到上述目标,本文采取了如下措施:在系统交付时,对系统进行了压力测试、功能测试以及错误性测试,尽可能完善系统,提高系统稳定性。安全性企业使用信息化系统取代传统管理模式之前,需保证自己的权益不会被损害,同时由于系统中存储着公司的商业信息,不排除有人会为了商业目的恶意篡改信息,由此可见系统安全性是公司管理者必然会思考的问题。在这种安全需求下,本系统采取了许多的措施用于保证系统安全性,如数据库备份、用户权限分配、按时查杀毒以及规律性修改登录口令等措施。人性化系统设计人性化的初衷在于考虑用户的使用感受,首先企业员工每天忙于处理繁杂的日常事务,若利用系统处理人事业务时,不能给予其舒适的感觉,会适得其反影响用户的工作效率。因此需为系统设计友好的界面,色彩搭配也需符合大众的审美观,使系统真正成为用户有力的辅助工具。5.人力资源管理系统架构分析使用高效率的Web框架是企业达到开发人力资源管理系统预期目标的最重要因素。而当前应用最多的体系结构为C/S模式和B/S模式,考虑到企业未来的发展需求以及满足管理员随时随地可管理系统的要求,本文选择B/S模式作为系统开发架构。同时为了提高代码重用性,缩短开发周期。本系统引入框架思想来优化程序实现流程,以便降低开发复杂度。本系统是在J2EE平台上,将Struts、Spring以及Hibernate三种当前应用较多的框架组合成SSH框架用于实现人力资源管理系统,并结合SQLServer2012作为其数据信息的存储平台。在系统开发过程,三种框架承担着不同的任务。Struts框架工作在表现层,其可以将表现层和业务逻辑处理层进行分离,可提高页面开发效率。Spring框架工作在业务层,是表示层和数据层之间的连接桥梁,其可提高系统的可扩展性。Hibernate工作在数据层,其将业务层和数据层进行了分离,可有效降低系统耦合度。这三类技术框架组合可简化系统的开发,同时可提高系统的移植性和扩展性。系统体系结构选择目前系统开发使用较多的两类体系结构为C/S模式和B/S模式,这两者有不同的适应领域,并且各自具有不同的优缺点,下面对上述两类模式进行对比分析以便选择适合企业人力资源信息化特性的体系模式进行系统开发。C/S模式结构分析C/S模式的中文名为客户端/服务器模式,在该类模式上开发的系统由两部分组成,一部分存储着所有用户所需的数据信息,即服务器部分,一部分用于安装应用程序,这部分上的用户通过应用程序与服务器部分进行数据信息交互,即客户端部分。客户端部分通过企业内部局域网与数据服务器或文件服务器进行交互。C/S结果具有强大的数据操纵和事务处理能力,以及数据安全性和完整性的约束。但随着企业规模的日益扩大,应用程序的复杂程度不断提高,这种模式也逐渐暴露出许多问题,已不能适应不断增长的众多需求。主要体现在以下几点:开发成本较高MIS结构对客户端软硬件要求较高,尤其是软件的不断升级,对硬件的要求不断提高,增加了整个系统的成本,其客户端也变的越来越臃肿。移植困难不同开发工具开发的应用程序,一般来说互不相容,不能搬到其他平台上运行。3•用户界面风格不一,使用繁杂,不利于推广使用4•维护复杂,升级麻烦随着应用程序的复杂程度不断提高,PC机的开销越来越大,如果应用程序升级,则要将客户机逐一升级,需要做大量的工作,维护也很麻烦。5•信息内容和形式单一传统MIS中只涉及本业务所需信息,而没有办公信息和档案等外部信息,用户只能从既定的内容中以某种格式来获取信息,信息大多以单纯的字符和数字来表示,既枯燥又死板。6•不能接纳新技术,限制了扩展性。B/S模式结构分析B/S模式又称为浏览器/服务器模式。Web和数据库集成后形成的系统模式称为浏览器/服务器(B/S)结构。这是一种以传统的客户机/服务器模型(C/S)发展起来的计算方式,被称为三层结构C/S。该模式的特点是应用逻辑全部集中在Web服务器端,客户端不必加载更多的系统支撑软件及大量的应用程序。浏览器/服务器模式使系统维护变得相对容易,也给使用者带来很大的方便。在B/S体系结构中,逻辑上将应用系统分为表示层(Presentation)、功能层(BusinessLogic)、数据层(dataservice),且这三层被分割成三个相对独立的单元。表示层表示层即Web浏览器,它是用户和信息系统的界面,用户通过表示层调用系统中的应用,访问系统数据。应用层应用层是实现各类业务逻辑的部分,是整个系统架构的关键,位于Web服务器端。它的任务是接受用户的请求,执行相应的扩展应用程序与数据库进行连接,向数据库服务器提出数据处理申请,后台数据库将数据处理的结果提交给Web服务器,再由Web服务器传送回客户端。数据层在数据层中包含系统的数据处理逻辑,位于数据库服务器端。它的任务是接受Web服务器对数据操纵的请求,实现对数据库查询、修改、更新等功能,把运行结果提交给Web服务器。该层需具备海量的数据存储功能、数据管理功能和数据服务功能。4.1.3人力资源管理系统体系结构一B/S结构B/S模式实质上也是一种C/S结构,它是由传统的两层C/S结构发展而来的三层C/S结构在Web上应用的特例.B/S的系统中,用户可以通过浏览器向分布在网络上的许多服务器发出请求。B/S结构与C/S结构相比具有以下优点:B/S模式降低了系统维护的复杂度,可有效提高系统管理员的工作效率。基于C/S模式开发的系统若遇到维护或升级问题,管理员需要对局域网内的每个客户端进行处理,会加大管理员的工作量,而基于B/S模式开发的系统,管理员只需要对服务器端进行处理,可缩小管理员工作量,从而可为企业节省大量的人力、财力以及物力。可移植性增强。C/S模式下开发的程序不一定兼容各类操作系统,移植性比较弱,而B/S模式下的程序只需要安装与系统兼容的浏览器就可以实现与服务端的交互,这种方式不仅可减少开发成本,还允许用户随意选择操作系统,这是C/S模式不可企及的。B/S模式下的系统实现了用户随时随地只要在有网的地方就可以交互的目的。C/S模式下的系统只能在安装有客户端的电脑上与服务端进行交互,而B/S模式下的系统没有这么多的限制,用户可随时控制系统。基于B/S模式具备的优势以及综合考虑企业未来发展的需求,本文基于B/S模式实现人力资源管理系统。4.2设计模式在本系统中的应用IOC模式IOC模式IoC全称InversionofControl,是一种代码调用模式,后被改名为DependencyInjection(依赖注入),也就是将类和类,方法和方法之间的关系通过第三方(如配置文件)进行注入,不需要类或者方法自己去解决彼此间的调用关系.IoC模式主要强调设计的安全性。IoC是一种用来解决组件(也可以是简单的Java类)之间依赖关系、配置及生命周期的设计模式,它可以解决模块间的耦合问题。IoC模式它是把组件之间的依赖关系提取(反转)出来,由容器来具体配置。这样,各个组件之间就不存在代码关联,解决了调用方与被调用方之间的关系问题,任何组件都可以最大程度的得到重用。I0C模式在本系统中的应用1.通过采用IoC方式创建或生成一个完整、合法的对象,这样可以避免繁琐的代码方式(new方法)的编写,所有依赖关系均可以在IoC容器中设定,依赖关系集中呈现,更加容易阅读。2•依赖关系在构造时由IoC容器一次性设定,因此组件在被创建之后即处于相对/不变的稳定状态,不用担心上层代码在调用过程中存在某些接品方法对组件依赖关系产生破坏。3•系统通过IoC方式关联系统各组件,这样可以决定依赖关系的注入顺序,对于一个大量依赖外部服务的组件而言,依赖关系的获得顺序可能非常重要,比如某个依赖关系注入的先决条件是组件的数据源及相关资源已经被设定。4.因为关联关系仅在IoC容器中表达,所以只有组件创建者需要了解组件内部的依赖关系。对组件的调用者来说,组件中的依赖关系处于黑盒之中,是不需要进行了解。这样做的好处是对上层屏蔽了不必要的信息,也为系统的层次清晰性提供了保证。SSH架构中的Spring框架对采用IoC方式的设值注入与构造子注入都提供了完善的支持,本文中描述的人力资源系统就是采用Spring框架的IoC支持来解决系统各组件间紧密耦合的问题的。MVC模式MVC模式结构MVC模式将应用分为模型、视图和控制器三个部分,MVC应用程序总是由这三个部分组成。(1)视图:数据的展现视图代表用户交互界面,对于Web应用来说,一般来说是HTML界面,但也可能是XHTML,XML和Applet。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。业务流程的处理由交给模型处理。(2)模型:应用对象模型(Model)就是业务流程和状态的处理,同时也包括业务规则的制定。模型

接收视图请求的数据,并将最终的处理结果返回。业务模型的设计可以说是MVC设计的核心。模型代表了业务数据和业务逻辑。由于同一个模型可以被多个视图所引用,所以提高了应用的可重用性。业务模型的另外一个很重要的模型就是数据模型。数据模型主要指实体对象的数据保存,也就是持久化。(3)控制器:逻辑处理、控制实体数据在视图上展示、调用模型处理业务请求。控制(Controner)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。控制层实际上并不做任何的数据处理。一个模型可能对应着多个视图,而一个视图也可能对应多个模型。MVC模式运行机制在MVC模式中,Web用户向服务器提交的所有请求都由控制器接管。接受请求之后,控制器负责决定调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。图4.1为MVC模式的运行机制:4.2.4.2.(1)系统表现层选用MVC设计模式。运用这个模式能够使本系统的显示、业务处理和控制三者保持相对的独立,使它们分别担负不同的任务,有效地实现界面应用的输入、处理和输出的解耦,使软件模块划分清晰。这种模式可以提高软件的可扩展性和可配置性。(2)系统持久层选用ORM模式。ORM是对象到关系的映射。在面向对象的开发中,数据访问层最基本的数据库操作包括插入对象、删除对象、更新对象和查询对象。而这些操作在几乎所有的项目开发中都很类似,都是把插入对象、删除对象、更新对象和查询对象的对象级别的操作转化为底层关系数据库支持的Insert、update和seleet等SQL操作.然而,如果在程序中调用JDBC来实现这种转化的操作,我们需要面对大量繁杂的SQL代码,不能专注于业务逻辑的编程。开发效率非常低,而且容易出错;也不利于今后的系统维护。因此本系统持久层选用ORM模式。(3)本系统表现层与业务逻辑层之间、业务逻辑层与数据持久层之间连接选用IOC模式。因为IoC模式能够解决组件(也可以是简单的Java类)之间依赖关系。配置对象生命周期的设计模式。它将组件之间的依赖关系提取出来,由容器来集中配置。这样,各个组件之间就不存在代码关联,任何组件都可以最大程度的得到重用。一方面能够实现控制器对业务服务组件的调用,即由Spring的IOC容器负责向表现层的控制器提供业务模型组件;另一方面能够实现业务服务组件对它的协作对象一持久化组件DA0的调用。同时,这一层还采用了SessionFacade设计模式,运用这个模式能够将业务逻辑(流程)进行封装,然后向客户端提供一个统一的粗粒度服务访问层,这种设计能够使层次更加清晰,有利于开发和维护。4.3人力资源管理系统框架SSH框架介绍Struts架构Struts是基于MVC的Web应用框架。Struts是由一组相互协作的类、Servlet和JSP标记组成的一个可以重用的MVC2设计。Struts为JavaWeb应用软件提供了MVC框架,尤其适用于研发大型可扩展的Web应用,为Web应用提供了一个可以通用的框架,使开发人员可以把精力集中在如何解决实际业务问题上了;另外,Struts框架提供了多处可供扩展和定制的地方,使得应用程序可以便利的扩展框架,更好的适应变化的用户需求。Struts的工作流程如图4.2。眼务辖端客户端

图4.2Struts工作流程Spring架构Spring是轻量级的来自于项目经验的开源J2EE框架,它是在项目开发过程中根据经验逐步总结出的一种架构。Spring可以简单的组件配置称为复杂的应用,极大的简化了复杂项目的开发°Spring使用JavaBean来完成以前只能由EJB完成的工作。然而,Spring的用途不限于服务器端的开发。Spring框架的良好架构使项目代码更易维护,可以集成诸如Hibernate、WebWork、Struts、Freemarker等优秀的框架。Spring清晰的结构层细划分,使得开发人员可以使用框架的某项功能,而不需要使用它的全部解决方案,如AOP、WEBMVC都可以作为独立的库进行使用。Spring框架由七个模块组成,如图4.3所示。SpringORMiBatssupip«rt

JgsuppanSpringWebSpringORMiBatssupip«rt

JgsuppanSpringWeb

內亡出坊iplie戲iOrtCiXiIGklMullpartresold

心期uiiiuesSpringAOPSo^iroe-tevel

metadatEi

A0PinFra^tructureSpringDAOTransact!orinfrastrucIlirH

」Q兮匚support

□AOsupportSpringContext

月阳■询lionccn吸

Ulsupport

TjfelidaiionJNDL.EJBsuppcrt时fl

[i&mdelingMaRSpringWeb

MVC

WenMVC

Frsme^iork

VtoViews

JSP/VeiutHr^

PDF.'ExportSpdngCoreSupportingutlih^s

Beancofitamer图4.3Spring框架概览图Hibernate架构Hibernate是一种Java语言环境下的对象一关系映射解决方案,是一种开源的软件。他用来把对象模型表示的对象映射到基于SQL的关系模型中,为面向对象的实体模型到关系型数据库之间的映射,提供了一个极为方便地框架。Hibernate对JDBC进行了极其轻量级的对象封装,是Java程序员可以随心所欲的使用对象编程思想来操作数据库。Hibernate能够应用在任何应用JDBC的场合,既可以在Java的客户端程序上应用,也可以在Servlet/JSP的Web应用中应用,而且,Hibernate可以在应用EJB的J2EE架构中替代CMP,完成数据持久化的任务。Hibernate层次结构如图4.4所示:

SessionPersisteirrtObjectsJNDiJDBCJTA图4.4Hibernate层次结构SessionPersisteirrtObjectsJNDiJDBCJTA图4.4Hibernate层次结构SSH的优势Struts框架的引入是为了将系统显示层和业务层进行分离,从而可改变系统页面中穿插功能代码的缺陷性,从而可以将页面设计者和程序开发者进行有效分离,从而可提高开发人员的工作效率。然而这种方式只针对于表示层,并不涉及业务层,某些应该属于企业系统信息层的代码实现依然放在业务层中,如安全性检查等,这种方式加大了系统后期维护的难度,尤其在开发人员离职的情况下,对系统的维护会更难,在这种背景下,Spring框架则为这个问题提供了解决方案。Spring框架的基础核心是Ioc容器以及A0P组件,其中Ioc容器的使用可有效降低各模块间的依赖性,AOP组件的使用则加大了其在事务处理的优势,并且Spring框架的引入除了可以很好的为中间层服务以外,还能实现与上下层之间的兼容,达到各层相互独立的目的,从而可大大降低各层之间的耦合度。而Spring框架的缺陷在于其虽对JDBC进行了轻量封装,却并不完善,有很多用户的特殊要求无法达到,在这种背景下,本文选择引入Hibernate框架来完善Spring框架对JDBC的封装。Hibernate框架是目前使用率非常高的持久化工作,它不仅为关系型数据库和Java对象之间架起了连接的桥梁,而且还引入了高效率的数据查询以及恢复机制。在这种情况下,开发人员在开发与访问数据库相关的代码时,不再需要考虑范式设计和数据库关系模型不匹配的问题,由此可知,其可以很多的替代Spring框架对JDBC的封装。由上可知,Struts框架在表现层、pring框架在业务层以及Hibernate框架在数据层都具有自身的优势,将三者进行整合形成的SSH框架更能简化系统的开发,可以有效的降低各层之间的耦合度,提高系统的可维护性。SSH框架通过Struts负责在表示层中处理页面的请求和转发工作;通过spring容器管理机制负责在业务层处理业务逻辑工作;通过Hibernate完成在持久层与数据库的交互工作。这样形成一个结构良好、功能强大,层次清晰的框架体系。4.3.2SSH框架在本系统中的应用本系统是基于SSH架构设计和开发的,SSH架构中的三种技术起着不同作用,Struts技术实现了业务层和表现层的分离,从而降低了开发项目的复杂度。Spring是当前使用率非常高的框架,它为开发者提供一个用于管理应用组件的Ioc容器,其兼容表现层和数据层,从而降低了系统的耦合度。Hibernate属于持久层开发工具,它为数据库和JAVA应用程序之间搭建一个交互平台,负责管实现一个层次清晰、易于维护的系统提供了保障。同时为了降低各层次间的依赖关系,提高系统可维护性能,本文对系统进行了分层设计,得到了系统架构图,具体如图4.5所示。图4.5系统架构图根据图4.5可知,系统SSH架构可分为六个不同层次,每层负责处理不同的任务,具体分析如下:客户层:用户在该层通过浏览器与系统进行交互。表示层:该层的任务在于将系统中的信息以特定方式展现给用户。由前面介绍可知,系统表示层已由Struts框架将其独立出来了,其一般由HTML和JSP页面组成,业务层:该层可接受来自Web层的业务请求,并对请求进行相应处理。该层主要包括两个部分:业务接口和业务模型。其中业务接口负责与上下层之间进行数据交互,业务模型完成业务需求。同时Spring框架工作在这层,它通过配置文件XML可有效降低系统中业务层、数据访问层、持久化对象层之间的关联度,方便日后对系统的维护。(4)数据访问层:该层的主要任务在于处理来自业务层的数据请求,并通过业务接口返回处理结果。首先利用JavaBean方法构建访问接口和访问模型,并通过DAO模式将数据访问进行轻量封装,方便其他层对其进行调用°Hibernate框架工作在这层,它为数据访问层提供接口用于实现对持久对象的管理。(5)持久层:该层由两部分组成,第一部分为实体类,第二部分为在实体类上设计的XML配置文件。这层的主要工作为利用Hibernate进行数据访问获取所需信息,然后将这些数据生成持久对象并将其传递给数据访问层。(6)数据层:该层主要存储系统中所需的基本信息,本文采用SQLServer2008作为数据库服务器。Struts框架引入到表现层,用来维护各种JSP页面之间的关系,调用后台业务逻辑、维护表单以及数据验证。spring框架用来完成系统应用组件间的连接,业务服务组件与DAO组件间的连接和Ul组件对业务服务组件的调用。Hibemate框架安排到数据持久层,提供对象持久化服务。当需要进行数据库访问操作时就调用Hibemate的API方法或自定义HQL语句完成相应的数据库操作。本系统工作流程(1)当客户端用户通过JSP页面提交请求时,此时利用Struts框架的控制器Aotionservlet接受该请求,从Struts的FormBean中获取表单数据,然后在Struts的Action中对这些数据进行数据级别和业务级别校验;验证通过后,如果请求涉及业务操作,控制器Action将通过工具类调用业务逻辑接口的实现类,把要进行业务操作的数据对象委托给它。(2)业务逻辑组件(业务服务接口及实现类)中管理着具体的业务对象和业务操作,当它接到来自Action的调用时,开始按照一定的业务流程进行业务逻辑操作。如果这个业务请求涉及数据库访问操作,将调用持久化组件(DA0接口及实现类)完成数据库操作(如创建、更新或删除操作)。(3)持久化组件(DA0接口及实现类)响应来自业务逻辑组件的数据库操作请求,与数据源层直接进行连接,完成数据库相关的所有操作。它主要提供两方面操作:数据持久化到数据库、获取数据库里的数据。Hibemate配置文件用于配置指定数据库使用的SQL方言、数据库驱动、数据库连接、用户名、口令及线程、连接池数据、连接缓存等等。(4)当业务服务接口实现类完成业务操作流程后将结果返还给调用它的Action类,Action保存结果,跳转到相应的JSP页面将这个结果展示在页面上。系统工作流程如图4.6所示:

5■中间件在系统中的运用5■中间件在系统中的运用5.1中间件定义中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。5.2中间件分类企业服务总线(ESB:EnterpriseServiceBus):ESB是一种开放的、基于标准的分布式同步或异步信息传递中间件。通过XML、WebService接口以及标准化基于规则的路由选择文档等支持,ESB为企业应用程序提供安全互用性。•事务处理(TP:TransactionProcessing)监控器:为发生在对象间的事务处理提供监控功能,以确保操作成功实现。•分布式计算环境(DCE:DistributedComputingEnvironment):扌旨仓U建运行在不同平台上的分布式应用程序所需的一组技术服务。•远程过程调用(RPC:RemoteProcedureCall):指客户机向服务器发送关于运行某程序的请求时所需的标准。•对象请求代理(ORB:ObjectRequestBroker):为用户提供与其他分布式网络环境中对象通信的接口。•数据库访问中间件(DatabaseAccessMiddleware):支持用户访问各种操作系统或应用程序中的数据库。SQL是该类中间件的其中一种。•信息传递(MessagePassing):电子邮件系统是该类中间件的其中一种。•基于XML的中间件(XML-BasedMiddleware):XML允许开发人员为实现在Internet中交换结构化信息而创建文档。5.3中间件的作用(1)支持软件实体的交互模式不同特征的模块:过程、对象、构件与服务等等,它们不仅是构造软件系统的不同粒度的模块,也通常在运行阶段表现出不同的性质,网络环境中,它们之间的交互也分别需要不同类型的中间件的支持。(2)支持软件实体的交互质量网络环境中软件实体仅仅能够交互是不够的,因为网络环境是一个有风险的环境,必须要保障实体之间的交互质量。当软件在交互过程中出现一些潜在问题时,交互的效果仍然能满足人们的期望。(3)通过网络协议查找数据服务;(4)传送应用服务请求;(5)服务结果回送到应用服务请求。5.4中间件的目标:在中间件环境下开发的程序,具有在相对稳定的高层应用框架下接口,在未来的计算机和系统软件升级换代,或者希望与其它符合中间件标准的系统连接时,都不需要改动,改变的可能只是中间件的替换或转接。5.5本系统中采用的中间件本文的人力资源系统的对象模型较复杂,对象间存在着多层的关联关系;人力资源系统的运行在很大程度上依赖于对持久性存储的访问,也就是依赖对数据库的访问。因此在系统设计中我们选择了采用Hibernate来完成数据持久层与数据库的连接、实体对象的映射及对象持久化工作。对于许多基于SSH的应用程序而言,持久性存储是使用不同的机制实现的,并且用来访问持久性存储机制的API也有很大的不同。在本文的人力资源系统中使用的是Hibernate提供的API,Hibernate提供了面向对象的数据访问,使用标准方法来访问和操作持久性存储中的数据.持久层主要有5种典型的持久化操作,即C(创建)、R(读取)、U(更新)、D(删除)、Find(查找)。这些持久化操作都可以利用Hibernate为应用程序提供的数据持久化操作方法来实现。Hibernate优点:1)对象/关系数据库映射(ORM)它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想(2)透明持久化(persistent)带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。(例如,用作跟表示层打交道的数据传输对象。)事务Transaction(org.hibernate.Transaction)应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及C0RBA事务隔离开。某些情况下,一个Session之内可能包含多个Transaction对象。尽管是否使用该对象是可选的,但无论是使用底层的API还是使用Transaction对象,事务边界的开启与关闭是必不可少的。它没有侵入性,即所谓的轻量级框架移植性会很好缓存机制,提供一级缓存和二级缓存简洁的HQL编程Hibernate缺点:Hibernate在批量数据处理时有弱势针对单一对象简单的增删查改,适合于Hibernate,而对于批量的修改,删除,不适合用Hibernate,这也是OR框架的弱点;要使用数据库的特定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论