
使用Oracle9i JDeveloper构建应用程序
荐
【字体:小 大】
使用Oracle9i JDeveloper构建应用程序
作者:- 文章来源:- 点击数:226 更新时间:2006-4-19 
unknow
OTN虚拟商场背后的决策:VSM开发人员访谈
去年,OTN发布了虚拟商场(Virtual Shopping Mall,VSM)系统,这是一个为了向人们展示Oracle产品如何支持用来构建企业应用程序的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)开放标准而设计的示例应用程序。VSM模拟了一个Web站点,在这里,厂商可以建立顾客能够访问并订购商品的在线商店。
在类似VSM的J2EE应用程序中,J2EE服务是在用户浏览器、企业数据库以及原有信息系统之间的中间层执行的。J2EE的核心组件是企业JavaBeans(EJB)、JavaServer Pages(JSP)、Java Servlet以及到信息源的各种接口。
由Oracle印度开发中心(IDC)的四位开发人员构建的USM已经被数千名OTN会员下载过,并且在OTN以及其他以Java为中心的网站和出版物中引起了广泛的兴趣和讨论,这些网站和出版物包括theserverside.com、ejbsig(EJB Special Interest Group,EJB特殊兴趣小组)和Java开发者杂志(Java Developer's Journal)。最近,我与IDC的Reghu Krishna Pillai谈论了VSM及其开发过程。
Robert Hall:你是如何协调团队开发的?你使用了什么工具和方法?
Reghu Krishna Pillai:我们四个--Neelesh Shastry、Sujatha Ranganathan、Shrinivas Bhat和我--来自IDC,我们是从零开始设计和构建这个系统的。在开发和部署阶段,我们使用了Oracle9i JDeveloper集成开发环境(IDE)。开发方法是用于开发J2EE应用程序的软件设计流程--Rational Unified Process (RUP) ,RUP定义了以下关键的开发活动:
需求分析:提供了一个用例图表
面向对象的分析:确定类、对象和交互
体系结构规范:确定MVC模型
详细设计:开发一个类图表
实施:使用Java实施业务逻辑
确认:进行单元和集成测试
组装和部署:生成和部署EAR文件
完成应用程序开发后,我们使用了Oracle9i JDeveloper提供的向导将该应用程序部署到OC4J(Oracle9iAS Containers for J2EE)上。
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的用户界面,要在中间层执行业务逻辑,而数据却保存在数据库中,因此如果你不降低网络流量,那么应用程序的性能就会受到损害。你是如何解决这个问题的?
RKP:设计模式就在此处发挥了很大的作用,例如,我们在服务器上实施了一个Session Facade,以为客户端提供一个到底层EJB的统一接口。客户端只需与facade交互,由facade代表它们调用适当的服务器端EJB方法,从而降低了网络流量。
