15.1 系统设计
本章所介绍的系统是一个基于XML的电子公告系统,该系统允许用户发布电子公告,以及对指定电子公告发表评论。
本系统是一个“非传统”的Java EE应用,因为它没有使用传统的数据库来保存信息,而是直接将电子公告数据和用户评论数据都保存在XML文档中。系统采用这样的设计将更加轻便,无须任何数据库支持,可以在任何的Java EE环境下运行,可移植性相当好。
当然,这种把信息保存到XML文档而不是数据库里的做法也有坏处,因为添加电子公告和评论时都将需要将信息保存到XML文档中。因此,当有多个用户同时添加电子公告时,必然会引起并发修改的问题。很显然,XML文档的并发控制能力远不如关系数据库,因此,这种设计主要适用于一些并发要求不高的场景,比如单用户Blog系统等。
该系统一样遵守典型的MVC架构,系统组件可分为视图、控制器和模型3类:
视图组件:直接由XML+XSLT样式单充当。本系统的XSLT转换采用的是客户端转换,即由浏览器进行实时转换。
控制器组件:由Servlet充当。
模型组件:由自定义的XML解析器充当。这个解析器负责将电子公告信息和用户评论信息等保存到XML文档中。
提示
从理论上讲,XML文档也应该属于模型一类,因为它保存了整个应用的状态数据。但在加上XSLT样式单文档之后,XML文档就变成了可显示的视图。
15.1.1 系统组件的交互关系
下面以用户添加新公告为例介绍系统各组件之间的交互关系。在用户发出添加新公告的请求之后,该请求将由系统的控制器拦截,该控制器由AddNewsServlet充当,该Servlet负责获取请求参数,然后调用系统的模型组件来操作XML文档,也就是将需要添加的公告信息写入指定XML文档里。
图15.1为本系统中添加新公告的顺序图。
图15.1 添加新公告的顺序图
从图15.1可以看出,本系统中XML文档的作用有两个:一方面它代替了传统关系数据库,用于保存系统状态信息;另一方面,它又直接作为视图响应被送回浏览器。