Borland的MIDAS技术
|
|
|
作者:佚名
来源:InterNet 加入时间:2004-11-25 |
Borland 自 从 推 出 了Delphi 之 后, 深 受 程 序 设 计 人 员 的 青 睐。Delphi 的 每 一 个 新 版 本 都 给 用 户 提 供 了 更 新、 更 好 的 功 能。 例 如,Delphi 1.0 版 本 给 用 户 提 供 了 一 种 全 新 的 可 视 化 编 程 环 境, 使 用 户 能 快 速 开 发Windows3.1 的 应 用 程 序。Delphi 2.0 中 增 加 了 数 据 模 块 (Data Module) 等 多 种 高 效 的 数 据 重 用 功 能。 现 在 第 三 代 版 本Delphi 3 — — 多 层 结 构 的32 位 快 速 开 发 工 具 又 给 开 发 人 员 带 来 了 全 新 的 多 层 结 构 概 念。
---- 早 在1980 年 第 一 个 数 据 库 管 理 系 统 出 现 时, 数 据 库 的 世 纪 就 已 悄 然 开 始。 那 时 的 观 念 是 由 应 用 程 序 控 制 关 系 型 数 据 库, 这 种 数 据 处 理 的 模 式 一 般 称 为 单 层 结 构(1 -Tier)。 由 于 这 种 结 构 的 数 据 库 程 序 占 用 计 算 机 资 源 较 多, 于 是 在80 年 代 中 期, 数 据 库 应 用 开 始 转 向 C/S 结 构, 也 就 是 所 谓 的 两 层 结 构(2 -Tier)。 这 种 结 构 在 近 十 年 内 不 但 得 到 了 广 泛 的 运 用, 而 且 相 当 成 功。 然 而, 在 两 层C/S 结 构 成 功 的 背 后 却 逐 渐 暴 露 出 其 构 架 上 的 缺 陷。 其 中 最 明 显 的 问 题 表 现 在 应 用 程 序 的 伸 缩 性 和 维 护 方 面。 例 如, 一 个 跨 国 企 业 如 何 把 数 据 库 管 理 系 统 及 其 应 用 程 序 分 散 到 十 分 缓 慢 的 网 络 上, 如 何 控 制 数 据 的 统 一 性 和 完 整 性; 一 旦 应 用 程 序 有 任 何 改 动, 维 护 人 员 就 必 须 修 改 每 一 个 客 户 端 上 的 应 用。
---- 新 一 代 数 据 库 管 理 系 统 在 传 统 的 C/S 结 构 中, 增 加 了 应 用 程 序 服 务 器 — — 这 种 新 的 结 构 就 是 所 谓 的n -Tier 或Multi -Tier。 应 用 程 序 服 务 器 包 括 了 统 一 的 界 面、 业 务 规 则 的 制 定 和 数 据 处 理 逻 辑 的 规 定 等 等。 多 层 应 用 服 务 技 术 允 许 分 割 应 用 程 序, 本 地 计 算 机 上 无 须 安 装 一 整 套 数 据 库 工 具, 就 可 以 在 另 一 台 机 器 上 存 取 数 据。 同 时 它 允 许 对 业 务 规 则 和 进 程 进 行 集 中 管 理, 并 在 整 个 网 络 上 分 发、 实 现 进 程 负 载 的 动 态 调 节。
---- 众 所 周 知, 开 发 服 务 器 级 的 应 用 程 序 要 比 开 发 单 纯 应 用 级 的 程 序 困 难 得 多, 有 很 多 系 统 服 务 需 要 考 虑。 如 果 没 有 一 种 好 的 工 具, 对 于 大 多 数 程 序 员 来 说, 开 发 一 个 复 杂 的 多 层 结 构 应 用 只 能 是 一 种 理 想。 为 了 使 这 种 理 想 方 便 地 实 现,Borland 公 司 推 出 了 开 发 多 层 结 构 所 需 的 技 术 和 工 具 集 — —MIDAS。
MIDAS — — 多 层 分 布 式 应 用 程 序 服 务 器--- - 对MIDAS 这 个 名 字 一 般 有 两 种 理 解。MIDAS 是Multi -tier Distributed Application Services Suite( 多 层 分 布 式 应 用 程 序 服 务 包) 的 缩 写, 这 也 诠 释 了MIDAS 技 术 的 实 质。 也 许 因 为 这 个 本 义 太 长, 很 多 人 更 愿 意 把 它 理 解 成Multi -tier Made Easy, 这 也 是MIDAS 的 作 用。 多 层 计 算(Multi -tiered computing) 是 业 界 对 此 类 技 术 通 用 的 术 语, 而Multi -tier 是Borland 公 司 采 用 的 技 术 术 语。Borland 典 型 的 三 层 结 构 如 下: 第 一 层 是 数 据 库 服 务 器, 第 二 层 是 应 用 服 务 器, 第 三 层 是 瘦 客 户 机。
---- 数 据 库 服 务 器 是 诸 如InterBase、Oracle、Sybase、MS SQL Server 等 数 据 库, 应 用 服 务 器 和 瘦 客 户 机 由Delphi 建 立。 大 多 数 情 况 下, 数 据 库 访 问 软 件( 例 如BDE, SQL *NET 等 等) 与 应 用 服 务 器 运 行 在 同 一 台 机 器 上。
---- 应 用 服 务 器 主 要 基 于Borland 的 分 布 式 数 据 技 术, 至 少 包 括 两 方 面 的 内 容:
---- 1. 内 置 在Delphi 组 件 中;
---- 2. OLEnterprise 产 品 对 分 布 式 计 算 和 负 载 平 衡 提 供 超 强 的 支 持。
---- 内 置 在Delphi 组 件 中 使 你 能 很 容 易 地 使 用DCOM、Socket 或 OLEnterprise 连 接 两 台 机 器, 并 在 两 者 之 间 来 回 传 输 数 据 集。OLEnterprise 工 具 提 供DCOM 的 选 择 方 法 简 化 了 连 接 两 台 机 器 的 任 务, 尤 其 是 对 两 台 运 行Windows 95 的 机 器 更 是 如 此。OLEnterprise 使 用 户 能 访 问Object Broker, 它 允 许 在 几 个 服 务 器 中 随 机 分 配 任 务 负 载。 此 外, 还 可 以 在 几 台 机 器 上 装 载 服 务 器 工 具, 每 次 实 行 连 接 时,Broker 会 选 择 其 中 一 台 机 器。 例 如, 如 果 你 有100 个 客 户 端 和3 台 服 务 器,Object Broker 会 随 机 分 配 负 载 给3 台 服 务 器, 每 台 服 务 器 大 约 有33 个 客 户 端。Broker 会 在 服 务 器 异 常 关 闭 时 提 供 支 持。 编 写 几 行 代 码 可 以 提 供 服 务 器 错 误 处 理, 把 客 户 端 从 出 现 问 题 的 服 务 器 切 换 到 另 一 台 正 常 运 行 的 服 务 器。 另 外Broker 不 会 试 图 把 一 个 新 的 客 户 端 连 接 到 已 经 关 闭 的 服 务 器 上, 相 反 它 会 自 动 连 接 到 其 中 一 台 正 在 运 行 的 服 务 器 上。
---- 分 布 式 数 据 集 可 以 基 于DCOM, 在 客 户 端 没 有 任 何 数 据 库 工 具 的 情 况 下 读 取 远 程 数 据。 有 些 用 户 可 能 会 有 这 样 的 疑 问: 通 过 浏 览 器 和Web 服 务 器 也 能 在 客 户 端 没 有 任 何 数 据 库 工 具 的 情 况 下 观 察 远 程 机 器 上 的 数 据 集, 为 什 么 还 要 采 用 分 布 式 数 据 集 呢 ? 这 是 因 为 浏 览 器 的 功 能 远 不 如Borland 分 布 式 数 据 集 的 功 能。 如 果 没 有 一 种 强 大 的 第 三 方 工 具( 如IntraBuilder), 要 增 强 浏 览 器 的 约 束 条 件, 或 者 在 浏 览 器 中 加 入 或 建 立 一 个 一 到 多 的 关 系 表 是 非 常 困 难 的。 但 这 些 功 能 都 可 以 在Delphi 的 多 层 应 用 程 序 中 简 单 地 实 现,Delphi 的 编 译 应 用 程 序 比 基 于HTML 的 应 用 更 快 速、 更 易 于 应 答。
---- 分 布 式 数 据 集 允 许 在 客 户 端 的 应 用 中 使 用 所 有 标 准 的Delphi 组 件, 包 括 数 据 库 工 具, 但 是 客 户 端 无 须 装 载BDE、ODBC 或 者 任 何 数 据 库 类 库 ( 例 如Oracle SQL *NET、 Sybase CT -Lib 等 等) 。 当 然 网 络 上 的 某 些 地 方 需 要BDE 或 类 似 的 引 擎, 但 是 客 户 端 无 须 装 载。 简 言 之, 现 在 只 需 要 一 套 服 务 器 端 的 数 据 库 工 具, 每 一 个 客 户 端 就 可 以 使 用 它。
---- 分 布 式 数 据 集 是 缩 减 网 络 通 信 量 的 一 种 方 法。 从 服 务 器 端 下 载 数 据 后, 在 客 户 端 操 作 数 据 而 无 须 初 始 化 任 何 网 络 交 易, 除 非 需 要 更 改 服 务 器 端。 这 意 味 着 在 不 启 动 网 络 交 易 的 情 况 下, 可 以 编 辑、 插 入、 删 除 多 个 记 录。 更 改 服 务 器 数 据 时, 可 以 在 预 先 选 定 的 时 间 段 内 把 多 个 数 据 包 送 到 网 络 上。
---- 另 外, 当 客 户 端 从 网 络 上 断 开 时, 仍 然 可 以 利 用“briefcase model" 访 问 数 据。 其 操 作 步 骤 如 下: 先 把 一 个 远 程 数 据 库 复 制 到 磁 盘 上, 然 后 关 闭 计 算 机, 再 重 新 引 导 它、 断 开 网 络 连 接、 编 辑 数 据, 接 着 重 新 联 网 并 修 改 数 据 库。 所 有 这 些 都 可 以 在 没 有 大 型 数 据 库 工 具 的 客 户 端 完 成。 这 说 明 为 了 操 作 数 据, 客 户 端 不 必 每 时 每 刻 都 与 服 务 器 连 接。 这 对 于 膝 上 型 计 算 机 用 户 和 想 要 保 持 数 据 库 通 信 量 最 小 的 站 点 是 非 常 理 想 的。
---- MIDAS 技 术 的 另 一 方 面 是 提 供 访 问 数 据 库 约 束 条 件。 当 从 服 务 器 上 卸 载 数 据 时, 可 以 同 时 卸 载 一 套 自 动 执 行 的 约 束 条 件。 约 束 条 件 可 以 帮 助 程 序 员 确 保 用 户 输 入 合 法 的 数 据。 当 重 新 连 到 网 络 上 时, 数 据 可 以 被 正 确 地 修 改。 如 果 你 在 更 改 数 据 库 时 偶 然 发 生 了 一 个 错 误, 那 么 内 建 的 机 制 会 帮 助 程 序 员 报 告 和 处 理 错 误。 例 如, 如 果 另 一 个 用 户 已 经 更 改 了 你 正 试 图 更 改 的 那 条 记 录, 那 么 你 将 看 到 一 个 提 示 你 如 何 处 理 的 选 项 表。 在Delphi Object Repository 中 的 一 个 预 建 表 单 可 以 使 你 的 应 用 程 序 简 单 地 实 现 错 误 处 理。
---- Borland 多 层 计 算 的 另 一 个 重 要 功 能 是 将 数 据 库 的 负 载 分 散 到 多 个 服 务 器 上。 这 样, 一 旦 发 生 错 误 也 能 恢 复。 概 括 起 来 讲, 这 些 技 术 存 在 于 三 种Broker 中:
---- 第 一 种 叫 做Remote Data Broker,Remote Data Broker 结 构 的 精 髓 是 让 每 一 个 客 户 端 不 再 需 要BDE, 取 而 代 之 的 是 一 个 中 央 化 的BDE, 以 集 中 管 理 的 方 式 降 低 每 一 个 客 户 在BDE 上 所 需 的 开 销 和 复 杂 度。
---- 第 二 种 叫 做Constraint Broker, 它 所 扮 演 的 角 色 是 保 证 所 有 客 户 数 据 的 一 致 性 及 数 据 的 完 整 性。
---- 第 三 种 是Business Object Broker, 它 的 目 的 是 给 一 些 关 键 性 的 商 业 应 用 程 序 提 供 一 个 快 速 且 可 信 赖 的 使 用 环 境。 为 了 满 足 这 种 高 层 次 的 要 求,Business Object Broker 会 自 动 地 将 应 用 程 序 做 适 当 的 划 分, 并 复 制 重 要 的 业 务 规 则 到 每 一 个 区 间, 以 达 到 速 度 的 要 求。
实 现 工 具---- Borland 提 供 了 四 种Delphi 工 具 帮 助 用 户 实 现 分 布 式 数 据 集。 前 两 个 在 服 务 器 端:
---- 1. 远 程 数 据 模 块 像 标 准 数 据 模 块 一 样, 它 不 但 可 以 将 数 据 传 播 到 当 前 的 应 用 中, 而 且 会 传 到 网 络 上 的 特 定 区 域 中。 特 别 是 它 们 把 简 单 的 数 据 模 块 转 化 成COM 对 象, 允 许 你 通 过DCOM 访 问 远 程 服 务 器 上 的 数 据 库。
---- 2. TProvider 组 件 就 像 可 以 驻 留 在 标 准 数 据 模 块 中 的TTable 组 件 一 样, 驻 留 在 远 程 数 据 模 块 中, 不 同 的 是TProvider 在 网 络 上 发 布 数 据 表。TTable 和TQuery 组 件 都 含 有Provider 属 性。 但 是 如 果 把 它 作 为 一 个 独 立 的 组 件 访 问, 会 有 更 大 的 灵 活 性 和 力 量。 特 别 是 把TProvider 组 件 与TTable 或TQuery 组 件 建 立 连 接, 网 络 上 的 其 它 程 序 就 可 通 过DCOM 从TTable 或TQuery 访 问 数 据。 远 程 数 据 模 块 的 任 务 就 是 使 客 户 端 访 问 服 务 器 上 特 定 的Provider。
---- 在 客 户 端 可 以 利 用 两 个 组 件 访 问 服 务 器 提 供 的 数 据:
---- 1. TRemoteServer 组 件 把 客 户 端 连 到 服 务 器 上, 特 别 是 连 到 服 务 器 的 远 程 数 据 模 块 上。 更 明 确 地 说 是 连 到 远 程 数 据 模 块 支 持 的COM 接 口 上。TRemoteServer 能 浏 览 可 用 的 服 务 器, 一 旦 找 到 服 务 器,TRemoteServer 就 可 与 之 连 接。
---- 2. TClientDataSet 与TRemoteServer 组 件 连 接 在 一 起, 在 服 务 器 上 就 得 到 一 个 特 定 的Provider 。 简 言 之,TClientDataSet 组 件 扮 演 了 与TQuery 或 TTable 同 样 的 角 色, 只 不 过 它 是 为 远 程 站 点 提 供 数 据 服 务。 如 同 在 许 多 标 准 的Delphi 应 用 程 序 中 传 统TDatabase、 TTable、 TDataSource、TDBGrid 组 件 的 配 置 结 构 一 样, 在 远 程 数 据 集 中 使 用TRemoteServer、TClientDataSet、TDataSource 和 TDBGrid 组 件, 它 们 的 配 置 只 是 稍 有 不 同。 在 这 个 新 的 方 案 中,TRemoteServer 的 作 用 类 似 于TDatabase 的 作 用, 而TClientDataSet 组 件 与TTable 或TQuery 组 件 所 起 的 作 用 又 极 其 相 似。
结 论---- MIDAS 为 多 层 结 构 的 应 用 开 发 提 供 了 强 大 的 功 能, 这 使 得 开 发 者 再 也 无 需 为 越 来 越 庞 大 的 数 据 及 应 用 发 愁 了。 在Delphi 3.0 Client/Server 版 中 打 包 了MIDAS 的 开 发 版, 它 可 以 用 于 多 层 结 构 应 用 的 开 发 及 调 试, 在 应 用 分 布 时, 还 需 要 另 外 购 买Borland MIDAS for Delphi。 MIDAS 是Borland 公 司 金 门 结 构 系 列 产 品 的 一 部 分。 在 不 久 的 将 来, 金 门 结 构 的 其 它 开 发 工 具 如:C + +Builder、JBuilder 中 也 将 打 包MIDAS, 以 帮 助 用 户 用C + +、Java 语 言 进 行 多 层 结 构 应 用 程 序 的 开 发。
|
[文章录入员:fightter] |
|
|
|
|