面 向接 口编程 的魅力
■ 文 /杜玄 苏丽辉
Database l数据库
面向接口编程已经是面向对象设计 中人们的共识,而作者对面向接 口编程魅力的体会 ,还要从一个 旧
软件项 目的改造谈起 ……
E 近 ,我接 到一 个关于旧的报表软件系统改
'I{ 进的项目。这是个用Java语言实现的单用
户 图形界面 报表软件 系统 , 已经运 行 了将 近 l0
年。Java在 当时是一 种比较新潮的语言 ,用Java
完成 报表系统 的开 发还不是 特别 多见 。整 个软
件系统 采用经 典的两 层结构框架 ,也就是 说 ,
在图形用户界 面代码中直接调用JDBC连接数据
库。体系结构如图 l所示 。
图 1 两层 结构 的报 表软 件 系统
问题的提 出
随着业 务 的发展 ,用 户在 原有系统 的基 础
上不 断提 出新 的需 求。一方 面 ,由于积 累 了用
户提 出的各种 各样 的数据报 表需求 ,旧报表系
统 已经支持 了大量 的数据报表 ;另 一方面 ,用
户又提 出 了其 他需求 ,要求报 表系统 可 以同时
支持多 个用户 ,且多 个用户可 以远距 离访 问报
表 系统 。面对这些 新需 求 ,旧报表软 件系统 的
体 系架构 显然 已经不能 满足要 求。 旧报表软 件
系统必须进 行体 系框架 的改造 ,才能 满足用 户
的新 需求 。从技术 角度 简单来说 ,新需 求的 任
务就是 要把两层 结 构的报表系统改 造 为具 有报
表 服务器 的多层 体 系机 构 ,并且能 够将这 个报
表软 件系统 部署 到互联 网上 。系统改 造的 目标
系统架构如 图2所示 。
图2 多层 多客户 端 的报表 软 件系统
多层体 系结构在 现代软 件 系统 中已经得到
了广 泛的应用 ,其好 处这里 就不再 赘述 。建立
多层体 系架构 ,我们 完全可 以借鉴 现成 的框架
完成这 项工作 。技术上 ,这 并不是 问题 。经过
近十年 的积累 ,报表软 件 中已经支持 了大量 的
数 据报表 ,并且 旧系统 中报表 数据处 理逻辑 与
界面逻辑 完全混 在了一 起。我们 不可 能把 旧系
统完 全推倒 而建立 一套全 新的报 表软件 系统 。
一
方 面时 间不允许 ,另一 方面大量 的 人力和物
力投人 也是 无法 实现 的。事 实上 ,如 何把 业务
逻辑 从旧的报表 程序 中剥离 、分离客 户端 和服
务 端 ,才 是 最 大 的难 题 。 这 个任 务 的 关 键 在
于 ,如何 以最少 的代价 完成 旧系统到 多层体 系
框架 的迁移 ,而不需要处理业务剥离 的任务。
抛开 迁移所需 要 的工作量 问题 ,我们 只从
体 系框架 的升级 来分析这 个项 目。对 于一个 时
间紧急的软件项 目,引入第三方实现、在第三方
软件 的基础上 完成旧系 统的迁移应该 是一个 比较
好的选择。这 里,首先要注意的是要有合适的第
三方软件实现。再者 ,要评估第三方软件学习 曲
2O11 O2 93