UML软件工程组织

基于分布对象技术的Web应用集成解决方案
作者:窦文 周立 贾焰 选自:www.tongji.edu.cn

目 前 在Internet 上 占 优 势 的 三 层 客 户/ 服 务 器 模 型 是 通 过 通 用 网 关 接 口CGI(Common Gateway Interface) 实 现 的。CGI 与Web 几 乎 同 时 出 现, 曾 经 是 提 供Web 交 互 性 的 唯 一 方 法, 所 有 标 准 的Web 服 务 器 软 件 都 支 持CGI。CGI 本 身 可 以 实 现 为 一 个 执 行 程 序, 这 种Web 与 应 用 系 统 的 集 成 方 法 非 常 简 单、 直 接, 因 为 它 不 需 要 对Web 服 务 器 与 浏 览 器 作 任 何 修 改。 在 这 种 体 系 结 构 中,Web 服 务 器 通 过CGI 接 口 创 建 网 关 进 程, 并 将 用 户 请 求 传 递 给 网 关。 应 用 网 关 处 理CGI 请 求, 并 通 过 应 用 接 口 访 问 具 体 应 用, 然 后 将 结 果 转 换 为HTML 格 式 并 回 送 给 服 务 器。 然 而,CGI 的 基 础HTTP 是 一 个 低 速、 脆 弱 和 无 状 态 的 协 议, 所 以 在 利 用CGI 进 行 应 用 集 成 时 存 在 一 些 问 题。

---- 首 先,Web 服 务 器 对 每 一 个 用 户 请 求 都 必 须 创 建 一 个 单 独 的 网 关 进 程, 并 在 接 到 通 过 进 程 管 道 发 回 的 结 果 后 终 止 该 进 程。 可 见, 通 过CGI 执 行 程 序 连 接 应 用 系 统 的 缺 点 是 性 能 开 销 较 大, 其 中 包 括 进 程 创 建 与 终 止 开 销、 进 程 间 的 数 据 拷 贝 开 销 以 及 进 程 间 的 切 换 开 销 等。 如 果 一 个HTML 文 件 中 包 含 了 大 量 的 数 据 库 访 问 请 求, 那 么 这 种CGI Web 网 关 的 性 能 将 十 分 低 下, 且 服 务 器 很 快 会 达 到 饱 和 状 态, 难 以 支 持 更 多 的 用 户 请 求。 另 外,CGI 也 无 法 适 应 于 广 泛 流 行 且 迅 速 发 展 着 的Java 等 新 兴 技 术, 无 法 利 用 这 些 技 术 所 带 来 的 巨 大 优 越 性。

---- 因 此 有 人 说, 当 前 的Web 服 务 器 还 处 在 中 世 纪, 而 客 户 端 已 经 进 入 了 后 现 代 时 期 了。 某 些Web 服 务 器 开 发 商 试 图 以 专 有 服 务 器API 的 形 式 扩 展CGI, 如Netscape 的NSAPI 和Microsoft 的ISAPI、NeXT 的WebObjects 框 架 以 及Oracle 的WebServer API 等。 这 种 封 闭 的 倾 向 是 一 条 死 胡 同, 它 导 致 了 到 处 充 满 非 标 准 服 务 器 的Web。

---- 近 几 年 来, 伴 随 着 分 布 对 象 技 术 的 发 展, 人 们 做 了 很 多 努 力, 如Netscape 的ONE(Open Network Environment)、JavaSoft 的Enterprise Java Bean、Oracle 的NCA(Network Computing Architecture) 以 及 新 一 代 的Java ORB 等, 期 望 扭 转Web 服 务 器 这 种 各 自 封 闭 的 发 展 倾 向。 其 主 旨 是 通 过CORBA 环 境 使Web 服 务 器 开 放 化。 这 样 做 的 理 由 非 常 充 分, 因 为CORBA 是 一 个 开 放 的 分 布 对 象 总 线 标 准, 它 从 一 开 始 就 是 针 对 众 多 的 客 户/ 服 务 器 系 统 制 定 的。 这 种 思 想 及 其 所 采 用 的 技 术 统 称 为Object Web。

一、 Object Web 的Java-CORBA 框 架

 --- Java-CORBA 框 架 的 基 本 思 想 是 用 Java/IIOP 的 组 合 来 替 换 现 有 的HTTP/CGI 的 组 合。 之 所 以 这 样 做, 是 出 于 以 下 几 点 考 虑: 首 先,Java 与CORBA 的 结 合 使Java 客 户 端 能 够 访 问 由IDL 定 义 的 范 围 非 常 广 泛 的CORBA 对 象 服 务, 而HTTP 的 客 户 端 只 是 一 些 有 限 的 操 作 集; 其 次,Java-CORBA 框 架 总 的 服 务 方 是 规 则 的 CORBA 对 象, 它 们 与 客 户 端 的 连 接 可 以 是 永 久 的。 而CGI 则 是 短 暂 的, 每 一 个 同 样 的 请 求 需 由WWW 服 务 器 产 生 一 个 单 独 的 进 程 去 执 行 相 同 的CGI 程 序; 这 也 导 致 了HTTP/CGI 框 架 的 又 一 个 缺 点-- 由 于 无 状 态 而 难 以 支 持 交 互 性 强 的 应 用。

---- Object Web 通 常 采 用 三 层 客 户/ 服 务 器 应 用 模 型( 如 图1 所 示)。 一 种 最 常 见 的 框 架 为: 第 一 层 属 于 客 户 层( 浏 览 器 上 运 行 的Java Applets), 第 二 层 由 若 干 服 务 器 和 应 用 网 关 组 成, 服 务 器 包 括HTTP 服 务 器 和 由ORB 连 接 的 应 用 服 务 对 象。 第 三 层 属 于 传 统 的 服 务 器。

图1 Java-CORBA 框 架 的 体 系 结 构

---- 由CORBA 和HTTP 组 成 的 中 间 层 几 乎 可 以 由 任 何 一 种 服 务 器 平 台 来 支 持, 包 括Unix、NT、OS/2、NetWare、MacOS、 OS/400、MVS 和Tandem 等。CORBA 对 象 作 为 一 个 中 间 层 应 用 服 务 器, 将 业 务 逻 辑 封 装 起 来。 与 客 户 端Java 构 件 的 交 互 通 过 动 态 下 载 的 ORB Java 类 库 与 服 务 器 端 的ORB 之 间 的IIOP 连 接 来 完 成。 同 时, 服 务 器 端 的CORBA 对 象 还 能 与 其 他 使 用CORBA ORB 的 客 户 或 服 务 器 交 互。 第 二 层 一 般 提 供 一 个 服 务 器 端 的 构 件 协 调 者TP Monitor( 对 象 事 务 监 视 器), 如IBM 的BOSS(Business Object Server Solution) 和BEA 的Tuxedo。 服 务 器 端 构 件 是 一 个 至 少 在 最 小 程 度 上 实 现 了 构 件 服 务 的CORBA 服 务 对 象。 一 般 来 讲, 服 务 器 端 构 件 具 有 可 重 用 性。 比 如, 它 们 大 多 提 供 某 种 装 配 接 口, 使 开 发 者 可 以 用 可 视 化 的 工 具 将 其 装 配 到 其 他 的 应 用 中。 第 三 层 是CORBA 对 象 能 访 问 的 一 切 应 用 和 服 务, 如 过 程 性 的TP Monitor、MOM、DBMS、ODBMS 和Lotus Notes 等。CORBA 业 务 对 象 在 中 间 层 替 换 了 原 有 的CGI 应 用。

二、 CorbaWeb

 --- 对 现 有Web 进 行 开 放 性 改 造 可 以 有 多 种 多 样 的 方 法。 最 理 想 的 莫 过 于 使 用 户 可 以 通 过 浏 览 器 可 视 化 地 操 作 和 管 理 分 布 在 各 处 的CORBA 对 象。 然 而, 并 非 所 有 的Web 应 用 都 要 求 浏 览 器 端 与 应 用 服 务 器 端 有 很 强 的 交 互 性。 有 些 应 用 只 要 求 通 过 浏 览 器 来 浏 览 服 务 器 端 应 用 的 结 果, 每 一 次 应 用 的 完 成 只 需 要 一 次 交 互, 即 提 交 参 数 和 浏 览 结 果。 而 对 服 务 器 端 的 要 求 则 不 同, 往 往 希 望 将 分 布 在 不 同 环 境 中 原 有 应 用 模 块 集 成 起 来, 产 生 一 个 新 的 应 用 服 务。 这 里 我 们 给 出 了Object Web 的 一 种 框 架--CorbaWeb, 它 灵 活 地 利 用 了CGI 和CORBA 的 长 处, 给 用 户 提 供 了 一 种 基 于 浏 览 器 的CORBA 对 象 导 航、 浏 览 和 管 理 机 制, 而 且 通 过 引 入 一 种 面 向 对 象 的 脚 本 语 言CorbaScript, 大 大 方 便 了CORBA 应 用 的 开 发。

---- CorbaWeb 的 目 的 是 提 供 一 个Corba 2.0 和Web 之 间 的 通 用 网 关, 使 用 户 能 够 用 浏 览 器 在Web 上 导 航 和 使 用 CORBA 对 象 , 浏 览 器 则 对 用 户 的 活 动 进 行 管 理 并 将 请 求 传 给 服 务 器 端。CorbaWeb 环 境 接 受 用 户 的 请 求 并 引 发 对 相 应CORBA 对 象 的 调 用。 通 过CorbaWeb,WWW 客 户 能 通 过 动 态 产 生 的CORBA 对 象URL 引 用 进 行 对 象 导 航。 由IDL 接 口 自 动 生 成 的HTML 表 单 呈 现 给 用 户 一 个 直 观 的 对 象 视 图。 对 象 状 态 也 由 一 种 元 视 脚 本 机 制 产 生 的 HTML 页 面 来 表 示。

---- 1. CorbaWeb 的 体 系 结 构

---- CorbaWeb 的 体 系 结 构 框 架( 如 图2 所 示)由 以 下 几 个 部 分 组 成:

  1. 任 何 浏 览 器 作 为 一 个 界 面 友 好 的GUI 用 以 导 航、 管 理 和 操 作CORBA 对 象;
  2. CGI 用 于Web 服 务 器 与CorbaWeb 间 的 通 信。 一 种 变 通 的 方 案 是 使 用 由CGI 扩 展 的Server API, 如Netscape 的NSAPI 和Microsoft 的ISAPI 或ASP;
  3. 一 组 元 脚 本 元 脚 本 提 供 基 本 的 网 关 功 能( 如 对 象 的 导 航、 引 发、 表 示 以 及 对CorbaWeb 的 扩 展 等);
  4. CorbaWeb 表 示 池 CorbaWeb 对 对 象 的 表 示 是 由 元 视 脚 本 生 成 的。 元 视 脚 本 存 储 在CorbaWeb 的 表 示 池 中;
  5. CorbaScript 解 释 器 CorbaScript 是 一 种 解 释 性 语 言, 可 通 过 它 编 写 IDL 描 述 的CORBA 对 象 的 相 应 操 作;
  6. 标 准 的CORBA 环 境 CORBA 对 象 由 动 态 引 用 接 口DII(Dynamic Invocation Interface) 引 发, 并 且 通 过 接 口 池IR(Interface Repository) 中 的IDL 接 口 信 息 进 行 运 行 时 的 匹 配 和 检 查;
  7. 任 何 应 用 对 象 CorbaWeb 使Web 访 问 可 以 应 用 对 象 的 通 用 网 关。 这 些 对 象 仅 需 由IDL 接 口 进 行 描 述, 并 且 可 以 用 任 何 一 种 程 序 语 言 在 任 何 一 种 平 台 上 实 现;
  8. 名 字 服 务 器 名 字 服 务 器 与 接 口 池 的 结 合 使 用 对CorbaWeb 对 象 的 导 航、 管 理 和 动 态 绑 定 等 功 能 提 供 了 底 层 支 持。

---- 2. Web 与CorbaWeb 的 交 互 过 程

---- 一 个 典 型 的Web 与CorbaWeb 的 交 互 过 程 如 下:

  1. 任 何 浏 览 器 用 户 访 问 任 何WWW 服 务 器, 获 取 相 应 的HTML 页 面, 其 中 包 含 到CorbaWeb 网 关 的URL 链 接;
  2. 当 用 户 激 活 网 关 的 链 接 时, 网 关 脚 本 开 始 执 行, 调 用CORBA 名 字 服 务 对 象 视 脚 本 的 某 个 方 法, 该 方 法 产 生 所 有 在 名 字 服 务 器 上 注 册 的 应 用 对 象 视 脚 本 的URL 链 接;
  3. 用 户 可 以 浏 览 对 所 有 对 象 的 简 要 说 明, 并 选 择 所 需 要 的 对 象 链 接;
  4. 当 用 户 激 活 某 一 对 象 的 链 接 时, 其 相 应 视 脚 本 的 视 方 法 开 始 执 行, 返 回 该 对 象 的 视 图 页 面, 包 括 对 象 的 状 态、 方 法 以 及 方 法 所 需 要 的 参 数。 用 户 可 以 根 据 需 要 选 择 所 需 的 方 法, 填 写 适 当 的 参 数, 然 后 激 活 该 对 象 相 应 的 方 法;
  5. CGI 网 关 将 请 求 传 给CorbaWeb,CorbaWeb 通 过CORBA 环 境 的DII 机 制 动 态 构 造 对CORBA 服 务 对 象 的 请 求, 并 通 过 接 口 池 对 请 求 和 参 数 进 行 匹 配 和 检 查;
  6. 对 于 返 回 结 果, 由CorbaWeb 调 用 相 应 对 象 视 脚 本 的 方 法, 产 生 相 应 的HTML 页 面 返 回 浏 览 器。

图2 CorbaWeb 的 体 系 结 构

----通 过 运 用CORBA 等 分 布 对 象 技 术 对 传 统 的Web 进 行 改 造, 构 成 了 一 个 面 向 对 象 的Web--Object Web。 从 某 种 意 义 上 看, 这 使Web 完 成 了 一 种 类 似 于 自 然 界 中" 进 化" 的 过 程。 这 种 进 化 不 是" 突 变 式" 的, 它 几 乎 保 留 和 利 用 了 传 统Web 中 的 一 切 既 得 成 果, 同 时 又 使Web 的 使 用 者 充 分 享 受 到 分 布 对 象 技 术 所 带 来 的 巨 大 益 处。 这 种 进 化 是 多 样 化 的、 渐 进 的, 它 始 终 在 不 停 地 继 续 着。


版权所有:UML软件工程组织