系统概要设计中的构架设计3Word格式.docx
- 文档编号:17191684
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:13
- 大小:684.65KB
系统概要设计中的构架设计3Word格式.docx
《系统概要设计中的构架设计3Word格式.docx》由会员分享,可在线阅读,更多相关《系统概要设计中的构架设计3Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
虽然使用HTML能做出非常美观的页面,使用JavaScript也能在客户端进行一些处理,但是JavaScript这样的脚本语言毕竟不能和编译语言的功能(如Java语言的功能)相比。
(2)响应速度等性能方曲。
使用基于Web的瘦客户端,就意味着必须总是具有网络连接,一旦网络故障,整个应用系统就不可用。
并且因为应用程序的大部分逻辑和状态位于服务器上,所以瘦客户端会频繁地向服务器发送数据和处理请求。
浏览器必须等待响应到达,然后用户才能继续使用该应用程序。
瘦客户端应用程序的响应速度通常比胖客户端应用程序慢得多。
该问题在低带宽或高并发访问的情况下尤其明显,并且产生的性能问题可能导致应用程序的可用性和用户效率大幅度下降。
要求输入大量数据或者在多个窗口中频繁导航的应用程序尤其会受到这一问题的影响。
(3)HTTP协议是一个无状态的协议。
由于基于Web服务器的瘦客户端都使用HTTP协议,而HTTP协议是一个无状态的协议,因此,为了保留客户端的状态,必须使用一些特殊的技术,例如Session会话跟踪等。
这样会给服务器带来额外的负担,同时,程序员也不得不处理Session过期带来的种种问题。
3.C/S体系结构与B/S体系结构将在一定的时期内共存
从上面的分析中可以看出,传统的C/S体系结构并非一无是处,而现在主流的B/S体系结构也并非十全十美。
因此,C/S体系结构与B/S体系结构在一定的时期内还将共存。
比如在企业应用系统的架构设计中可以采用B/S和C/S体系结构混合的系统架构设计实现方案,如图3.12所示,应用系统对外部的访问者提供B/S模式的访问方式,而对于企业的内部人员则提供C/S模式的访问方式;
对Web应用系统的架构设计也可以采用B/S和C/S体系结构混合的设计实现方案,对于系统的前台服务功能通过B/S方式来实现,而对于系统的后台管理则采用C/S方式来实现。
图3.12B/S和C/S体系结构混合的系统架构设计实现方案
采用C/S与B/S混合的软件体系结构设计,更能节省开发和维护成本,并使系统具有良好的开放性、易扩展性和便于移植等优点:
并针对不同形式的访问者提供不同形式的访问操作界面,能够更好地体现和满足应用系统中用户个性化访问的要求。
4.富因特网应用程序RIA(RichInternetApplication)技术的出现
(1)它是取B/S与C/S之长的非常良好的系统架构设计结果。
随着Java和微软VS.Net等新一代编程语言和平台的出现并逐步成熟,并且由于这些编程语言和平台从一开始就考虑了网络的应用,出现了富因特网应用程序技术,分别以JavaWebStrart和MicrosoftSmartClient为代表,还包括Macromedia公司的FlashFlex解决方案。
(2)富因特网应用程序可以将胖客户端应用程序的优点与瘦客户端应用程序的易部署和可管理性优点结合起来。
HTTP协议的无状态特性会导致浏览器和Web服务器总是在不停地执行请求和响应形成一种有状态、持续会话的过程,致使软件系统的设计者又开始考虑具有更丰富的GUI表现形式,更强的功能处理能力、本地存储能力和更稳定的通讯能力的客户端应用程序(Application)。
(3)宽带网络的出现和服务器、客户端主机硬件性能的不断提高为富因特网应用程序的普及和应用提供了物理环境的支持。
5.富因特网应用程序中的“富”
“富”的概念包含两方面,分别是数据模型的丰富和用户界面的丰富。
(1)数据模型的丰富
数据模型的丰富是指用户界面可以显示和操作更为复杂的客户端数据,从而有更大的空间去创建更高效、更具交互性的网络应用程序。
(2)“富”同样也描述了全面提升的用户操作界面(GUI)。
由于HTML中的各种标签只给Web应用系统表示层的开发者提供了非常有限的图形用户界面控制元素,而富因特网应用程序的用户界面提供了灵活多样的界面控制元素(可以采用一般应用程序中的界面控件),并且这些控制元素可以很好地与数据模型结合使用。
6.富因特网应用程序的实现形式
(1)JavaScript+XMLHttpRequest(AJAX技术的应用)。
JavaScript用于客户端界面的显示和处理,而XMLHttpRequest则用于客户端与服务器的信息传输和处理。
JavaScript在客户端的表现力不容置疑,使用JavaScript可以大大加强Web网页的交互性。
XMLHttpRequest一直以来常被用于实现“无刷新”的Web页面,它和JavaScript配合,可以完成数据在服务器和客户端之间的传输和处理。
(2)SmartClient+WebService。
微软越来越重视WinForms技术,并且把新一代的WinForms程序称为SmartClient,它更好地解决了传统Windows程序原有的部署、升级、安全等方面的问题。
SmartClient加上Web服务(WebService),不但带给用户更丰富的界面体验,而且能够实现异构环境下的系统集成,即使在离线的状态,也可以利用缓存来继续为用户服务。
(3)JavaWebStart(早期为JavaApplet)。
JavaWebStart是Sun公司大力推广的一项智能客户端技术。
它使Java应用程序的用户无需经过传统意义上的软件安装过程,就可以下载并执行所需的Java应用程序,并能在恰当的时候自动进行软件的更新和升级。
简单地说,JavaWebStart是一种单击一次即可激活应用程序的简易方法。
WebStan是用户只需在网页上单击一个超级链接就能运行一个Java桌面应用的技术。
(4)FlashFlex技术。
Macromedia公司把Flash推向了网络,加强了基于Web客户端的GUI组件的应用。
现在,Macromedia公司新的表示层解决方案产品Flex的MXML语言可以直接编译生成在FlashPlayer中运行的SWF文件,实现了内容、逻辑层、表示层的分离,可以更高效地开发RIA产品。
3.3.2面向框架的应用开发
1.什么是应用框架
(1)面向对象编程和面向组件编程。
虽然面向对象编程技术促进了软件重用,但是其只实现了类和类继承的重用;
而面向组件编程则进一步完善了面向对象编程技术,并使得软件能够以组件形式被重用;
但应用面向组件编程技术在系统分析、架构和设计思想等方面并不能更好地重用。
另外,在系统的分布式异构互操作等方面也没有提供良好的解决方法。
因此,在软件开发中相应地提出了许多新的方法,如系统体系结构、框架、设计模式等的应用。
(2)什么是应用框架?
·
应用框架提供了一个概括的体系结构模板。
可以用这个模板来构建特定领域中的应用系统程序,人们将相同类型问题的解决途径进行抽象并提供基本的资源,从而抽取成能够解决某一应用问题的模板。
框架其实就是某种特定应用的半成品。
其是等待后来者做“二次开发”,最终实现为具体的应用系统。
当然,框架也是一组功能组件,同时也是成熟的、不断升级的软件系统。
框架不是“系统平台”,而应该是“应用平台”。
在软件开发中常提及的“系统平台”,一般是指某种操作系统、应用服务器、数据库软件或者是一种通信中间件等,因此“系统平台”几乎成了所有系统软件的统称。
由于“系统平台”主要指提供特定系统服务的系统软件,而框架更侧重于设计、开发过程,或者可以说,框架通过调用系统平台提供的系统服务来发挥其特定的应用功能。
因此框架更应该属于“应用平台”级的系统。
2.为什么会出现应用框架以及为什么要采用框架来开发系统
一个应用系统主要由业务功能组件和应用服务组件构成,其中的应用服务组件是可重用的。
因此,把在不同应用系统中有共性的一些东西抽取出来,做成一个半成品程序,这样的半成品就是所谓的应用程序框架。
(1)目前企业级应用开发的客观现实。
软件系统已经发展得很复杂,特别是服务器端软件的开发实现,涉及的知识、内容、问题很多。
在某些方面使用第三方成熟的框架,相当于让别人帮助软件系统的开发者完成了一些基础性的工作,从而大大地减少重复劳动。
(2)采用“应用框架”方式的系统开发体现出的主要优点。
能够实现在分析、设计、类等多层次上的重用。
在分析抽象层上,重用元素有子系统、类;
在设计层上重用元素有系统体系结构、子系统体系结构、设计模式、框架、容器、构件、类库、模板、抽象类等。
使软件开发与工业化的大工业生产是相同的模式。
利用组件和框架来生产软件产品,并应用系统集成技术来快速地组装应用系统。
这样能够大大地缩短开发周期。
采用框架形式的开发,要比独立地开发实现快速、高效得多。
因为可以充分利用继承和重用等机制,能最大限度地加快一个特定应用系统的实现。
同时还允许客户化地定制应用系统中的特性。
由于基于框架的系统有很多功能是通过配置而不是通过编程实现来完成的,这样也给用户带来了一定的便利。
在系统的需求发生变化时,只需要修改相应系统配置文件中的项目内容即可。
3.主流的应用框架中大都包含对以下问题的现成解决方案
正是由于企业应用框架提供如下各种问题的解决方法,同时本身又具有很强的普适性和实用性。
从而使得软件系统的开发者,在应用框架技术来开发企业应用系统时,能够大大提高系统开发的效率。
(1)持久性(Persistence)的支持。
持久性的支持主要是实现应用系统中的各种持久性数据的存储、处理,对象与关系之间的关系映射(O/RMapping),数据的缓存控制等技术的实现。
比如Hibernate框架中就提供了对这些技术的支持。
(2)事物(Transaction)管理的提供。
通过事务技术能够确保一组关联的数据访问操作正常、完整地执行,从而使数据保持一致性和完整性。
比如Spring框架提供的编程式和说明式事务管理的支持。
(3)安全性(Security)认证和数据保护。
许多应用框架能够为应用系统提供如下3个层面的保护;
身份验证(Authentication)、授权(Authorization)和安全传输。
(4)日志(Logging)记录。
记录系统运行情况,记录特定用户操作,有助于系统的错误跟踪。
4.面向框架的应用开发应该注意的问题
(1)软件开发由应用系统开发转变为对应用系统的集成。
建立一个应用系统时需要重用框架中很多已有的组件模块,而这些组件模块可能是在不同的时间、由不同的开发人员开发的,并有各种不同的用途和应用环境。
在这种情况下,应用系统的开发过程就变成了对组件接口、组件上下文以及框架环境一致性的集成过程。
(2)以接口为中心,面向行为的设计和编程实现。
面向框架的应用开发侧重于把应用业务本身的定义和实现相互分离,并提供标准接口。
因此,它是以接口为中心,面向行为的设计和编程实现。
只要接口相同,框架以及基于框架的应用系统中的组件就可以被替换。
(3)开发团队的构建和人员构成问题。
传统软件的开发团队一般由分析员、设计员、程序员和测试员组成。
对一个小的应用系统来说,一个熟练的开发人员,可以兼顾以上多个不同的角色。
但对面向框架的应用系统的开发来说,应用系统的整个开发过程一般由6个不同的角色来协作完成,这6个角色的描述如下:
组件开发者:
也是组件供货商,大多数是中间件组件提供者。
应用组件集成者:
针对某应用领域将已有组件组合成更大的组件模块或容器,作为系统部署的基本单元。
应用系统部署者:
将系统部署基本单元放入选定的平台环境或基本框架中,完成软件定制的要求。
开发平台服务器供应商:
提供服务器、操作系统和数据库等基本软件。
应用系统开发工具供应商:
提供组件公共设施服务。
系统管理员:
配置硬件、网络和操作系统,监督和维护应用系统者。
这6个角色的工作性质和工作内容的专业性都很强,要成为多面手很不容易,因此,组织好开发队伍在软件开发中显得尤为重要。
5.反思面向框架的应用开发给系统开发带来的问题
尽管应用框架能够给开发者带来许多方便,但在具体应用时也会给系统开发带来一定的负面影响。
因此,合理和有效地应用各种框架是软件系统的设计和开发人员应该把握的基本要求。
(1)应用系统一般会产生一定的冗余。
为了框架能够实现一般性和普适性,会提供很丰富的功能实现和相应的解决方案。
这样的设计结果将导致采用框架来开发的某一特定应用系统会产生一定的冗余。
(2)框架对应用系统总会有一定的限制。
因为框架系统本身在设计和实现时,为了能够达到其特定的设计目标,一般会制定出某些规则要求应用系统遵守,从而对应用系统在设计和实现方面产生一定的限制。
(3)系统运行的效率。
对于基于框架技术开发出的具体应用系统,由于许多功能实现经常是通过配置(如XML文件)来实现组装的。
与直接采用硬编码的方式比较,虽然在开发方面能提供很大的灵活性,但也往往牺牲了系统的运行效率。
(4)平台的锁定。
一个采用特定框架技术实现的应用系统会被锁定在这个框架厂商的产品上,当系统需要进行移植时,将要求对系统的设计和功能实现代码进行全部或者部分的改写。
(5)人为地增加了学习的任务和负担。
由于目前的企业级应用框架提供了针对多种不同应用场景下问题解决方法,其中包含的思想、技术和应用技巧也很多。
对框架的应用开发者而言,要精通特定框架的开发,就要熟悉其中所有的用法、思路和优点、缺点等。
因此,对于开发者而言,人为地增加了学习的任务和负担。
3.3.3应用轻量级框架技术架构应用系统
1.J2EE平台中的轻量级框架技术
(1)轻量级Java技术。
在Java应用程序开发环境中,轻量级Java主要指两个方面的内容:
简化的编程模型和更具响应能力的容器(非侵入性和独立于容器性);
轻量级Java的另一个关键特征是它不会强迫业务对象遵循某个平台的特定接口规范,这将允许开发人员利用POJO(PlainOrdinaryJavaObjects)来实现业务逻辑,可以提高开发的效率,在系统的可移植性方面也具有一定的优势。
(2)轻量级Java技术中的POJO。
POJO是针对J2EEEJB(EnterpriseJavaBean)组件技术的缺点推出的,EJB要求应用系统的组件必须继承或依赖EJB容器,这样使得对组件的调试变得不方便;
POJO代表与容器完全脱离关系、自由的Java对象。
如果应用系统采用POJO,则意味着应用系统不依赖任何其他的容器系统。
系统的解耦性、灵活性高。
2.应用轻量级框架技术的主要目的
(1)降低开发过程中的复杂性。
由于轻量级Java能够消除与传统J2EEAPI有关的不必要的复杂性和限制,因此其有助于降低系统开发的总体成本。
(2)可以在容器外开发实现,同时也缩短了应用程序的部署时间。
因为在业务逻辑的功能实现中采用的是POJO技术,所以不必部署到容器的环境中运行,可以在容器外编程开发实现。
(3)有利于单元测试。
由于所测试的单元组件不必在容器中运行,因此可以选择模拟(Mock)测试技术来测试各种组件。
3.目前J2EE平台中应用广泛的3个层次的轻量级框架技术
Java企业应用框架一般被划分为3个层次:
表现层、业务逻辑组件层和持久层。
目前,针对这3层都提供有对应的框架实现技术。
(1)比较流行的表现层开源框架主要有Struts、JSF/Tapestry。
Struts和JSF/Tapestry都属于表现层框架,这两种框架分属不同性质的框架。
后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架。
JSF/Tapestry与Struts应用框架不同的是,前者是基于组件并且是事件驱动型,而不是面向脚本语言(比如JSP技术)的,组件是由一个定义文件(以XML的格式)、一个HTML模板、一个Java类构成的。
(2)业务组件层轻量级解决方案包括Spring、Hivemind等框架。
目前使用最为广泛的还是Spring框架,Spring框架是一个基于IoC和AOP(面向方面编程)的构架。
采用IoC使得它可以很容易地实现组件的装配,提供了简洁的AOP技术并据此实现事务管理等,但是它不具备处理应用系统中的分布式的能力。
(3)持久层的实现框架主要有Hibernate、JDO以及iBATIS。
Hibernate是一个开源的O/RMapping框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在应用EJB的J2EE框架中部分取代CMP,完成数据持久化的工作。
iBATIS是一个简易的SQLMap工具,它将在XML配置文件中手工编写的SQL语句
4.轻量级框架在应用时应该注意的问题
(1)轻量级框架不可能彻底代替高端应用服务器容器的品质。
虽然轻量级Java技术使得应用程序的开发和维护更容易,但是它们不能代替高端应用服务器容器的品质。
Spring框架不可能代替J2EEEJB组件技术、Hibernate框架也不可能代替J2EEEJB组件技术中的实体Bean(EntityBean)技术,而只能对这些相关的技术进行优化和完善。
(2)轻量级之所以“轻”是因为没有提供对J2EEEJB中的分布式远程功能的支持。
实际上无论是J2EEEJB组件技术标准还是Spring等应用框架,其目的都是简化企业应用开发实现的复杂性。
但由于要作为一个平台标准,因此J2EEEJB组件技术标准的内容要考虑得更为广泛一些,相应地,自身也就显得比较“重”。
(4)轻量级框架的产生并非是对重量级框架的否定,在某种程度上甚至可以说二者是互补的。
轻量级框架技术本身也在不断发展以开发出具有更强大、更完备功能的企业级应用;
而新的J2EEEJB规范EJB3.0技术标准则在努力简化J2EE的使用,以使得EJB不仅擅长处理大型企业系统,还能够应用于开发中、小型系统,这也是EJB轻量化的一种努力方向。
对于大型企业应用系统以及将来可能涉及功能扩展的中小型应用系统,结合使用轻量级框架和重量级J2EEEJB框架技术是一种较好的解决方案。
5.基于轻量级框架技术的系统架构设计示例
(1)采用StrutsMVC框架技术。
Struts框架由于出现的时间比较早,因此使用也相对广泛;
另外由于它的社区非常活跃,很容易找到很多现成的开源系统范例以供使用,以及参考样例程序。
但是它的组件在页面中显示得是粗粒度的,以及对框架类的实现限制(采用继承的技术进行扩展)在很多情况下会表现得过于死板,会给表示层的开发带来额外的代码开销。
图3.13所示为采用StrutsMVC框架技术架构的某系统整体架构设计示图。
图3.13采用StrutsMVC框架技术架构的某系统整体架构设计示图
(2)采用Struts+Spring+Hibernate3种框架整合技术。
图3.14所示的系统架构能够更好地遵循SunJ2EE平台中两个主要的设计原则:
“多层架构、松耦合”。
由于采用分层的设计方式,各个模块功能相互独立封装,层与层之间的关联少,保持松耦合连接,系统的稳定性高,便于扩展和维护。
图3.14采用Struts+Spring+Hibernate3种框架整合技术的整体架构设计示图
另外,项目中的每一层所采用的技术都是可替换的,例如Struts可以被JSF或者Tapestry等其他的表示层实现框架替换掉,JDO可替换系统持久层中实现的Hibernate框架。
在每个层中都不同程度地应用了J2EE平台中常用的设计模式,并且使用基于POJO的轻量级架构实现系统中的各个核心的功能组件,从而使得系统易于测试、便于移植、开发周期短。
(3)实现远程业务访问的系统集成。
当系统中需要实现远程业务访问时,早期的实现技术一般是应用J2EEEJB的重量级组件技术,由于EJB组件技术严重依赖于J2EE平台以及J2EE应用服务器容器,同时也介于重量级的应用开发平台技术。
而现在实现远程业务访问的系统集成设计方案,基本上采用的是Web服务(WebService)技术。
应用Web服务技术,不仅可以实现轻量级的远程业务访问,还可以实现异构平台的系统集成(如J2EE和VS.Net平台相互整合)。
该设计方案中的系统架构与前面两种形式的架构基本类似,只是业务层组件将作为WebService组件的客户端组件来实现,以满足远程业务访问的需要。
图3.15所示为体现该设计方案的系统架构示图,系统中的业务层作为远程Web服务组件的客户端,并通过SOAP(SimpleObjectAccessProtocol,简单对象访问协议)协议与远程服务器进行通信,从而实现对远程方法的调用。
图3.15实现远程业务访问的系统集成整体架构设计示图
3.3.4网上商城项目的系统架构设计示例
1.体现系统整体架构设计的包图
系统的整体架构设计由DWR+Struts+Spring+Hibernate框架构成,同时整个系统被分为4层——表示层、控制层、业务处理层和持久层。
本项目的具体架构包图,如图3.16所示。
图3.16网上商城项目的系统架构包图
其中在表示层和控制层中应用Struts框架技术,在业务处理层中应用Spring框架技术在系统的持久层中采用Hibernate框架来达到O/RMapping的效果。
2.本项目中为什么要采用如此的架构设计
(1)表示层设计及对应框架的选择原则。
在系统架构设计的框架选择方向,比较稳妥的方法是选择主流的、已得到证明了的Web应用框架,而不是开发者自行设计和开发新的框架。
目前在J2EE平台下,开发者拥有多个可选择的框架,如Struts、WebWork和JSF等。
在本项目中,选择比较成熟并广为人知的ApacheStruts框架。
DirectWebRemoting(DWR)框架同样也是在Apache许可下的一个开源的AJAX的解决方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 概要 设计 中的 构架