RH:一些关键的前端问题是什么?你们是如何解决这些问题的?
RKP:和用户界面有关的主要挑战是:
整个应用程序采用一个通用的感观:每个页面被分为诸如页眉、页脚和导航部分等用户界面组件。由于这些用户界面组件在大部分页面中被重复使用,因此我们使用了样式表。
实现灵活的布局管理:为了实现简单的静态布局,我们放弃了使用模板,因为模板的复杂性太高。
实现JavaScript的跨浏览器兼容性。
使用设计模式
RH:你能否谈谈VSM的体系结构和你为了支持它而使用的一些设计模式?
RKP:虚拟商场应用程序基于模型-视图-控制器(Model-View-Contrller,MVC)设计模式,该设计模式在应用程序内分为三种截然不同的功能形式。模型表示应用程序中数据的结构以及对数据的特定操作;视图通过某个应用程序函数将数据以一定的形式展示给用户;控制器根据用户的喜好和模型状态,将用户行为和用户输入转变成调用模型并选择适当视图的应用程序函数。
MVS使管理应用程序的流程变得更加容易。另外,它还可以轻松地支持多个视图,例如,可以在不修改流程逻辑的情况下为手持设备创建视图。修改业务逻辑或视图对彼此只有很小的影响,甚至没有影响。通过MVC为应用程序添加新的用例变得简单,设计也变得更加清晰和更易于维护。
我们已经在内部实施了一个可扩展且功能强大的MVC设计模式。VSM中的视图由在浏览器中提供的JSP构成。模型由EJB和其他可在业务层访问到的支持类构成。至于控制器,我们实施了一个servlet,用于解析和传输由模型和视图产生的请求和响应,这些视图通过一个XML映射文件注册到VSM框架。另外,企业信息系统(Enterprise Information System,EIS)层提供了一个能以一种与实施无关的方式将已有数据和应用资源映射到J2EE应用程序设计上的软件层。这个抽象的数据库层可以作为一个在不同的应用程序间可重复使用的库。
诸如商店、订单、商品和用户等VSM都作为实体Bean来模拟。每个组件都对应一条数据库记录,并具备事务处理功能,容器管理持久性(Container Managed Persistent,CMP)实体Bean是实施的最佳选择,因为它们易于使用,而且它们利用了应用服务器的优化特性。
RH:通过基于Web的用户界面,要在中间层执行业务逻辑,而数据却保存在数据库中,因此如果你不降低网络流量,那么应用程序的性能就会受到损害。你是如何解决这个问题的?