| #36890; 信 采 用 标 准 输 入 / 输 出 方 式 。 当 Web 服 务 器 接 收 到 浏 览 器 发 来 的 CGI 请 求 时 , 首 先 对 该 请 求 进 行 分 析 , 并 设 置 所 需 的 环 境 变 量 或 命 令 行 参 数 , 然 后 创 建 一 个 子 进 程 启 动 CGI 程 序 。 CGI 程 序 执 行 完 毕 后 , 利 用 标 准 输 出 将 执 行 结 果 返 回 Web 服 务 器 。 CGI 的 输 出 类 型 可 以 是 HTML 文 档 、 图 形 / 图 像 、 纯 文 本 或 声 音 等 。
(2)Win CGI
标 准 CGI 采 用 标 准 输 入 / 输 出 进 行 数 据 通 信 , 但 许 多 Windows 环 境 的 编 程 工 具 ( 如 Visual Basic 和 Borland Delphi 等 ) 不 支 持 标 准 输 入 / 输 出 方 式 , 因 此 就 无 法 用 这 些 工 具 来 开 发 基 于 标 准 CGI 的 应 用 程 序 。
Win CGI 也 称 为 间 接 CGI 或 缓 冲 CGI 。 这 种 方 法 在 ( 不 支 持 标 准 输 入 / 输 出 的 )CGI 程 序 和 CGI 接 口 之 间 插 入 一 个 缓 冲 程 序 , 该 缓 冲 程 序 与 CGI 接 口 之 间 用 标 准 输 入 / 输 出 进 行 通 信 ; CGI 程 序 则 采 用 临 时 文 件 ( 缓 冲 区 ) , 而 不 是 标 准 输 入 / 输 出 进 行 数 据 通 信 。
当 Web 服 务 器 接 收 到 浏 览 器 的 请 求 时 , 先 创 建 一 个 子 进 程 启 动 缓 冲 程 序 , 该 缓 冲 子 进 程 与 Web 服 务 器 进 行 通 信 , 它 通 过 标 准 输 入 / 输 出 、 环 境 变 量 和 命 令 行 参 数 获 得 有 关 数 据 , 并 将 这 些 数 据 保 存 在 一 个 输 入 缓 冲 区 中 ; 然 后 , 缓 冲 子 进 程 再 创 建 一 个 子 进 程 启 动 CGI 程 序 , CGI 程 序 读 取 输 入 缓 冲 区 中 的 内 容 , 处 理 浏 览 器 的 请 求 , 并 将 要 输 出 的 内 容 存 入 输 出 缓 冲 区 ; 缓 冲 程 序 通 过 环 境 变 量 或 命 令 行 参 数 等 方 式 传 递 输 入 缓 冲 区 和 输 出 缓 冲 区 的 地 址 ( 或 临 时 文 件 名 ) 到 CGI 子 进 程 。
在 整 个 处 理 过 程 中 , 缓 冲 子 进 程 与 CGI 子 进 程 之 间 应 保 持 同 步 , 以 监 测 CGI 程 序 执 行 的 状 态 。 当 缓 冲 子 进 程 得 到 CGI 子 进 程 的 输 出 时 , 设 置 有 关 环 境 变 量 并 终 止 该 CGI 子 进 程 , 然 后 采 用 标 准 输 出 与 Web 服 务 器 通 信 , 并 通 过 Web 服 务 器 将 CGI 程 序 的 输 出 结 果 返 回 给 浏 览 器 。 Web 服 务 器 进 程 与 缓 冲 进 程 也 应 保 持 同 步 , 以 监 测 缓 冲 程 序 执 行 的 状 态 。
Win CGI 最 主 要 的 特 点 是 : Web 服 务 器 与 CGI 程 序 之 间 的 数 据 交 换 是 通 过 缓 冲 区 , 而 不 是 通 过 标 准 输 入 / 输 出 进 行 的 。
显 而 易 见 , CGI 程 序 是 作 为 独 立 的 外 部 应 用 程 序 来 执 行 的 , 它 与 Web 服 务 器 上 的 其 他 进 程 竞 争 处 理 器 资 源 , 因 此 导 致 运 行 速 度 缓 慢 。 此 外 , 用 CGI 开 发 Web 应 用 是 相 当 困 难 的 , 程 序 员 不 仅 要 掌 握 HTML 语 言 , 还 要 精 通 低 级 编 程 语 言 。 在 数 据 库 访 问 过 程 中 , 连 接 状 态 的 管 理 是 很 重 要 的 , 假 如 没 有 状 态 管 理 , 则 来 自 浏 览 器 的 每 一 次 请 求 都 需 要 一 个 对 连 接 的 建 立 和 释 放 过 程 , 这 样 效 率 肯 定 很 低 。 遗 憾 的 是 CGI 不 提 供 状 态 管 理 功 能 。 再 者 , 每 个 CGI 程 序 必 须 用 某 个 特 定 数 据 库 服 务 器 专 用 的 SQL 语 言 来 手 工 编 写 数 据 库 接 口 程 序 , 故 可 移 植 性 较 差 。
2 Web API 技 术
Web API 通 常 以 动 态 链 接 库 (DLL) 的 形 式 提 供 , 是 驻 留 在 Web 服 务 器 上 的 程 序 , 它 的 作 用 与 CGI 相 似 , 也 是 为 了 扩 展 Web 服 务 器 的 功 能 。
目 前 最 著 名 的 Web API 有 Netscape 的 NSAPI 、 Microsoft 的 ISAPI 和 O'Reilly 的 WSAPI 。 各 种 API 均 与 其 相 应 的 Web 服 务 器 紧 密 联 系 在 一 起 。
用 NSAPI 、 ISAPI 或 WSAPI 开 发 的 程 序 , 性 能 大 大 优 于 CGI 程 序 , 这 些 API 应 用 程 序 是 与 Web 服 务 器 软 件 处 于 同 一 地 址 空 间 的 DLL , 因 此 所 有 的 HTTP 服 务 器 进 程 能 够 直 接 利 用 各 种 资 源 , 这 显 然 比 调 用 不 在 同 一 地 址 空 间 的 CGI 程 序 所 占 用 的 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页 |