组 件 对 象 模 型 及 其 重 用 范 畴
----
COM 组 件 是 遵 循COM 规 范 编 写、 以 Win32 动 态 链 接 库(D L L) 或
可 执 行 文 件(EXE) 形 式 发 布 的 可 执 行 二 进 制 代 码, 能 够 满 足 对 组 件 架 构 的 所
有 需 求。 遵 循COM 的 规 范 标 准, 组 件 与 应 用、 组 件 与 组 件 之 间 可 以 互 操 作, 极 其
方 便 地 建 立 可 伸 缩 的 应 用 系 统。COM 是 一 种 技 术 标 准, 其 商 业 品 牌 则 称 为ActiveX。
----
近 几 年 来, 组 件 在 软 件 开 发 中 得 到 了 广 泛 的 应 用, 尤 其 是Windows
DNA 将 组 件 应 用 于Internet,
进 行 各 种 事 务 处 理, 显 示 出 了 强 大 的 功 能。 从 组 件 机 制 和 接 口 标 准 方 面 探 讨
组 件 不 是 一 件 轻 松 的 事 情, 我 们 这 里 仅 从 工 程 应 用 的 范 畴 讨 论 组 件 的 开 发 与
使 用 问 题。 组 件 在 应 用 开 发 方 面 具 有 以 下 特 点:
----
第 一, 组 件 是 与 开 发 工 具 语 言 无 关 的。 开 发 人 员 可 以 根 据 特 定 情 况 选 择 特 定
语 言 工 具 实 现 组 件 的 开 发。 对 于Internet
应 用 而 言, 完 成 事 务 逻 辑 处 理
计 算 任 务 的 组 件 以MS Visual Basic 进 行 开 发 是 首 选 方 案。 其 结 果 是 开 发 迅
速, 调 试 方 便, 编 译 之 后 的 组 件 以 二 进 制 的 形 式 发 布, 可 跨 W i n d o w s 平
台 使 用, 而 且 源 程 序 代 码 不 会 外 泄, 有 效 地 保 证 了 组 件 开 发 者 的 版 权。
----
第 二, 通 过 接 口 有 效 保 证 了 组 件 的 复 用 性。 一 个 组 件 具 有 若 干 个 接 口, 每 个 接
口 代 表 组 件 的 某 个 属 性 或 方 法。 其 他 组 件 或 应 用 程 序 可 以 设 置 或 调 用 这 些 属
性 和 方 法 来 进 行 特 定 的 逻 辑 处 理。 组 件 和 应 用 程 序 的 连 接 是 通 过 其 接 口 实 现
的。 负 责 集 成 的 开 发 人 员 无 需 了 解 组 件 功 能 是 如 何 实 现 的, 只 需 简 单 地 创 建
组 件 对 象 并 与 其 接 口 建 立 连 接。 在 保 证 接 口 一 致 性 的 前 提 之 下, 可 以 调 换 组
件、 更 新 版 本, 也 可 以 把 组 件 安 插 在 不 同 的 应 用 系 统 中。
----
第 三, 组 件 运 行 效 率 高、 便 于 使 用 和 管 理。 因 为 组 件 是 二 进 制 代 码, 运 行 效 率
比ASP 脚 本 高 很 多。 核 心 的 商 务 逻 辑 计 算 任 务 必 须 由 组 件 来 担 纲,ASP 脚 本 只
起 组 装 的 角 色。 而 且 组 件 在 网 络 上 的 位 置 可 被 透 明 分 配, 组 件 和 使 用 它 的 程
序 能 在 同 一 进 程 中、 不 同 进 程 中 或 不 同 机 器 上 运 行。 组 件 之 间 是 相 互 独 立 的,MTS
使 对 组 件 的 管 理 更 加 简 便。 组 件 对 象 通 过 一 个 内 部 引 用 计 数 器 来 管 理 它 自 己
的 生 存 期, 这 个 计 数 器 存 放 任 何 时 候 连 接 到 该 对 象 的 客 户 数。 当 引 用 计 数 变
为0 时, 对 象 可 以 把 自 己 从 内 存 中 释 放 掉。 这 使 程 序 员 不 必 考 虑 与 提 供 可 共 享
资 源 有 关 的 问 题。
----
对 于 使 用 组 件 的 集 成 开 发 者 而 言, 一 个 组 件 就 是 一 个 接 口 集, 只 有 通 过 接 口
才 能 与 组 件 进 行 通 信; 而 对 于 组 件 来 说, 接 口 是 包 含 一 个 函 数 指 针 数 组 的 内
存 结 构, 每 个 数 组 元 素 的 内 容 是 一 个 由 组 件 所 实 现 的 函 数 地 址。 在 一 个 应 用
程 序 中, 起 决 定 作 用 的 是 组 件 的 接 口 而 不 是 组 件 本 身。 只 要 组 件 的 接 口 保 持
不 变, 组 件 可 以 任 意 升 级 或 更 换, 而 应 用 程 序 不 必 做 任 何 修 改。 接 口 将 特 定 的
行 为 封 装 起 来, 一 方 面 使 客 户 可 以 用 同 样 的 方 式 处 理 不 同 组 件, 一 方 面 同 一
组 件 可 以 在 不 同 的 应 用 中 使 用。 这 些 特 点 决 定 了 组 件 必 然 有 很 好 的 重 用 性。
其 重 用 性 主 要 表 现 在 以 下 的 使 用 场 合:
----
COM 组 件 并 不 是 专 为 一 种Windows 平 台 而 设 计 的, 同 一COM 组 件 可 以 在Win95、Win98、Workstation
及NT 上 使 用。 组 件 既 可 以 被 嵌 入 动 态Web 页 面, 又 可 以 在LAN 或 桌 面 环 境 的VB
和 VC 等 应 用 中 使 用。
-
COM 组 件 之 间 是
彼 此 独 立 的。 当 应 用 需 求 发 生 变 更 时, 可 能 需 要 更 换 中 间 层 的 个 别COM 组
件, 但 这 并 不 会 影 响 其 他 组 件 的 继 续 使 用。
-
COM 组 件 具 有 若
干 对 外 接 口( 属 性 和 方 法), 相 当 于 芯 片 的" 管 脚 "。 根 据 不 同
的 应 用 需 求, 可 以 有 选 择 地 使 用 不 同 的 管 脚。 即 使 某 些 管 脚 被" 废
弃",COM 组 件 本 身 仍 然 可 继 续 使 用。
-
同 一COM 组 件 可
以 在 不 同 的 应 用 环 境 中 重 复 使 用。COM 组 件 不 一 定 是 为 专 门 的 系 统 而 设
计, 可 以 有 较 宽 的 应 用 领 域, 不 会 因 为 某 一 系 统 的" 过 时" 而
被" 废 弃"。
----COM
组 件 及 其 较 高 的 可 重 用 性 为 我 们 展 示 了 一 种 崭 新 的 软 件 设 计 思 路, 以 组 件 对
象 为 中 心 的 设 计 方 法 把 硬 件 以 芯 片 为 中 心 的 工 艺 思 想 恰 如 其 分 地 融 合 于 软
件 的 面 向 对 象 的 分 析、 设 计 和 施 工 之 中, 使 面 向 对 象 的 概 念 和 方 法 从 工 具 语
言 的 层 次 一 下 子 跃 上 了 系 统 的 应 用 层, 也 为DNA 思 想 奠 定 了 现 实 基 础。
基 于 组 件 对 象 的 软
件 工 程 方 法
----
与 传 统 的 软 件 开 发 不 同, 在 基 于 组 件 对 象 的 软 件 工 程 中 应 着 重 进 行 组 件 的 规
划、 设 计 与 开 发。 如 何 将 传 统 的 软 件 工 程 学 和 组 件 对 象 合 理 地 结 合 在 一 起, 至
今 还 处 在 发 展 和 完 善 阶 段, 达 成 共 识 仍 需 时 日。 一 般 而 言, 在 软 件 开 发 的 过 程
中, 首 先 应 逐 步 深 入 对 组 件 进 行 功 能 分 析、 规 划 和 对 外 接 口 的 设 计, 进 而 落 实
内 部 细 节 的 实 现, 最 终 完 成 组 件 的 部 署 与 管 理。 图1 显 示 了 进 行 基 于 组 件 对 象
的 软 件 工 程 开 发 过 程。
----
按 常 规 的 软 件 工 程 方 法 进 行 系 统 需 求 分 析 后, 将 得 到 系 统 的 数 据 流 图DFD 和
系 统 结 构 图SC, 由 此 确 定 系 统 需 要 处 理 的 各 种 应 用 请 求。 此 时 可 以 初 步 确 定
所 需 的COM 组 件, 再 由 划 分 出 的 若 干 组 件 规 划 其 需 要 实 现 的 功 能。 组 件 的 规 划
是 否 合 理 对 于 基 于Web 的 软 件 工 程 至 关 重 要, 规 划 不 合 理 往 往 导 致 工 程 的 延
期 或 反 复。
----
一 般 来 说,COM 组 件 的 规 划 应 遵 循 以 下 原 则:
-
用 户 对 于 数 据 库
的 请 求 应 通 过COM 组 件 实 现。 将 访 问 权 限 授 予COM 组 件, 保 证 了 访 问 数 据
库 的 安 全 性; 把 对 每 个 用 户 的 连 接 变 成 和COM 组 件 的 连 接, 以 避 免 数 据 库
资 源 的 浪 费 和 崩 溃 的 危 险。
-
组 件 粒 度 不 宜 过
大, 尽 量 让 每 一 个COM 组 件 实 现 某 一 个 或 一 类 相 似 的 应 用 请 求, 而 不 要 追
求 其 功 能 的 过 分 繁 多。 保 证 每 个 组 件 对 象 完 成 的 商 务 逻 辑 功 能 相 对 单 一,
有 助 于 发 挥 重 用 机 制 和 调 节DNA 的 适 应 性。
-
COM 组 件 与 用 户
的 接 口 应 尽 量 简 单、 友 好。
-
COM 组 件 如 果 是
可 视 的(ActiveX 控 件), 则 只 能 有 一 个 可 视 化 界 面。
----
进 行 系 统 的 详 细 设 计 时, 需 进 行 数 据 库 设 计。 由 于 已 经 初 步 划 分 出 需 要 定 制
的COM 组 件, 此 时 可 以 根 据 库 表 结 构 进 一 步 确 定 组 件 的 对 外 接 口, 即 组 件 支 持
的 事 件、 方 法 和 属 性。 一 般 访 库 操 作 由 组 件 完 成, 所 以COM 组 件 应 能 识 别 不 同
的 访 库 命 令, 进 行 特 定 处 理, 并 将 处 理 结 果 作 为 对 外 接 口 返 回 给 用 户。 与 传 统
的 软 件 工 程 学 有 所 不 同, 基 于 组 件 对 象 的 应 用 系 统 是 由 组 件 实 现 特 定 应 用 处
理 和 商 务 逻 辑 计 算 任 务, 而 其 具 体 实 现 对 集 成 开 发 人 员 来 说 是 封 装 好 的, 他
们 不 必 耗 费 精 力 去 关 心 实 现 细 节, 只 需 规 定 应 用 系 统 与 组 件 的 接 口, 指 明 在
何 时、 何 处 调 用 哪 个 组 件 即 可。
----
组 件 的 接 口 在 整 个 应 用 系 统 中 起 决 定 性 作 用。 接 口 设 计 不 合 理, 不 仅 影 响 组
件 本 身 的 可 重 用 性, 并 且 将 影 响 整 个 应 用 系 统 的 升 级, 缩 短 系 统 的 生 命 周 期。
所 以 确 定 组 件 的 接 口 要 经 过 深 思 熟 虑, 使 它 能 支 持 各 种 不 同 的 应 用。
----
接 口 应 具 有 较 高 的 通 用 性, 以 提 高 整 个 应 用 系 统 的 复 用 能 力, 同 时 还 要 兼 顾
简 单 和 实 用 性。 举 例 说, 如 果 我 们 需 要 定 制 一 个 组 件 访 问 特 定 的 数 据 库 并 将
结 果 返 回 给 用 户。 若 只 是 为 该 系 统 设 计, 可 以 将 库 名、 表 名、 访 库 语 句 全 部 封
装 在 组 件 内 部, 这 样 的 组 件 接 口 简 单, 但 重 用 性 很 小。 若 将 库 名、 表 名 等 作 为
组 件 的 接 口, 组 件 的 重 用 性 大 大 提 高 了, 但 接 口 复 杂 了, 不 利 于 组 件 的 拆 换。
建 议 的 做 法 是, 如 果 希 望 系 统 有 再 次 开 发 或 移 植 的 潜 力, 可 以 将 库 表 名 作 为
接 口, 访 库 语 句 应 封 装 在 组 件 内 部。 如 果 将 访 库 权 限 交 给 用 户, 既 不 利 于 数 据
库 的 安 全 性, 也 会 给 应 用 程 序 带 来 很 大 的 负 担。
----组
件 的 内 部 实 现 细 节 不 能 反 映 到 接 口 中, 接 口 同 内 部 实 现 细 节 的 隔 离 程 度 越 高,
组 件 或 应 用 发 生 变 化 对 接 口 的 影 响 就 越 小。 在 设 计 组 件 接 口 时, 还 要 尽 量 估
计 到 将 来 可 能 出 现 的 各 种 情 况, 力 争 设 计 出 具 有 高 复 用 性、 适 应 性 和 灵 活 性
的 接 口。
----
完 成 系 统 的 详 细 设 计 之 后, 接 下 来 进 行 组 件 的 开 发 和 测 试。 组 件 不 依 赖 于 特
定 语 言, 开 发 者 可 根 据 实 际 需 要 选 择 使 用VB、VC 或 Java 作 为 开 发 工 具。COM 组
件 的 开 发 工 作 可 委 托 给 专 门 的 开 发 组。 组 件 的 接 口 一 旦 确 定, 组 件 的 开 发 和
应 用 系 统 实 现 的 其 他 工 作 可 由 各 个 专 门 小 组 同 时 进 行, 可 大 大 缩 短 开 发 时 间。
----
在 最 后 实 现 阶 段, 把 经 过 测 试 的COM 组 件 集 成 到 动 态Web 的ASP 页 面 脚 本 中, 并
进 行 系 统 测 试。 在 集 成 过 程 中, 一 般 要 交 替 使 用Visual InterDev 和FrontPage
作 为 工 具。 具 体 实 施 步 骤 如 下:
-
通 过Visual InterDev
建 立Web 站 点, 连 接 服 务 器 并 在Web 服 务 器 的 根 目 录 下 建 立 站 点 主 页。 于
是 在 服 务 器 上 同 时 建 立 了 一 个 指 向 新Web 目 录 的 与 站 点 同 名 的 新 虚 拟 根。InterDev
还 会 自 动 在 项 目 中 放 置 文 件Global.asa 和 文 件 夹Images, 前 者 负 责 存 储
整 个 应 用 程 序 中 用 到 的 全 局 设 置, 后 者 包 含 了Web 页 面 上 所 要 显 示 的 各
种 图 形。
-
在FrontPage 中
规 划 和 编 辑 页 面。 可 以 设 计 页 面 的 背 景 色、 标 题 字 体, 快 速 建 立 超 链 接,
插 入 图 像, 插 入 系 统 的 或 定 制 的ActiveX 控 件 和Java 小 程 序 等。 当 插 入 一
个ActiveX 控 件 时, 利 用ActiveX Properties 设 置 控 件 的 有 关 属 性 值, 用Script
Wizard 编 写ActiveX 控 件 之 间 进 行 交 互 操 作 的 脚 本。
-
返 回Visual InterDev
中 编 写ASP 脚 本, 重 点 是 功 能 上 的 设 计。ActiveX DLL 承 载 着 商 务 逻 辑 计
算 的 重 任。 对 页 面 进 行 本 地 测 试, 在 浏 览 器 中 显 示 编 辑 好 的 动 态Web 页 面。
应 避 免 在FrontPage 中 的 工 作 区 编 辑 ASP 文 件。
-
返 回FrontPage,
对 页 面 进 行 进 一 步 的 修 饰。 还 可 以 利 用PhotoShop 等 工 具 加 入 图 画、 动 画、
声 音 和 视 频 来 丰 富、 美 化 你 的 页 面。
-
在FontPage Explorer
下 利 用 其 提 供 的Publish 功 能 将 其 导 入IIS 服 务 器, 从 而 使 客 户 用 前 端 的
浏 览 器 从 服 务 器 上 下 载 这 些 应 用 程 序。 具 体 过 程 如 图2 描 述。
----
组 件ActiveX DLL 的 引 用 方 法 很 多。 既 可 以 在ASP 脚 本 中 直 接 引 用, 也 可 在 另
一 个ActiveX DLL 中 引 用, 还 可 通 过 编 写VBScript 及ASP 脚 本 将 若 干 个ActiveX
DLL 连 接 起 来。
----至
此 基 本 上 完 成 了 应 用 系 统 的 设 计 与 实 现。 然 后, 还 必 须 对 此 应 用 系 统 进 行 反
复 测 试。 应 用 系 统 由 若 干 个 封 装 好 的 组 件 组 装 而 成, 只 需 着 重 测 试 组 件 与 应
用 系 统 的 接 口 是 否 将 它 们 良 好 地" 对 接" 在 一 起。 若 某 个 处 理 要 求
不 能 正 确 完 成, 只 需 修 改 实 现 该 功 能 的 组 件 即 可。 同 时 也 不 可 忽 视 的 是 系 统
的 安 全 性 和 健 壮 性。 可 能 出 现 多 个 用 户 同 时 访 问 同 一 主 页 的 情 况, 要 在 带 宽
一 定 的 条 件 下 尽 量 缩 短 页 面 下 载 的 时 间( 例 如 在 同 一 页 面 中 定 制 的ActiveX
控 制 不 宜 过 多), 并 避 免 造 成 服 务 器 因 网 络 拥 塞 而 产 生 崩 溃。 在 基 于 组 件 的 系
统 中, 我 们 利 用MTS 对 组 件 进 行 管 理, 实 现 对 组 件 的 多 线 程 支 持 并 按 权 限 等 级
把 组 件 划 分 给 具 有 相 应 权 限 的 使 用 人 员 组。
----
总 的 来 说, 基 于 组 件 对 象 的 软 件 工 程 方 法 较 传 统 的 软 件 工 程 方 法 有 了 很 大 的
进 步。 利 用 这 种 开 发, 我 们 可 以 根 据 自 身 的 特 长 组 成 开 发 小 组, 并 行、 独 立 地
进 行 开 发, 可 成 倍 缩 短 开 发 时 间, 所 开 发 的 系 统 也 比 较 健 壮、 稳 定。
|