15.1 系统设计

本章所介绍的系统是一个基于XML的电子公告系统,该系统允许用户发布电子公告,以及对指定电子公告发表评论。

本系统是一个“非传统”的Java EE应用,因为它没有使用传统的数据库来保存信息,而是直接将电子公告数据和用户评论数据都保存在XML文档中。系统采用这样的设计将更加轻便,无须任何数据库支持,可以在任何的Java EE环境下运行,可移植性相当好。

当然,这种把信息保存到XML文档而不是数据库里的做法也有坏处,因为添加电子公告和评论时都将需要将信息保存到XML文档中。因此,当有多个用户同时添加电子公告时,必然会引起并发修改的问题。很显然,XML文档的并发控制能力远不如关系数据库,因此,这种设计主要适用于一些并发要求不高的场景,比如单用户Blog系统等。

该系统一样遵守典型的MVC架构,系统组件可分为视图、控制器和模型3类:

alt 视图组件:直接由XML+XSLT样式单充当。本系统的XSLT转换采用的是客户端转换,即由浏览器进行实时转换。

alt 控制器组件:由Servlet充当。

alt 模型组件:由自定义的XML解析器充当。这个解析器负责将电子公告信息和用户评论信息等保存到XML文档中。


alt提示

从理论上讲,XML文档也应该属于模型一类,因为它保存了整个应用的状态数据。但在加上XSLT样式单文档之后,XML文档就变成了可显示的视图。


15.1.1 系统组件的交互关系

下面以用户添加新公告为例介绍系统各组件之间的交互关系。在用户发出添加新公告的请求之后,该请求将由系统的控制器拦截,该控制器由AddNewsServlet充当,该Servlet负责获取请求参数,然后调用系统的模型组件来操作XML文档,也就是将需要添加的公告信息写入指定XML文档里。

图15.1为本系统中添加新公告的顺序图。

alt

图15.1 添加新公告的顺序图

从图15.1可以看出,本系统中XML文档的作用有两个:一方面它代替了传统关系数据库,用于保存系统状态信息;另一方面,它又直接作为视图响应被送回浏览器。