购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1案例分析试题

在2004年至2013年的考试试题中,共有4道试题和系统设计有关,本节主要分析这4道试题。在本节的试题中,其考查范围如表3-1所示。

表3-1系统设计试题分布表

3.1.1 2007年上半年试题2

拟建设的某事务处理系统数据交换非常频繁。经过初步分析,存储子系统的I/O性能决定了整个系统的响应时间。目前主流磁盘的容量为40GB和80GB两种规格。采用不同规格的磁盘,存储子系统的I/O性能会有很大的不同,同时也产生不一样的成本。评价使用小容量或大容量磁盘每秒每个I/O操作的成本,对于选择恰当的设计方案意义重大。

经过调研,该项目的系统分析师小刘得到了以下与存储子系统有关的部件的性能和成本说明:

(1)CPU系统,成本是20000元,处理能力是2500MIPS。

(2)主存的带宽是16字节,访问周期是10ns。

(3)1000MB/s的I/O总线,可连接20个Ultra3SCSI总线和控制器。

(4)Ultral3SCSI总线,成本是500元,传输速度是160MB/s,每条总线最多可以支持15个磁盘,执行一个磁盘I/O操作平均增加0.3ms的开销。

(5)每个磁盘I/O操作需要使用50000条CPU指令。

(6)安装磁盘的驱动器盒,成本是每个1500元,为磁盘提供电力和降温。每个驱动器盒配置一条SCSI连接线,可以安放80GB磁盘8个或者40GB的磁盘12个。

(7)无论是大容量磁盘还是小容量磁盘,成本都是10元/GB,转速都是15000RPM(每分钟15000转),平均寻道时间是5ms,传输速率是40MB/s。

为了进一步进行定量评估,小刘假设磁盘存储容量必须是1920GB(大、小两种规格的磁盘不能混用),每次I/O的平均数据量是32KB,每次磁盘I/O操作时间=平均寻道时间+平均旋转延迟+传输时间,所有磁盘负载都是均衡的,而且所有设备的能力都可以得到100%的发挥。

说明:用IOPS表示每秒执行的I/O数量。

【问题1】

(1)CPU系统能够支持的最大IOPS是多少?

(2)主存能够支持的最大IOPS是多少?

(3)I/O总线能够支持的最大IOPS是多少?

(4)每个Ultra3SCSI总线能够支持的最大IOPS是多少?

【问题2】

I/O链中最后一个连接是磁盘本身。

(1)平均每次磁盘的I/O时间是多少(精确到0.1ms)?

(2)操作每个磁盘的最大IOPS是多少?

(3)采用大小两种规格的磁盘,磁盘能够提供的最大IOPS分别是多少?

【问题3】

(1)采用大小两种规格的磁盘以组织存储系统,分别需要几个驱动器盒和几条 SCSI连接线?

(2)系统 I/O性能的瓶颈是由哪个部件决定的?

(3)两种组织方式的总成本分别是多少(精确到0.1元)?

(4)两种组织方式的每个IOPS的成本分别是多少(精确到0.1元)?

(5)哪种方式的性价比高?

一、试题分析

计算机I/O系统设计就是找出一种设计方案,满足成本、可靠性和设备多样性等目标,同时避免造成I/O瓶颈。这就需要在内存和I/O设备间进行平衡,因为性能(以及由此产生的有效性价比)与I/O链中性能最差的连接有关。

在设计I/O系统时,需要根据不同的I/O连接模式和每种I/O设备的不同数量分析系统的性能、成本、能力和可用性。性价比目标会影响I/O模式的选择和物理设计。根据不同应用,性能可以用每秒传输多少MB或完成多少次I/O操作来表示。限制高性能的因素有I/O的速度、数量,以及主存和CPU的速度,影响成本的因素主要是I/O设备本身和到CPU的连接费用。

本题主要是计算题,需要对计算机系统主要部件的参数以及相互关系比较熟悉。

【问题1】

CPU的I/O性能是由CPU的速度和执行一次磁盘I/O操作所需的指令数决定的。

CPU能够支持的最大

主存系统的最大性能是由存储周期时间、内存带宽和每次I/O传输数据量决定的。

主存能够支持的最大

I/O总线的最大性能受限于总线带宽和每次I/O传输数量。

I/O总线能够支持的最大

Ultra3SCSI总线性能受限于SCSI控制器的性能,通过SCSI总线传输32KB数据需要的时间 160MB/s ,加上0.3ms的SCSI控制器代价,每次I/O操作需要0.5ms,则每个Ultra3SCSI总线能够支持的最大

【问题2】

平均磁盘访问时间=平均寻道时间+平均旋转延迟+传输时间+控制器延迟,如忽略控制器延迟,平均磁盘访问时间

所以磁盘的性能如下:

每个磁盘的最大

每一种组织方式的磁盘数量取决于每个磁盘的容量,1930GB容量需求需要24个80GB磁盘,或48个40GB磁盘,所有磁盘的最大I/O数量为:

24个80GB磁盘的最大IOPS数量 =24×128=3072IOPS。

48个40GB磁盘的最大IOPS数量 =48×128=6144IOPS。

【问题3】

根据题目提示,每个SCSI总线最多可以连接15个磁盘,一个驱动器盒可以容纳80GB磁盘8个或40GB磁盘12个,因此24个80GB磁盘需要驱动器盒3个,需要的SCSI连接线的最小数量是3条;48个40GB磁盘需要驱动器盒4个,SCSI连接线的最小数量是4条。

3个SCSI总线提供的最大IOPS =3×2000=6000IOPS。

4个SCSI总线提供的最大IOPS =4×2000=8000IOPS。

每一种组织方式能达到的最大性能等于Min(CPU 受限性能,主存受限性能, I/O总线受限性能、SCSI受限性能),所以:

80GB,3条连接线 = Min(50000,50000,31250,3072,6000)=3072IOPS。

40GB,4条连接线 = Min(50000,50000,31250,6144,8000)=6144IOPS。

每种组织方式的成本:

采用80GB磁盘成本 =20000+3×500+24×(80×10)+1500×3=45200(元)。

采用40GB磁盘成本 =20000+4×500+48×(40×10)+1500×4=47200(元)。

单位IOPS的成本:

采用80GB磁盘的单位 (元)。

采用40GB磁盘的单位 (元)。

通过计算比较,采用40GB磁盘的组织方式性能价格比高。

二、参考答案

【问题1】

(1)CPU系统能够支持的最大

(2)主存能够支持的最大

(3)I/O总线能够支持的最大 (或32000)。

(4)每个Ultra3SCSI总线能够支持的最大

【问题2】

(1)磁盘的平均时间1I/O 。15000RPM40MB/s

(2)每个磁盘的最大

(3)采用80GB规格的磁盘,磁盘系统能提供的最大IOPS为3072。

采用40GB规格的磁盘,磁盘系统能提供的最大IOPS为6144。

【问题3】

(1)若采用80GB规格的磁盘则需要3个驱动器盒和3条SCSI连接线。

若采用40GB规格的磁盘则需要4个驱动器盒和4条SCSI连接线。

(2)I/O性能瓶颈由磁盘本身决定。

(3)采用80GB磁盘的总成本为20000+3×500+24×(80×10)+1500×3=45200(元)。

采用40GB磁盘的总成本为20000+4×500+48×(40×10)+1500×4=47200(元)。

(4)采用80GB磁盘的每个IOPS的成本为 (元)。

(5)采用40GB磁盘的组织方式性能价格比高。

采用40GB磁盘的每个IOPS的成本为 (元)。

3.1.2 2007年上半年试题3

某软件公司承担了某中小型企业应用软件开发任务,进度要求紧迫。为了按时完成任务,选择合适的企业应用系统开发架构非常重要。项目组在进行方案论证时,项目组成员提出了两种开发思路。

(1)刘工建议采用J2EE5.0和EJB3.0进行开发。理由是J2EE定义了标准的应用开发体系结构和部署环境,EJB是J2EE的基础和核心。J2EE5.0的主要目标是简化开发,相比EJB2.1,EJB3.0具有很多改进和提高。

(2)杜工建议采用 Struts,Spring和Hibernate轻量级开源框架相结合的方式。理由是随着Java开源项目阵营的发展壮大,一些基于 POJOs(Plain Old Java Objects)的开源框架被广泛地引入到Java企业应用开发中来,与重量级的EJB框架相比,这些轻量级的框架有很多优点。

项目组仔细比较分析了两种方案的特点、优点和不足之处。认为杜工和刘工的建议都合理,但是从结合当前项目实际情况出发,最后决定采用杜工的建议。

【问题1】

Java 企业应用框架一般被划分为三个层次,请用150字以内文字说明都有哪三个层次?功能分别是什么?

【问题2】

请用200字以内的文字叙述 Struts、Spring 和 Hibernate开源框架特点和结合方式。

【问题3】

请用200字以内的文字说明基于 Struts、Spring和Hibernate的轻量级框架与基于 EJB的重量级框架解决问题的侧重点有什么不同?

一、试题分析

【问题1】

Java企业应用框架一般被划分为三个层次:表现层、业务逻辑组件层和持久层。

表现层用来建立应用系统的界面,对应视图(View)。例如,表现层采用JSF(Java ServerFace),JSF的开发流程的核心是事件驱动,组件和标签的封装程度非常高,很多典型应用已经不需要开发者去处理HTTP,整个过程是通过IoC(依赖注入)来实现的。

业务逻辑组件层用来开发应用逻辑,对应控制器(Controller)。例如,业务逻辑组件层采用EJB3.0的Session Bean。EJB3.0允许开发者使用耦合松散的组件来开发应用,实现一个EJB所有使用的类和接口都减少了。

持久层是实现持久化存储,对应模型(Model)。例如,采用EJB3.0实体Bean持久化模型,吸收了Hibernate的一些思想采用O/R Mapping模式。

【问题2】

J2EE 多层结构的出现促进了软件业的巨大改变,但是,J2EE只是提出了一般意义上的框架设计,并且其庞大的体系显得有些臃肿。轻量级Web架构不仅保持了J2EE 的优势,还简化了Web 的开发。目前主流的轻量级架构是把Struts、Spring和Hibernate这三种在业内比较推崇的开源技术基于MVC模式相结合。这样,在项目开发中不管是从效率上,还是费用、易维护上都能达到很好的效果。

1.Struts 框架

Struts是一个基于J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。在Struts框架中,模型由实现业务逻辑的JavaBean构成,控制器由ActionServlet和Action来实现,视图由一组JSP文件构成。

Struts把Servlet、JSP、自定义标签和信息资源整合到一个统一的框架中,开发人员不用自己再编码实现全套MVC模式,极大地节省了时间。

Struts将业务数据、页面显示、动作处理进行分离,这有利于各部分的维护。Struts 采用Front Controller (前向控制)模式来实现动作处理,让所有的动作请求都经过一个统一入口,然后进行分发。这方便程序员在入口中加入一些全局控制代码,例如,安全控制、日志管理、国际化编码等。通常情况下,借助Struts Validator 框架帮助完成Web 层的验证工作,不用再去为每个Web 页面写验证代码,只需通过配置即可实现。这不但减少了开发工作量,而且,由于验证代码的集中管理,也为维护带来便利。

2.Spring框架

Spring框架包括声明性事务管理,通过RMI或Web Service远程访问业务逻辑,允许自由选择和组装各部分功能,还提供和其他软件集成的接口,例如,与Hibernate和Struts的集成。

Spring核心本身是个容器,管理构件的生命周期、构件的组态、相依注入等,并可以控制构件在创建时是以原型或单例(Singleton)的方式来创立。Spring的核心概念是控制反转(Inversion of Control,IoC)或依赖注入(Dependency Injection),使用Spring,不必在程序中维护构件的依赖关系,只需在构件中加以设定,Spring核心容器就会自动将依赖注入指定的构件。Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其他的框架方案加以替代。

3.Hibernate框架

Hibernate是一种对象和关系之间映射的框架,是Java应用和关系数据库之间的桥梁。它可以将数据库资源映射为一个或者多个POJO。Hibernate提供了Java对象到数据库表之间的直接映射,开发人员无须直接涉及数据库操作的实现细节,实现了一站式的ORM解决方案,它协调了应用系统与关系数据库的交互,让开发者可以解放出来专注于业务逻辑。

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲地使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在基于Servlet/JSP的Web应用中使用,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate是一种非强迫性的解决方案,开发人员在实现业务逻辑与持久层类时,不需要遵循Hibernate特定的规则和设计模式。这样,Hibernate就可以与大多数新的和现有的应用平稳地集成,而不需要对应用的其余部分做破坏性的改动。

在Hibernate 中,ORM机制的核心是一个XML文件,通常命名为*.hbm.xml。这个映射文件描述了数据库模式是怎么与一组Java类绑定在一起的。

4.基于Struts、Spring和Hibernate的轻量级架构

基于Struts、Spring和Hibernate框架,可以构造出Web轻量级架构。如图3-1所示,该系统逻辑上分成三层。

图3-1基于Struts、Spring和Hibernate的轻量级架构

(1)表示层。由Struts实现,主要完成如下任务:管理用户请求和响应;提供一个控制器代理以调用业务逻辑和各层的处理;处理从其他层抛给StrutsAction的异常;为显示提供数据模型;借助Struts Validator框架帮助完成Web层的验证工作。

(2)持久层。由Hibernate 实现。它通过一个面向对象的查询语言(Hibernate Query Language,HQL)或正则表达式的API 来检索对象的相关信息。HQL类似于SQL,只是把SQL 里的表和列用对象和它的字段代替。Hibernate 还负责存储、更新、删除数据库记录。同时Hibernate支持大部分主流数据库,且支持父表/子表关系、事务处理、继承和多态。

(3)业务层。由Spring来实现。使用Spring的优点是,利用延时注入思想组装代码,提高了系统扩展性和灵活性,实现插件式编程。利用其对Hibernate 的会话工厂(SessionFactory)、事务管理的封装,可以更简洁地应用Hibernate。

【问题3】

重量级的开发需要依赖一个非常庞大的容器系统。例如,在EJB的开发中,所有开发的内容基本上都需要放置在一个容器系统中运行。这些容器因为主要是针对大型企业应用的,所以“体积”庞大,占用资源过多,在开发的过程中效率很低。使用大型容器作为开发环境,大部分时间花在配置、运行的过程上,有时改动一个小小的部分,需要等很长的时间才能看到结果。另外,单元测试也比较麻烦,虽然现在有很多针对容器的单元测试框架,但还是没有很好地解决配置的等待问题。因此,对开发人员而言,EJB逐渐失去了很多的吸引力,因为感觉实在是太笨重了。

轻量级框架的优势很大程度上是因为提高了开发的速度,不用部署一个很庞大的容器,系统就可以实现以前需要容器才能实现的功能,可以使用Spring代替无状态的会话Bean,使用Hibernate代替实体Bean,而且可以直接写一个应用程序运行已经完成的系统,立即可以看到结果。做单元测试也非常简单,不需要做太多的工作就可以构建系统。另外,轻量级框架多数是开源项目,开源社区提供了良好的设计和许多快速构建工具,以及大量现成可供参考的开源代码,这有利于项目的快速开发。对于开发人员来说,这些特性有较大的吸引力。

关于轻量级和重量级之间的比较和讨论由来已久,但最终没有出现一个一致的结果。重量级框架在大规模运行时会表现出非常优异的性能,缺点主要是开发效率较低;轻量级框架则正好相反,开发时非常迅速,但在大规模运行时,性能却不如重量级框架。

因此,轻量级框架的产生并非是对重量级框架的否定,可以说二者是互补的。轻量级框架旨在开发具有更强大、功能更完备的企业应用;而新的EJB3.0则在努力简化J2EE,从而使EJB不仅仅擅长处理大型企业应用系统,也利于开发中小型系统,这也是EJB轻量化的一种努力。对于大型企业应用系统和将来可能涉及能力扩展的中小型应用系统来说,结合使用轻量级框架和重量级框架也不失为一种较好的解决方案。

二、参考答案

【问题1】

表现层、业务逻辑层和持久层。

表现层用来建立应用系统的界面,对应视图(View)。

业务逻辑层用来开发应用逻辑,对应控制器(Controller)。

持久层是实现持久化存储,对应模型(Model)。

【问题2】

Struts框架是基于模型-视图-控制器(MVC)模式的开源框架,主要用于企业应用中表示层的实现。借助于Struts,开发人员可以把主要精力集中在业务处理上,简化遵循MVC设计模式的Web应用开发工作,很好地实现代码重用,提高开发效率。

Spring框架是业务组件层轻量级框架。

Hibernate属于持久层框架。Hibernate是一个开源的O/R Mapping框架,它对JDBC进行了非常轻量级的对象封装,可以在应用EJB的J2EE框架中取代CMP,完成数据持久化的重任。

Struts框架+Spring框架+Hibernate框架实现了表现层、业务逻辑组件层和持久层的结合。

【问题3】

轻量级框架侧重于减少开发的复杂度,相应的,它的处理能力便有所减弱(如事务功能弱、不具备分布处理能力),比较适用于开发中小型企业应用。

采用轻量级框架后,一方面因为采用基于POJOs的方法进行开发,使应用不依赖于任何容器,这可以提高开发调试效率;另一方面轻量级框架多数是开源项目,开源社区提供了良好的设计和许多快速构建工具以及大量现成可供参考的开源代码,这有利于项目的快速开发。

而作为重量级框架EJB则强调高可伸缩性,适合于开发大型企业应用。

在EJB体系结构中,一切与基础结构服务相关的问题和底层分配问题都由容器来处理。另外,EJB容器通过减少数据库访问次数以及分布式处理等方式提供了专门的系统性能解决方案,能充分解决系统性能问题。

轻量级框架的产生并非是对重量级框架的否定,可以说二者是互补的。轻量级框架旨在开发更强大、功能更完备的企业应用;而新EJB3.0则在努力简化J2EE,使EJB不仅擅长处理大型企业系统,也利用开发中小型系统,这也是EJB轻量化的一种努力。对于大型企业应用以及将来可能涉及能力扩展的中小型应用,结合使用轻量级框架和重量级框架相也不失为一种较好的解决方案。

3.1.3 2011年上半年试题1

随着宽带应用快速发展,用户要求系统服务提供商提供基于互联网的多种服务。数字视频监控作为一种区域级的安全监控方式,越来越为更多的用户所使用。数字视频监控告警系统采用与数字视频监控相结合的多媒体技术和基于互联网的信息传递方案,为企业用户以及个人用户提供多种媒体的、不同时间、地点的信息通知服务。数字视频监控告警系统可以将用户需要查看的监控视频或告警信息,通过互联网门户系统以多种媒体方式传送给用户,方便用户随时随地了解与自身相关的视频信息。

【问题1】

在设计数字视频监控告警系统时,张工将该系统划分为五个层次:服务代理层、门户服务层、流程服务总线层、业务流程应用管理层和企业服务层,其中流程服务总线层是整个数字视频监控告警系统的核心,实现了服务消息、服务指令与数据的集中传递。系统五个层次在实现时可以采用图3-2左侧所示的技术或工具,请将系统的5个层次填入空(1)~(5),使其与左侧技术或工具相对应。

图3-2数字视频监控告警系统架构图

【问题2】

请用300字以内文字说明服务代理层、门户服务层、业务流程应用管理层和企业服务层的主要功能。

【问题3】

张工认为,系统设计实现时需要重点关注系统的私密性、实时性、稳定性和扩展性,为什么?请用300字以内文字说明。

一、试题分析

笔者认为,本题是系统分析师考试的一个败笔。因为本题的出处是某公司的一个数字视频解决方案,其中的内容仅是一家之言,并不具代表性。而且,其正确性也值得商榷。

【问题1】

空(1)应填“门户服务层”,因为,Web Portal即门户网站。采用Web Portal架构技术形成多种媒体互通的数字视频监控多媒体集成系统,为用户提供多视角、多媒体的综合视频监控方案。

空(2)应填“业务流程应用管理层”、空(3)应填“流程服务总线层”、空(4)应填“服务代理层”,因为,当新的服务加入到现有系统时,管理人员通过业务流程应用管理层定义业务流程→流程服务总线层→配置服务代理,当配置服务代理(Service Agent)连接成功后,管理人员可以方便快速地将其加入到现有的业务运行环境中。

显然,空(5)应填“企业服务层”。

【问题2】

门户服务层提供信息展现的功能,向各类用户提供个性化的服务。用户可以根据各自的习惯和兴趣,定制门户的页面结构和服务内容。各个展现模块通过下层组件和具体的服务相关联。

业务流程应用管理层提供系统管理人员定义业务流程、重组优化现有业务流程、模拟测试业务流程等功能,同时提供了各类服务的运行环境。在新的服务加入到现有系统中时,管理人员在配置服务代理连接成功后,可以方便快速地将其加入到现有的业务运行环境中。

流程服务总线层是整个数字视频监控多媒体集成系统的核心,实现了服务消息、服务指令与数据的集中传递,形成了一个统一的信息总线。各类业务服务通过其服务代理,在流程服务总线(Process Services Bus)上交换服务消息,发送服务指令。对于新开发的业务应用,可以通过Web Service的方式,直接接入到流程服务总线上,实现该业务功能的扩展。

服务代理层提供在流程服务总线上接收或发送各类具体业务服务的消息与指令的功能。各个服务代理将其对应的业务服务发出的指令发布到流程服务总线上,同时接收流程服务总线上的与自身相关的指令消息,并传递给各类服务执行。

企业服务层包含数字视频监控多媒体集成系统中的各类具体的企业应用,如数字视频监控系统服务、网站门户服务、电子邮件警告服务等。各类企业服务为整个系统提供了多种的服务支持,并且对于符合该层次结构的服务也可以方便快速地加入到现有的系统体系中。

【问题3】

作为数字视频监控告警系统在设计时必须注意以下几个方面。

(1)私密性:具备权限和访问级别控制的功能,以保障公司或个人的专有的视频监控信息私密性。

(2)实时性:当突发事件发生时,必须反应迅速,接警时间极短,报警控制器检测到报警信号后,必须及时告警和处理。

(3)扩展性:由于现代技术的快速发展,系统应该具备可扩展性,以适应新技术、新设备。

(4)稳定性:是数字视频告警系统的基本要求,因为告警系统必须具备长时间不间断运行的能力,特别是在用户峰值时,也能保证信息的通畅、快速,以实现对公司或个人情况的有效监控。

二、参考答案

【问题1】

(1)门户服务层 (2)业务流程应用管理层 (3)流程服务总线层

(4)服务代理层 (5)企业服务层

【问题2】

服务代理层:提供了在流程服务总线上接收或发送各类具体业务服务的消息与指令的功能。

门户服务层:提供信息展现的功能,向各类用户提供个性化的服务。用户可以根据各自的习惯和兴趣,定制门户的页面结构和服务内容。

业务流程应用管理层:提供了系统管理人员定义业务流程、重组优化现有业务流程、模拟测试业务流程等功能,同时提供了各类服务的运行环境。

企业服务层:企业服务层包含了数字视频监控多媒体集成系统中的各类具体的企业应用,如数字视频监控系统服务、网站门户服务、电子邮件警告服务等。

【问题3】

私密性:由于系统涉及的是各个公司或个人的专有的视频监控信息,所以要求系统保证视频信息的私密性,严格限制访问权限。

实时性:对于突发的监控告警信息,为了避免进一步的损失,所以要求系统提供很高的实时性,可以向用户快速提供入侵告警信息或其他告警信息。

稳定性:系统应该具备长时间不间断运行的能力,并在用户峰值时,也可以提供很好的服务。

扩展性:作为统一的门户接入平台,系统应该可以连接多种视频系统,并随着技术与用户需求发展,提供更多种的服务方式,所以要求系统具有较高的可扩展性。

3.1.4 2012年上半年试题5

A公司承担了某企业应用系统的开发任务,用户要求系统最终应发布到Web上供企业员工及企业客户使用。项目组在进行方案论证时,首先肯定了该系统需使用B/S结构,但在系统应采用的底层平台上产生了分歧,一方认为应采用微软.NET平台,另一方认为应采用Java企业版平台。经过认真讨论,结合两种平台的特点及项目的实际需求,项目组最终决定采用Java企业版平台作为系统开发运行的基础平台。

【问题1】

请在以下平台特点(1)~(9)中,选择出.NET平台与Java企业版平台各自具备的优势填入表3-2的(a)~(f)项中,选择出两个平台共有的特点填入表3-2的(g)~(i)项中。

(1)良好跨平台可移植性支持

(2)易于部署与配置

(3)多程序设计语言支持

(4)良好的Web多层应用开发支持

(5)丰富的多厂商外部支持

(6)良好的O/R(对象/关系)映射支持

(7)针对特定平台的优化支持

(8)良好的源代码以外的可定制性支持

(9)良好的Web服务支持

表3-2NET平台与Java平台的优势对比

【问题2】

MVC(Model-View-Controller)模式是Web应用系统开发中常用的一种软件架构模式。请分别针对基于EJB的重量级框架和基于Struts等的轻量级框架,说明MVC模式中的各组件应采用何种构件实现。

项目组在进行需求调研时,发现用户界面部分的变动可能会比较频繁,因此需要降低系统界面与业务逻辑之间的耦合度。MVP(Model–View–Presenter)模式是由MVC模式派生出来的一种设计模式,其主要目的是降低MVC模式中模型(Model)与视图(View)的耦合度,请用300字以内文字,从组件耦合度、组件分工及对开发工程化支持等三方面说明MVP模式与MVC模式的主要区别。

【问题3】

因为系统中大量业务逻辑涉及企业的核心商业数据,为保证系统数据一致性,完善的事务(Transaction)控制是系统实现时必须考虑的重要因素之一。请用200字以内文字说明事务的基本特征,并简单描述EJB规范中提供的两种事务控制的基本方法。

一、试题分析

本题主要考查Web应用系统开发的知识,考生需要区分.NET平台和J2EE平台的区别,并理解掌握MVC的基本概念,并进一步掌握MVP设计模式。

【问题1】

本问题主要考查.NET和J2EE平台的区别,考生需要从跨平台可移植性、部署与配置、多程序设计语言支持、Web多层应用开发支持、多厂商外部支持、O/R(对象/关系)映射支持、针对特定平台的优化支持、源代码以外的可定制性支持以及Web服务支持等方面作答。

【问题2】

本问题主要考查MVC和MVP模式的区别。MVC(Model-View-Controller)模式是Web应用系统开发中常用的一种软件架构模式,包括基于EJB的重量级框架和基于Struts等的轻量级框架等。MVP模式与MVC模式的主要区别如下,(1)在组件耦合度方面:在MVP模式中,视图并不直接使用模型,它们之间的通信通过Presenter进行,从而实现了视图与模型的分离,而在MVC模式中,视图直接与模型交互。(2)在组件分工方面:在MVP模式中,视图需要处理鼠标及键盘等触发的界面事件,而在MVC模式中这通常是由控制器完成的工作;在MVP模式中,系统核心业务逻辑组织集中在Presenter中,而在MVC模式中,相应的控制器通常只完成事件的分发。(3)在开发工程化支持方面:MVP模式可更好地支持单元测试,而在MVC模式中,由于模型与视图绑定,因此难以实施相应的单元测试;在MVP模式中,Presenter基于约定接口与视图和模型交互,可更好地支持组件的重用。

【问题3】

本问题主要考查事务的基本特征和EJB规范中提供的事务控制的基本方法。事务的基本特征包如下。

原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据的完整性限制没有被破坏。

隔离性:两个事务的执行是互不干扰的,两个事务不会互相影响。

持久性:在事务完成以后,该事务对数据所做的更改便持久地保存在数据库之中,并且是完全的。

EJB规范支持的两种事务控制方法如下。

容器维护的事务(Container Managed Transaction,CMT):由EJB容器根据部署描述符或EJB构件注释中指定的事务属性自动控制事务的边界,容器维护的事务是方法级的,即默认将一个方法当做一个事务执行,当方法执行的过程中发生系统级异常,容器会自动将事务回滚,从而将方法前面执行的结果恢复。

Bean维护的事务(Bean Managed Transaction,BMT):由程序员在EJB的源代码中控制事务执行的边界,事务的边界通过Java事务接口(Java Transaction API,JTA)进行控制,Bean维护的事务可以跨越方法的边界。

二、参考答案

【问题1】

(a)~(c):(2)、(3)、(7),以上三个答案顺序可调换;

(d)~(f):(1)、(5)、(8),以上三个答案顺序可调换;

(g)~(i):(4)、(6)、(9),以上三个答案顺序可调换。

【问题2】

在基于EJB的重量级框架中,实现的构件分别为如下。

模型(Model):由EJB构件实现。

视图(View):由JSP构件实现。

控制器(Controller):由Servlet构件实现。

在基于Struts等的轻量级框架中,实现的构件分别如下。

模型(Model):由Java Bean构件实现。

视图(View):由JSP构件实现。

控制器(Controller):由Servlet构件实现。

MVP模式与MVC模式的主要区别如下。

(1)在组件耦合度方面:在MVP模式中,视图并不直接使用模型,它们之间的通信通过Presenter进行,从而实现了视图与模型的分离,而在MVC模式中,视图直接与模型交互。

(2)在组件分工方面:在MVP模式中,视图需要处理鼠标及键盘等触发的界面事件,而在MVC模式中这通常是由控制器完成的工作;在MVP模式中,系统核心业务逻辑组织集中在Presenter中,而在MVC模式中,相应的控制器通常只完成事件的分发。

(3)在开发工程化支持方面:MVP模式可更好地支持单元测试,而在MVC模式中,由于模型与视图绑定,因此难以实施相应的单元测试;在MVP模式中,Presenter基于约定接口与视图和模型交互,可更好地支持组件的重用。

【问题3】

事务的基本特征包括如下。

原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据的完整性限制没有被破坏。

隔离性:两个事务的执行是互不干扰的,两个事务的时间不会互相影响。

持久性:在事务完成以后,该事务对数据所做的更改便持久地保存在数据库之中,并且是完全的。

EJB规范支持的两种事务控制方法如下。

容器维护的事务(Container Managed Transaction,CMT):由EJB容器根据部署描述符或EJB构件注释中指定的事务属性自动控制事务的边界,容器维护的事务是方法级的,即默认将一个方法当做一个事务执行,当方法执行的过程中发生系统级异常,容器会自动将事务回滚,从而将方法前面执行的结果恢复。

Bean维护的事务(Bean Managed Transaction,BMT):由程序员在EJB的源代码中控制事务执行的边界,事务的边界通过Java事务接口(Java Transaction API,JTA)进行控制,Bean维护的事务可以跨越方法的边界。 2Jm0S0giz9y0Cmlqy7l4vfpxQp9+8p4HcdSlpTqf8qo1tWcMvY3X2SOlz5ePgOCH

点击中间区域
呼出菜单
上一章
目录
下一章
×