问答题 某大中型电子商务公司的主要业务是在线购物,包括书籍、服装、家电和日用品等。随着公司业务规模不断增大,公司决策层决定重新设计并实现其网上交易系统。PH软件公司承担了该项目软件开发任务,负责系统开发的杜工和赵工分别给出了两种不同的设计方案,分别如图1和图2所示。

图1 杜工设计的体系结构示意图


图2 赵工设计的体系结构示意图

公司的架构师和开发者针对这两种设计方案,从服务器负载情况、业务逻辑的分离性、系统可靠性,以及实现简单性等方面进行讨论与评估,综合考虑后最终采用了赵工给出的方案。

问答题 结合你的系统架构设计经验,请分析比较杜工、赵工两种方案的优点和不足,将下表中(1)~(6)空缺处的内容填写完整。
[*]
【正确答案】(1)Web服务器需要同时处理业务逻辑与数据库访问,负担较重。
(2)Web服务器处理用户请求,应用服务器处理业务逻辑与数据库访问,负载较为均衡。
(3)业务逻辑与数据库访问都位于Web服务器中。业务与逻辑没有分离。
(4)采用多个应用服务器专门进行业务逻辑处理,做到业务逻辑与其他代码分离。
(5)采用多台应用服务器,系统的可靠性较高。
(6)主要采用JSP、ASP等脚本语言实现系统,比较简单。
【答案解析】本问题主要考查体系结构设计需要注意的问题。根据图1和图2给出的拓扑结构可知,图1给出的体系结构代表了一种典型的基于数据库服务器的动态内容发布结构,这种结构在服务器端设置了一台Web服务器和一台数据库服务器。在这种体系架构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在Web应用服务器端(Server)实现。Web服务器通过应用程序的支持(通常采用ASP、JSP等脚本语言,比较简单),就可以给用户提供动态的信息服务,通过定制页面模板,添加到后台数据库中的信息可以及时发布给客户。这种将浏览器与Web服务器、应用服务器三者分开的架构风格,可跨平台操作,具有良好的开放性和可扩充性,便于系统升级、扩展和维护。但是,在这种架构下,Web服务器需要同时负责业务逻辑的处理和数据库访问,负载较重;业务逻辑代码和其他程序代码全部在Web服务器中,不能做到业务逻辑代码与其他代码分离,且其中任何一个环节出错,都会导致Web服务器宕机,系统可靠性较差。
图2给出的是一种分布式的Web应用架构。与图1的架构风格相比,在Web服务器和后台数据库服务器之间增加了一层应用服务器。这是一种比较先进的架构模式,通过Web服务器处理用户请求,应用服务器处理业务逻辑与数据库访问,负载较为均衡。但是这种架构模式需要将脚本语言与面向对象编程语言相结合,相对复杂。由于增加了中间层应用服务器,因此可以将业务逻辑和数据库连接等放置到中间层上,不但减轻了Web应用服务器的负担,而且还可以做到业务逻辑代码与其他程序代码之间的分离。多个应用服务器的存在也可以提高访问性能,并增加系统的可靠性。
整理以上分析内容,可得到如下表所示的两种架构方案各自的优点和不足。
问答题 如何架构高性能Web应用系统是PH公司项目组面临的另一个问题。结合你的系统架构设计经验,请用200字以内的文字列举两个主要影响着Web应用系统服务端执行效率的技术因素,并针对每个因素提出相应的解决方案以提高系统性能。
【正确答案】(1)数据库的连接与销毁。可以采用数据池的方式缓存数据库链接,实现数据库链接复用,提高系统的数据访问效率。
(2)构件或中间件的加载与卸载。可以采用分布式对象池的方式缓存创建开销大的对象,实现对象复用,提高效率。
(3)线程的创建与销毁。可以采用线程池的方式缓存已经创建的线程,提高系统的反应速度。
【答案解析】本问题主要考查Web应用系统的性能优化问题。性能是Web应用系统的一个重要质量属性。主要有如下一些重要的技术因素影响着Web应用系统服务端的执行效率。
(1)数据库的连接与销毁。可以采用数据池的方式缓存数据库链接,实现数据库链接复用,提高系统的数据访问效率。
(2)构件或中间件的加载与卸载。可以采用分布式对象池的方式缓存创建开销大的对象,实现对象复用,提高效率。
(3)线程的创建与销毁。可以采用线程池的方式缓存已经创建的线程,提高系统的反应速度。
问答题 REST (REpresentational State Transfer)是从几种基于网络的架构风格中衍生出来的一种混合架构风格。采用这种方法设计的Web应用系统能够结合REST风格和面向服务思想的优点。结合你的系统架构设计经验,请用300字以内的文字简要说明与传统的Web服务相比,采用REST服务构建的Web应用具有哪些优势和不足。
【正确答案】优势:①基于W3C/IETF的标准与规范,实现技术简单、成熟;②基于URI和超链接技术,无须通过集中式的服务信息仓库即可发现服务资源;③支持缓存,具有无状态的特性,能够支持大量客户端,所构建的应用系统具有较强的伸缩性;④基于轻量级的Web框架,仅仅需要基本的开发工具支持,构建过程简单且成本较低;⑤测试相对简单,采用浏览器即可完成服务功能测试等。
不足:①所倡导的REST风格与实际实现尚存在一定差距;②所有的输入参数都必须在URI中传递,参数容量受限,易导致HTTP协议错误;③在URI中表达复杂类型的参数比较困难,且目前对URI中的参数不存在一种公认的编组(Marshalling)和解编(Un-Marshalling)方法等。
【答案解析】REST (REpresentational State Transfer)是从几种基于网络的架构风格中衍生出来的一种混合架构风格,它是目前因特网的核心架构风格。REST风格中的特点是客户端/服务器、无状态、缓存、统一接口、分层系统和按需代码。REST组件通过以一种数据格式转移资源的表述进行通信,可以基于接收者的能力和期待的内容,以及资源的性质动态地选择不同的表述。
基于REST服务(RESTful Service)的Web应用系统设计任务主要包括识别并设计REST风格的服务和采用面向服务的思想进行REST服务集成。采用这种方法设计的Web应用系统能够结合REST风格和面向服务思想的优点,近年来受到了广泛的关注。
与传统的Web服务相比,REST服务主要有以下几点优势。
(1)REST服务基于W3C/IETF的标准与规范(包括HTTP、XML、URI和MIME等),其实现技术简单且成熟。
(2)REST服务基于URI和超链接技术,不需要通过集中式的服务信息仓库即可发现服务资源。
(3)REST服务支持缓存,具有无状态的特性,这些使得REST服务能够支持大量客户端,构建的应用系统具有较强的伸缩性。
(4)REST服务基于轻量级的Web框架,仅仅需要基本的开发工具支持,构建过程简单且成本较低。
(5)REST服务的测试相对简单,采用浏览器即可完成服务功能测试。
与传统的Web服务相比,REST服务主要存在如下不足。
(1)REST服务倡导的REST风格与实际实现尚存在一定差距。例如高层REST服务倡导使用GET、PUT、POST和DELETE共4个统一接口,在REST实现部分通常只能采用GET和POST接口,因为大多数的代理和防火墙会屏蔽其他接口;XHTML表单中只能使用GET和POST接口。
(2)REST服务要求所有的输入参数都必须在URI中传递,这样会产生对参数容量大小的限制(目前的大小是4KB)。如果超出该数量,会导致HTTP协议错误(错误代码414:Request—URI too long)。
(3)在URI中表达复杂类型的参数比较困难,且目前对URI中的参数不存在一种公认的编组(Marshalling)和解编(Un-Marshalling)方法。