阅读以下关于Web应用系统开发的问题,在答题纸上回答问题1至问题3。
A公司承担了某企业应用系统的开发任务,用户要求系统最终应发布到Web上供企业员工及企业客户使用。项目组在进行方案论证时,首先肯定了该系统需使用B/S结构,但在系统应采用的底层平台上产生了分歧,一方认为应采用微软.NET平台,一方认为应采用Java企业版平台。经过认真讨论,结合两种平台的特点及项目的实际需求,项目组最终决定采用Java企业版平台作为系统开发运行的基础平台。
【问题1】(9分)
请在以下平台特点(1)~(9)中,选择出.NET平台与Java企业版平台各自具备的优势填入表5-1的(a)~(f)项中,选择出两个平台共有的特点填入表5-1的(g)~(i)项中。
(1)良好跨平台可移植性支持
(2)易于部署与配置
(3)多程序设计语言支持
(4)良好的Web多层应用开发支持
(5)丰富的多厂商外部支持
(6)良好的O/R(对象/关系)映射支持
(7)针对特定平台的优化支持
(8)良好的源代码以外的可定制性支持
(9)良好的Web服务支持
表5-1 .NET平台与Java平台的优势对比
【问题2】(8分)
MVC(Model-View-Controller)模式是Web应用系统开发中常用的一种软件架构模式。请分别针对基于EJB的重量级框架和基于Struts等的轻量级框架,说明MVC模式中的各组件应采用何种构件实现。
项目组在进行需求调研时,发现用户界面部分的变动可能会比较频繁,因此需要降低系统界面与业务逻辑之间的耦合度。MVP(Model-View-Presenter)模式是由MVC模式派生出的一种设计模式,其主要目的是降低MVC模式中模型(Model)与视图(View)的耦合度,请用300字以内文字,从组件耦合度、组件分工及对开发工程化支持等三方面说明MVP模式与MVC模式的主要区别。
【问题3】(8分)
因为系统中大量业务逻辑涉及企业的核心商业数据,为保证系统数据一致性,完善的事务(Transaction)控制是系统实现时必需考虑重要因素之一。请用200字以内文字说明事务的基本特征,并简单描述EJB规范中提供的两种事务控制的基本方法。
【问题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维护的事务可以跨越方法的边界。