線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1979
推到 Plurk!
推到 Facebook!

WEB資料庫的開發

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-19 16:16:06 IP:61.221.xxx.xxx 未訂閱
WEB資料庫的開發 -------------------------------------------------------------------------------- 一、 引 言 WWW 是 目 前 Internet 上 發 展 最 快 的 領 域 , 也 是 Internet 網 上 最 重 要 的 信 息 檢 索 手 段 。 早 期 的 Web 頁 面 (Home Page) 主 要 用 來 傳 遞 靜 態 HTML 文 檔 , 後 來 由 於 CGI 接 口 , 特 別 是 Java 和 JavaScript 語 言 的 引 入 , 使 得 Web 頁 面 可 以 方 便 地 傳 播 動 態 信 息 。 借 助 Java 和 JavaScript 語 言 , 可 以 設 計 出 具 有 動 畫 、 聲 音 、 圖 形 / 圖 像 和 各 種 特 殊 效 果 的 Web 頁 面 。 WWW 的 主 要 內 容 包 括 超 文 本 傳 輸 協 議 (HTTP) 、 超 文 本 標 記 語 言 (HTML) 、 通 用 網 關 接 口 (CGI) 、 Java 和 JavaScript 語 言 等 。 HTTP(Hyper Text Transfer Protocol) , 是 一 個 專 門 ? Web 服 務 器 和 Web 瀏 覽 器 之 間 交 換 數 據 而 設 計 的 網 絡 協 議 。 它 通 過 規 定 通 用 資 源 定 位 符 (URLs) 使 客 戶 端 的 瀏 覽 器 與 服 務 器 的 Web 資 源 建 立 鏈 接 關 系 , 從 而 奠 定 了 用 戶 對 Internet 透 明 訪 問 的 基 礎 。 HTML 是 WWW 的 通 用 標 記 語 言 , 它 用 來 創 建 Web 頁 面 和 控 制 Web 信 息 顯 示 格 式 。 HTML 不 是 編 程 語 言 , 而 是 一 種 描 述 語 言 。 HTML 2.0 得 到 了 IETF(Internet Engineering Task Force) 的 支 持 而 成 ? Internet 國 際 標 准 。 目 前 , HTML 已 經 發 展 到 3 P 0 和 3 P 2 版 , 只 是 新 版 本 的 標 准 尚 未 完 全 統 一 , 不 同 的 商 家 對 HTML 2.0 進 行 了 一 定 的 擴 充 , 引 入 了 更 多 新 的 功 能 。 例 如 , Netscape 公 司 在 HTML 3.0 中 增 加 了 頁 面 底 圖 (Background Images) 和 表 (Table) 定 義 等 標 記 , 使 得 Web 頁 面 更 加 引 人 入 勝 。 CGI 是 通 用 網 關 接 口 (Common Gateway Interface) 的 簡 稱 , 它 是 Web 服 務 器 與 外 部 程 序 之 間 的 通 信 接 口 , 服 務 器 並 不 關 心 外 部 應 用 程 序 是 用 什 ? 語 言 ( 如 C 、 C + + 、 Pascal 、 Delphi 或 Perl) 編 寫 的 , 它 只 是 負 責 接 收 用 戶 輸 入 的 信 息 , 並 把 CGI 程 序 所 ? 生 的 結 果 — — HTML 文 檔 或 其 他 符 合 HTTP 規 定 的 文 件 回 傳 給 用 戶 。 事 實 上 , CGI 是 動 態 Web 頁 面 制 作 的 第 一 步 , 但 由 于 CGI 程 序 實 現 比 較 困 難 , 而 且 效 率 不 高 , 它 已 經 逐 漸 被 新 的 技 術 所 取 代 。 Java 是 由 Sun 公 司 開 發 的 面 向 對 象 (Object - oriented) 程 序 設 計 語 言 , 它 支 持 Client/Server 計 算 。 Java 最 初 的 目 標 是 建 立 一 個 適 合 於 家 用 電 器 ? 品 使 用 的 系 統 環 境 , 但 並 沒 有 獲 得 成 功 , 所 幸 的 是 它 以 其 固 有 的 優 點 被 用 來 彌 補 和 擴 充 HTML 語 言 的 不 足 , 成 ? Internet 領 域 後 來 居 上 的 重 要 工 具 。 Java 很 有 可 能 成 ? 今 後 十 年 互 聯 網 上 的 主 流 語 言 。 JavaScript 是 由 Sun 公 司 和 Netscape 公 司 共 同 研 制 的 基 於 對 象 (Object - based) 的 語 言 , 它 舍 棄 了 Java 中 最 複 雜 的 類 (Class) 定 義 和 繼 承 等 成 分 , 而 只 保 留 了 它 的 表 達 式 和 控 制 語 句 。 這 種 簡 化 並 不 影 響 它 在 WWW 中 發 揮 重 要 作 用 , 相 反 , 因 ? 有 了 JavaScript , 一 般 的 Web 頁 面 設 計 者 都 可 以 十 分 容 易 地 實 現 過 去 只 有 靠 專 業 程 序 員 編 制 複 雜 的 CGI 程 序 才 能 完 成 的 功 能 , 從 而 使 Web 技 術 得 到 進 一 步 普 及 。 交 互 式 動 態 HTML 頁 面 的 實 現 需 要 以 大 量 數 據 資 源 ? 基 礎 , ? 了 對 數 據 資 源 進 行 高 效 的 存 取 , 自 然 會 引 入 數 據 庫 系 統 , 於 是 , Web 數 據 庫 便 應 運 而 生 了 。 許 多 數 據 庫 和 WWW 商 家 都 把 數 據 庫 與 Web 的 連 接 性 作 ? 發 展 戰 略 的 一 個 重 要 組 成 部 分 。 Oracle 公 司 通 過 Oracle 7 數 據 庫 和 Web 技 術 的 全 面 集 成 , 提 供 了 一 個 Intranet 開 發 平 台 , Oracle Web Server 允 許 Web 客 戶 直 接 通 過 Web 瀏 覽 器 來 訪 問 Oracle 7 數 據 庫 中 存 儲 的 數 據 。 Oracle Web Server(2.0 版 以 上 ) 用 戶 能 夠 調 用 存 儲 過 程 生 成 動 態 Web 頁 面 , 而 無 需 依 賴 CGI 。 Sybase 公 司 的 戰 略 計 劃 中 也 處 處 體 現 出 Internet 的 連 接 性 , 特 別 是 通 過 加 強 Internet 數 據 倉 庫 技 術 來 突 出 其 ? 品 的 穩 健 性 和 易 擴 展 性 ; Sybase 的 交 互 式 數 據 倉 庫 允 許 用 戶 通 過 其 IQ(Information Query) ? 品 進 行 快 速 交 互 式 查 詢 , 在 Sybase System 11 中 , Internet 連 接 性 也 是 最 主 要 的 特 色 。 作 ? 世 界 上 最 大 的 Web ? 品 供 應 商 , Netscape 公 司 也 在 其 LiveWire 開 發 工 具 中 提 供 了 一 個 內 部 數 據 庫 對 象 database , 通 過 database 對 象 的 各 種 方 法 , 可 完 成 對 數 據 庫 服 務 器 的 連 接 、 檢 索 、 更 新 、 提 交 、 回 退 等 操 作 。 Microsoft 公 司 的 Web 服 務 器 IIS(Internet Information Server) 中 也 有 一 個 數 據 庫 連 接 器 IDC(Internet Database Connector) , 可 以 動 態 地 查 詢 和 更 新 數 據 庫 。 需 要 指 出 的 是 , 目 前 尚 未 形 成 Web 數 據 庫 工 業 標 准 , 不 同 商 家 的 ? 品 各 有 長 短 。 二 、 從 Client/Server 應 用 到 Intranet/Web 應 用 在 過 去 的 十 幾 年 裏 , Client/Server 結 構 ? 實 現 企 業 級 的 信 息 共 享 起 到 了 舉 足 輕 重 的 作 用 , 但 隨 著 企 業 規 模 的 日 益 擴 大 , 應 用 程 序 複 雜 程 度 的 不 斷 提 高 , 傳 統 的 Client/Server 結 構 也 暴 露 出 許 多 問 題 , 尤 其 是 系 統 軟 件 和 應 用 軟 件 變 得 越 來 越 複 雜 。 這 不 僅 給 應 用 軟 件 實 現 帶 來 困 難 , 還 給 軟 件 維 護 造 成 不 便 ; 隨 著 用 戶 需 求 的 改 變 , Client 端 應 用 軟 件 可 能 需 要 增 加 新 的 功 能 或 修 改 用 戶 界 面 , 那 ? 該 軟 件 的 應 用 範 圍 越 廣 , 軟 件 維 護 的 開 銷 也 就 越 大 。 另 外 , Client/Server 結 構 所 采 用 的 軟 件 ? 品 大 都 缺 乏 開 放 的 標 准 , 一 般 不 能 跨 平 台 運 行 。 當 把 Client/Server 結 構 的 軟 件 應 用 於 廣 域 網 時 就 暴 露 出 更 大 的 不 足 。 Intranet/Web 技 術 可 以 比 較 圓 滿 地 解 決 上 述 問 題 。 Intranet 是 采 用 Internet 技 術 的 企 業 內 聯 網 絡 , 它 既 可 與 Internet 互 聯 , 也 可 以 獨 立 使 用 , 具 有 很 大 的 靈 活 性 。 用 戶 只 要 在 內 部 Intranet 上 建 立 自 己 的 Web 服 務 器 , 並 通 過 Web 服 務 器 與 數 據 庫 服 務 器 連 接 , 就 能 夠 大 大 降 低 軟 件 維 護 開 銷 , 因 ? 采 用 Intranet/Web 技 術 , 我 們 只 需 開 發 和 維 護 服 務 器 端 應 用 程 序 ( 無 需 開 發 客 戶 端 程 序 ) , 而 服 務 器 上 所 有 的 應 用 程 序 都 可 通 過 Web 瀏 覽 器 在 客 戶 機 上 執 行 , 從 而 統 一 了 用 戶 界 面 。 由 於 幾 乎 各 種 操 作 系 統 上 都 有 Web 瀏 覽 器 , 所 以 Intranet/Web 應 用 可 以 方 便 地 實 現 跨 平 台 操 作 。 三 、 Web 服 務 器 與 數 據 庫 服 務 器 的 連 接 技 術 1 P CGI 技 術 CGI 是 最 早 的 Web 數 據 庫 連 接 技 術 , 幾 乎 所 有 的 Web 服 務 器 都 支 持 CGI 。 程 序 員 可 以 選 擇 任 何 一 種 語 言 , 如 C 、 C + + 、 Delphi 、 Visual Basic 或 Perl 來 編 寫 CGI 程 序 。 CGI 是 一 個 位 於 服 務 器 和 外 部 應 用 程 序 之 間 的 通 信 協 議 , CGI 程 序 可 以 與 Web 瀏 覽 器 進 行 交 互 , 並 可 以 通 過 數 據 庫 的 調 用 接 口 與 數 據 庫 服 務 器 進 行 通 信 。 例 如 , CGI 程 序 可 以 從 數 據 庫 服 務 器 中 獲 取 數 據 , 並 轉 化 ? HTML 頁 面 , 然 後 由 Web 服 務 器 發 送 給 瀏 覽 器 ; 也 可 以 從 瀏 覽 器 獲 得 數 據 , 並 存 入 指 定 的 數 據 庫 中 。 按 照 應 用 環 境 的 不 同 , CGI 可 以 分 ? 標 准 CGI 和 Win CGI 兩 種 。 (1) 標 准 CGI 標 准 CGI 通 過 環 境 變 量 或 者 命 令 行 參 數 來 傳 遞 Web 服 務 器 獲 得 的 用 戶 請 求 信 息 , Web 服 務 器 與 瀏 覽 器 之 間 的 通 信 采 用 標 准 輸 入 / 輸 出 方 式 。 當 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 P 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 程 序 所 占 用 的 系 統 時 間 要 短 。 程 序 員 可 以 利 用 API 分 別 開 發 Web 服 務 器 與 數 據 庫 服 務 器 的 接 口 程 序 。 Web API 的 出 現 解 決 了 CGI 的 低 效 問 題 , 但 用 API 編 程 比 開 發 CGI 程 序 更 加 困 難 。 開 發 API 程 序 需 要 多 線 程 、 進 程 同 步 、 直 接 協 議 編 程 等 知 識 。 ? 了 解 決 複 雜 與 高 效 之 間 的 矛 盾 , Netscape 與 Microsoft 均 ? 各 自 的 Web 服 務 器 提 供 了 基 於 API 的 高 級 編 程 接 口 。 Netscape 提 供 的 是 LiveWire,Microsoft 提 供 的 是 IDC(Internet Database Connector) 。 (1)Netscape 的 LiveWire LiveWire 是 一 個 通 用 的 Web 開 發 環 境 , 而 不 僅 僅 是 數 據 庫 訪 問 接 口 。 LiveWire 的 編 程 語 言 是 JavaScript , 它 提 供 了 一 個 database 對 象 , 該 對 象 的 方 法 可 用 來 操 作 關 系 數 據 庫 。 當 一 個 應 用 程 序 要 連 接 數 據 庫 服 務 器 時 , LiveWire 就 建 立 一 個 database 對 象 。 每 個 應 用 程 序 只 能 有 一 個 數 據 庫 對 象 。 用 database 對 象 的 connect 方 法 可 連 接 數 據 庫 服 務 器 , 例 如 : database.connect( 〃 ORACLE 〃 , 〃 OraSvr 〃 , 〃 system 〃 , 〃 manager 〃 , 〃 MyDB 〃 ) 可 連 接 到 ORACLE 數 據 庫 服 務 器 OraSvr 上 system/manager 用 戶 的 MyDB 數 據 庫 實 例 上 。 LiveWire 提 供 了 幾 種 顯 示 數 據 庫 查 詢 結 果 的 方 法 。 其 中 , 最 簡 單 而 且 最 快 的 是 用 database 對 象 的 SQL Table 方 法 。 SQL Table 方 法 以 HTML 表 的 形 式 返 回 SQL 語 句 的 查 詢 結 果 。 SQL Table 自 動 控 制 查 詢 結 果 的 輸 出 格 式 , 這 是 最 簡 單 的 方 法 。 如 果 你 希 望 自 己 定 制 輸 出 格 式 , 可 用 數 據 庫 光 標 建 立 自 己 的 顯 示 函 數 。 每 個 數 據 庫 查 詢 都 將 返 回 一 個 光 標 , 光 標 可 以 看 成 數 據 庫 查 詢 結 果 構 成 的 虛 表 或 視 圖 , 每 個 光 標 都 支 持 當 前 行 (current row) 的 概 念 , 它 是 指 向 結 果 表 中 記 錄 的 指 針 。 一 旦 應 用 程 序 與 數 據 庫 連 接 成 功 , 你 就 可 以 用 database 對 象 的 cursor 方 法 來 ? 指 定 的 SQL 查 詢 語 句 建 立 光 標 。 cursorName=database.cursor( 〃 SELECT 語 句 〃 , updatable) 其 中 cursorName 是 ? 光 標 對 象 所 取 的 名 字 ; “ SELECT 語 句 ” 是 數 據 庫 服 務 器 支 持 的 SQL 查 詢 語 句 ; updatable 是 一 個 布 爾 參 數 , 它 表 示 該 光 標 是 否 允 許 修 改 。 可 修 改 光 標 (updatable cursor) 允 許 借 助 光 標 的 當 前 行 來 更 新 數 據 庫 中 的 表 。 但 這 時 的 光 標 只 能 限 定 ? 單 表 的 查 詢 結 果 。 應 用 程 序 可 以 用 disconnect 方 法 關 閉 數 據 庫 連 接 : database.disconnect() 一 旦 關 閉 了 數 據 庫 連 接 , 應 用 程 序 便 無 法 建 立 光 標 或 使 用 其 他 database 方 法 。 事 務 是 一 組 數 據 庫 操 作 的 集 合 , 這 些 操 作 要 ? 一 起 成 功 , 要 ? 一 起 失 敗 。 操 作 的 提 交 或 回 退 是 一 同 生 效 的 。 事 務 處 理 的 概 念 對 維 護 數 據 的 完 整 性 和 一 致 性 是 十 分 重 要 的 。 盡 管 各 種 數 據 庫 服 務 器 事 務 處 理 的 實 現 方 法 有 所 不 同 , LiveWare 提 供 了 統 一 的 事 務 處 理 接 口 。 主 要 是 數 據 庫 更 新 語 句 (INSERT , UPDATE 和 DELETE) 要 在 事 務 控 制 之 下 完 成 。 database 對 象 的 begin Transaction 、 commitTransaction 和 rollbackTransaction 方 法 分 別 用 來 ? 動 、 提 交 和 回 退 事 務 。 多 媒 體 數 據 ( 圖 像 、 聲 音 、 文 本 、 動 畫 等 ) 可 以 二 進 制 大 對 象 (BLOB) 的 形 式 存 入 數 據 庫 。 LiveWire 有 兩 種 處 理 二 進 制 數 據 的 方 法 , 第 一 種 是 把 文 件 名 存 入 數 據 庫 , 而 文 件 實 體 放 在 數 據 庫 外 ; 第 二 種 是 直 接 用 BLOB 類 型 的 字 段 存 儲 多 媒 體 數 據 , 再 通 過 LiveWire 提 供 的 BLOB 方 法 來 訪 問 這 些 數 據 。 LiveWire 僅 僅 支 持 Netscape Enterprise/FastTrack Server , 而 不 支 持 其 他 的 Web 服 務 器 。 (2)Microsoft 的 IDC IDC 是 Microsoft Web 服 務 器 IIS(Internet Information Server) 的 一 個 動 態 鏈 接 庫 , 它 通 過 ODBC 接 口 訪 問 各 種 數 據 庫 。 IDC 包 含 兩 種 類 型 的 文 件 : IDC 腳 本 文 件 ( * .IDC) 和 HTML 模 板 文 件 ( * .HTX) 。 IDC 腳 本 文 件 ( * .IDC) 用 來 控 制 數 據 庫 訪 問 , 其 中 包 括 數 據 庫 名 、 用 戶 名 、 口 令 和 SQL 語 句 等 數 據 庫 連 接 參 數 , 以 及 與 此 IDC 文 件 對 應 的 HTML 模 板 文 件 ( * .HTX) 的 存 儲 路 徑 。 HTML 模 板 文 件 ( * .HTX) 是 實 際 HTML 文 檔 的 模 板 , 它 以 直 觀 的 方 法 說 明 怎 樣 將 查 詢 到 的 數 據 插 入 Web 頁 面 。 模 板 中 可 以 有 靜 態 文 字 、 圖 形 / 圖 像 或 其 他 HTML 頁 面 元 素 。 對 數 據 庫 服 務 器 的 每 一 次 查 詢 都 需 要 一 個 IDC 腳 本 文 件 ( * .IDC) 和 一 個 HTML 模 板 文 件 ( * .HTX) 。 腳 本 文 件 必 須 存 儲 在 Web 服 務 器 上 , 而 模 板 文 件 則 可 以 存 儲 在 Web 服 務 器 能 夠 訪 問 到 的 任 何 地 方 。 IDC 的 處 理 流 程 大 致 如 下 : Web 服 務 器 IIS 對 瀏 覽 器 傳 來 的 URL 字 符 串 進 行 分 析 , 如 果 當 前 URL 以 “ P IDC ” 結 束 , 就 說 明 這 是 一 個 IDC 請 求 , 於 是 將 其 傳 給 IDC 接 口 模 塊 , IDC 將 依 次 讀 取 腳 本 文 件 並 與 數 據 庫 服 務 器 進 行 通 信 ; IDC 模 塊 從 數 據 庫 服 務 器 得 到 查 詢 結 果 後 , 通 過 指 定 的 模 板 文 件 而 得 到 一 個 實 際 的 HTML 文 檔 ; 然 後 將 該 文 檔 交 給 Web 服 務 器 IIS , 由 IIS 將 HTML 文 檔 返 回 Web 瀏 覽 器 。 IDC 不 僅 可 以 從 數 據 庫 中 查 詢 數 據 , 也 可 以 向 數 據 庫 中 存 儲 數 據 。 與 LiveWire 類 似 , IDC 僅 僅 支 持 Microsoft 的 IIS , 而 不 支 持 其 他 的 Web 服 務 器 。 3 P RAD 技 術 RAD 是 快 速 應 用 開 發 (Rapid Application Development) 的 縮 寫 。 傳 統 的 RAD 工 具 , 如 PowerBuilder 、 Delphi 、 Uniface 、 NewEra 、 Oracle/Developer 2000 等 早 已 ? 人 們 熟 知 。 近 兩 年 來 , 隨 著 Web 數 據 庫 應 用 需 求 的 不 斷 升 溫 , 市 場 上 已 經 出 現 了 一 批 Web 數 據 庫 RAD 工 具 , 例 如 , Powersoft 公 司 ? PowerBuilder 增 加 了 一 個 Internet Development Kit,PowerBuilder 6.0 更 加 突 出 了 Intranet/Web 技 術 ; Borland 公 司 在 推 出 IntraBuilder 之 後 , 又 把 Intranet/Web 技 術 真 正 融 入 最 新 的 Delphi 3.0 中 ; Oracle 公 司 的 新 版 Designer 2000 和 Developer 2000 也 能 夠 直 接 生 成 Web 數 據 庫 應 用 ; Uniface 公 司 通 過 其 Web enabler ? 品 將 代 碼 直 接 轉 化 ? Web 數 據 庫 應 用 。 RAD 工 具 的 主 要 特 點 是 具 有 圖 形 開 發 界 面 和 可 視 計 算 技 術 的 支 持 , 程 序 員 只 需 通 過 簡 單 的 鼠 標 點 擊 和 鍵 盤 交 互 操 作 , 即 可 快 速 生 成 應 用 程 序 代 碼 。 這 裏 , 我 們 簡 單 介 紹 幾 種 有 代 表 性 的 RAD 工 具 。 (1)IntraBuilder 在 使 用 Borland IntraBuilder 之 前 , 必 須 首 先 在 Web 服 務 器 上 安 裝 IntraBuilder Server, 並 在 開 發 平 台 上 安 裝 IntraBuilder Designer 集 成 設 計 工 具 。 IntraBuilder 是 一 個 基 於 JavaScript 語 言 的 可 視 開 發 工 具 , 它 能 夠 快 速 生 成 和 發 布 Intranet/Web 數 據 庫 應 用 ; 用 戶 通 過 Web 瀏 覽 器 訪 問 IntraBuilder 應 用 程 序 。 IntraBuilder Server 具 有 連 接 數 據 庫 與 Web 服 務 器 的 能 力 。 IntraBuilder 包 括 三 個 主 要 組 成 部 分 : ? IntraBuilder Designer 是 一 個 集 成 開 發 環 境 , 可 以 完 成 所 有 Web 應 用 開 發 工 作 , 它 包 括 圖 形 用 戶 界 面 、 程 序 自 動 生 成 工 具 Experts 和 可 視 化 RAD 設 計 工 具 。 ? IntraBuilder Server 運 行 在 Web 服 務 器 上 , 用 來 處 理 客 戶 機 的 請 求 , 目 前 IntraBuilder Server 只 能 安 裝 在 Windows NT 或 Windows 95 上 。 ? 內 置 Intranet 應 用 程 序 。 這 些 程 序 的 所 有 模 塊 均 可 重 用 (reuse) , 程 序 員 可 以 利 用 現 成 的 格 式 (Form) 、 表 (Table) 、 報 表 (Report) , 以 及 JavaScript 代 碼 來 生 成 新 的 應 用 程 序 。 一 個 IntraBuilder 應 用 程 序 通 常 包 含 表 (Table) 、 格 式 (Form) 、 報 表 (Report) 和 頁 面 (Home Page) 等 構 件 。 我 們 可 以 用 兩 種 方 法 來 實 現 IntraBuilder 應 用 程 序 。 一 是 在 IntraBuilder Experts 工 具 的 指 導 下 , 通 過 人 - 機 交 互 , 自 動 生 成 表 、 格 式 、 報 表 和 頁 面 等 元 素 ; 二 是 利 用 IntraBuilder Designer 可 視 化 設 計 工 具 分 別 建 立 應 用 程 序 的 各 元 素 。 (2)Uniface Uniface 是 Compuware 公 司 推 出 的 基 於 組 件 的 可 視 化 開 發 環 境 。 Uniface 組 件 包 括 格 式 (Form) 、 服 務 程 序 (Service) 和 報 表 (Report) 等 。 所 有 程 序 模 塊 中 的 定 義 都 是 可 重 用 的 (reusable) , 程 序 員 可 以 利 用 繼 承 方 法 重 用 已 經 完 成 的 程 序 模 塊 , 從 而 提 高 軟 件 生 ? 效 率 和 軟 件 可 靠 性 。 Uniface 的 Web enabler ? 品 使 得 程 序 員 能 夠 像 開 發 Client/Server 應 用 程 序 那 樣 定 義 應 用 模 型 和 用 戶 界 面 , 我 們 只 需 選 擇 生 成 HTML 的 選 項 , 並 將 應 用 程 序 安 裝 在 服 務 器 上 , 就 可 完 成 Web 應 用 開 發 。 此 時 , 用 戶 既 可 在 Client/Server 模 式 下 通 過 Uniface 運 行 環 境 執 行 應 用 程 序 , 也 可 在 Web 瀏 覽 器 上 通 過 可 交 互 的 動 態 HTML 訪 問 與 Client/Server 模 式 下 功 能 和 界 面 完 全 一 致 的 應 用 。 Web enabler 和 Web 服 務 器 必 須 安 裝 在 同 一 台 機 器 上 , 這 與 IntraBuilder Server 需 要 與 Web 服 務 器 安 裝 在 一 台 機 器 上 的 要 求 十 分 相 似 。 每 當 Web 服 務 器 接 收 到 用 戶 請 求 , 便 通 過 Web enabler ? 動 Uniface Web 應 用 。 Web enabler ? 品 同 時 包 含 了 CGI 、 NSAPI 和 ISAPI 接 口 , 因 此 可 以 對 Microsoft IIS 、 Netscape Enterprise/FastTrack Server 等 不 同 商 家 的 Web 服 務 器 提 供 透 明 的 支 持 。 (3)Oracle/Designer 2000 與 Oracle/Developer 2000 Oracle 公 司 利 用 具 有 Internet 連 接 能 力 的 中 介 ? 品 實 現 Oracle 7 數 據 庫 服 務 器 與 Web 服 務 器 的 結 合 ; Oracle Web Server 通 過 Oracle 7 和 Web 技 術 的 全 面 集 成 提 供 了 一 個 Internet/Intranet 開 發 平 台 。 Oracle Web Server 允 許 Web 客 戶 直 接 通 過 瀏 覽 器 訪 問 Oracle 7 數 據 庫 中 存 儲 的 數 據 , 並 能 夠 調 用 存 儲 過 程 生 成 動 態 Web 頁 面 , 而 無 需 依 賴 CGI 。 Oracle 公 司 提 供 了 兩 個 工 具 — Designer 2000 和 Developer 2000 , 可 用 於 完 成 Web 應 用 程 序 的 開 發 , 它 們 的 編 程 語 言 是 擴 充 的 PL/SQL , 而 程 序 員 無 需 手 工 編 碼 即 可 生 成 PL/SQL 程 序 。 Designer 2000 是 一 個 完 整 的 CASE 工 具 , 它 ? 應 用 系 統 分 析 人 員 和 設 計 人 員 提 供 了 圖 形 方 式 的 分 析 和 建 模 、 應 用 程 序 結 構 設 計 、 數 據 庫 結 構 設 計 和 應 用 程 序 生 成 等 功 能 。 此 外 , 它 還 能 實 現 Client/Server 應 用 向 Intranet/Web 應 用 的 升 級 。 如 果 在 進 行 Client/Server 應 用 開 發 時 已 經 采 用 Designer 2000 作 ? 設 計 開 發 工 具 , 那 ? 現 在 只 需 選 用 新 版 Designer 2000 , 進 一 步 操 作 就 可 完 成 轉 換 , 即 在 模 塊 結 構 層 次 圖 中 選 中 某 一 模 塊 , 然 後 選 擇 Web Server 生 成 工 具 進 行 Web 應 用 生 成 即 可 。 無 需 重 新 設 計 和 編 碼 , 無 需 修 改 任 何 內 容 , 最 大 程 度 地 保 護 了 軟 件 投 資 。 如 果 在 進 行 Client/Server 應 用 開 發 時 沒 有 采 用 Designer 2000 , 而 是 用 Developer 2000 完 成 的 , 此 時 首 先 要 用 Designer 2000 的 反 向 設 計 功 能 , 對 用 Developer 2000 開 發 的 應 用 程 序 進 行 分 析 , 把 其 中 涉 及 到 的 數 據 庫 信 息 和 應 用 程 序 結 構 的 分 析 結 果 形 成 數 據 定 義 信 息 和 模 塊 定 義 信 息 , 同 時 把 這 兩 類 信 息 記 錄 到 共 享 分 析 庫 中 。 然 後 , 依 據 模 塊 定 義 信 息 , 通 過 使 用 Web Server 生 成 工 具 即 可 生 成 相 應 的 Web 應 用 程 序 。 Web 應 用 可 以 生 成 動 態 的 HTML 頁 面 , 通 過 HTML 頁 面 , 用 戶 能 夠 完 成 各 種 數 據 庫 訪 問 , 包 括 查 詢 、 插 入 、 修 改 和 刪 除 等 , 只 需 把 這 些 PL/SQL 程 序 包 安 裝 到 Web 服 務 器 上 , 就 可 通 過 瀏 覽 器 使 用 了 。 Developer 2000 也 能 生 成 Web 應 用 , 在 保 持 原 有 功 能 的 同 時 , Developer 2000 中 的 Report 工 具 可 以 讓 用 戶 通 過 鼠 標 點 擊 方 式 生 成 HTML 格 式 的 報 表 , 構 成 Web 應 用 , 其 操 作 方 式 同 Client/Server 結 構 的 報 表 工 具 一 樣 簡 單 。 4 P Java/JDBC 技 術 JDBC 技 術 是 Java Database Connectivity 的 縮 寫 , 它 是 JavaSoft 公 司 設 計 的 Java 語 言 的 數 據 庫 訪 問 API 。 最 初 的 Java 語 言 並 沒 有 數 據 庫 訪 問 能 力 。 JDBC 是 第 一 個 支 持 Java 語 言 的 標 准 的 數 據 庫 API , 其 目 的 在 於 使 Java 程 序 與 數 據 庫 服 務 器 的 連 接 更 加 方 便 。 在 功 能 方 面 JDBC 與 ODBC 相 同 , 它 給 程 序 員 提 供 了 統 一 的 數 據 庫 訪 問 接 口 。 JDBC 訪 問 數 據 庫 的 過 程 是 這 樣 的 : 用 戶 通 過 瀏 覽 器 從 Web 服 務 器 上 下 載 含 有 Java Applet 的 HTML 頁 面 。 如 果 其 中 的 Java Applet 調 用 了 JDBC , 則 瀏 覽 器 運 行 的 Java Applet 直 接 與 指 定 的 數 據 庫 建 立 連 接 。 JDBC 是 一 個 與 數 據 庫 系 統 獨 立 的 API , 它 包 含 兩 部 分 : JDBC API 和 JDBC Driver API 。 JDBC API 提 供 了 應 用 程 序 到 JDBC Driver Manager 的 通 信 功 能 ; JDBC Driver API 支 持 JDBC Driver Manager 與 數 據 庫 驅 動 程 序 的 通 信 。 JDBC Driver Manager 類 似 於 ODBC Driver Manager , 用 來 管 理 各 數 據 庫 軟 件 商 提 供 的 JDBC 驅 動 程 序 。 JavaSoft 公 司 提 供 了 一 個 通 用 的 JDBC Driver Manager , 而 各 數 據 庫 公 司 只 需 提 供 一 個 與 ODBC 類 似 的 JDBC 驅 動 程 序 , 開 發 人 員 就 可 以 用 Java 語 言 訪 問 數 據 庫 。 此 外 , JavaSoft 公 司 還 提 供 了 一 個 特 殊 的 驅 動 程 序 , JDBC - ODBC 橋 , 該 軟 件 支 持 JDBC 通 過 現 有 的 ODBC 驅 動 程 序 訪 問 數 據 庫 服 務 器 。 JavaSoft 公 司 認 ? , 通 過 JDBC - ODBC 橋 訪 問 數 據 庫 不 會 造 成 明 顯 的 性 能 下 降 。 JDBC API 提 供 了 一 系 列 Java 類 接 口 , 其 中 : Java.sql.DriverManager 負 責 處 理 JDBC 數 據 庫 驅 動 程 序 的 加 載 和 卸 載 。 DriverManager 類 作 ? JDBC 的 管 理 層 , 負 責 尋 找 並 裝 載 與 URL 指 定 的 數 據 庫 相 符 的 JDBC 驅 動 程 序 , 該 驅 動 程 序 與 遠 程 數 據 庫 相 連 , 返 回 一 個 Java.sql.Connection 對 象 。 Java.sql.Connection 負 責 建 立 與 數 據 庫 服 務 器 的 連 接 。 Java.sql.Statement 可 以 通 過 Connection 對 象 執 行 一 條 SQL 語 句 。 Java.sql.ResultSet 表 示 從 數 據 庫 服 務 器 返 回 的 結 果 集 。 通 過 操 作 該 結 果 集 可 實 現 對 數 據 庫 的 訪 問 。 要 訪 問 數 據 庫 , 必 須 首 先 建 立 一 個 Java.sql.Connection 對 象 , 可 以 通 過 調 用 DriverManager.get.Connection 得 到 此 對 象 。 該 方 法 的 參 數 是 一 個 URL , 它 唯 一 指 定 了 要 訪 問 的 數 據 庫 。 通 過 使 用 Java.io.Input 對 象 , JDBC 允 許 訪 問 數 據 庫 中 存 放 的 圖 像 和 視 / 音 頻 信 息 。 JDBC 也 支 持 數 據 庫 事 務 處 理 。 在 缺 省 情 況 下 , JDBC 處 於 “ 自 動 提 交 ” 模 式 , 也 就 是 說 , 把 每 一 次 請 求 都 當 作 一 個 事 務 來 處 理 。 但 是 , 也 可 以 顯 式 地 把 多 個 請 求 作 ? 一 個 事 務 來 處 理 。 當 所 有 的 請 求 完 成 後 , 使 用 connection.Commit 方 法 提 交 當 前 事 務 , 或 者 使 用 connection.Rollback 退 回 當 前 事 務 。 JDBC 也 支 持 光 標 (Cursor) 操 作 。 光 標 用 來 定 位 一 個 特 定 的 記 錄 。 當 光 標 被 激 活 時 , 可 以 在 光 標 指 定 的 記 錄 上 完 成 數 據 操 作 。 目 前 JDBC 已 經 得 到 許 多 軟 件 商 的 支 持 , 包 括 Oracle 、 Sybase 、 Borland 和 IBM 等 。 大 多 數 流 行 的 數 據 庫 系 統 都 已 推 出 了 自 己 的 JDBC 驅 動 程 序 。 四 、 結 束 語 本 文 所 述 的 四 種 技 術 都 能 實 現 WWW 與 數 據 庫 的 連 接 , 但 它 們 的 工 作 原 理 不 盡 相 同 。 CGI 和 API 技 術 是 將 Web 服 務 器 與 某 一 進 程 或 API 相 連 , 該 進 程 或 API 再 將 得 到 的 結 果 轉 化 ? HTML 文 檔 , 並 返 回 Web 服 務 器 , 然 後 由 Web 服 務 器 把 得 到 的 HTML 文 檔 傳 給 瀏 覽 器 。 就 是 說 , 與 數 據 庫 服 務 器 的 通 信 是 由 Web 服 務 器 完 成 的 。 雖 然 API 技 術 比 CGI 技 術 提 高 了 效 率 , 但 仍 然 沒 有 克 服 編 程 複 雜 的 困 難 。 ? 了 解 決 高 效 與 複 雜 之 間 的 矛 盾 , Netscape 和 Microsoft 等 公 司 分 別 推 出 了 LiveWire 和 IDC 等 基 於 API 的 高 級 編 程 接 口 , 從 而 大 大 降 低 了 程 序 實 現 的 難 度 。 RAD 技 術 可 以 看 成 是 基 於 API 編 程 接 口 的 進 一 步 提 高 , 它 借 助 可 視 化 計 算 技 術 快 速 生 成 應 用 程 序 , 大 幅 度 減 少 了 手 工 編 程 的 工 作 量 , 增 強 了 軟 件 的 可 靠 性 。 JDBC 技 術 與 上 述 幾 種 技 術 有 很 大 不 同 , 這 裏 , 由 (Java 兼 容 的 )Web 瀏 覽 器 將 嵌 入 HTML 文 檔 中 的 Java Applet 直 接 下 載 到 客 戶 機 上 運 行 。 也 就 是 說 , 與 數 據 庫 服 務 器 的 通 信 是 由 Web 瀏 覽 器 直 接 完 成 的 。 我 們 必 須 清 醒 地 認 識 到 , WWW 技 術 是 90 年 代 初 才 問 世 的 , Web 數 據 庫 更 是 近 兩 三 年 才 發 展 起 來 的 新 技 術 , 目 前 的 國 際 標 准 化 程 度 很 低 , 各 軟 件 商 推 出 的 ? 品 和 技 術 大 多 互 不 兼 容 。 CGI 是 得 到 普 遍 遵 守 的 規 範 , 但 CGI 程 序 實 現 難 度 大 且 運 行 效 率 低 下 , 因 此 缺 乏 生 命 力 , 它 必 然 要 被 新 的 標 准 所 取 代 。 Web API 技 術 提 高 了 程 序 運 行 效 率 , 但 用 API 編 程 比 用 CGI 更 困 難 。 另 外 , 由 於 各 種 不 同 的 API 互 不 兼 容 , 用 某 種 API 編 寫 的 程 序 只 能 在 特 定 的 Web 服 務 器 上 運 行 , 使 用 範 圍 受 到 極 大 限 制 。 RAD( 包 括 各 種 基 於 API 的 高 級 編 程 接 口 ) 工 具 , 雖 然 解 決 了 直 接 用 API 編 程 帶 來 的 困 難 , 提 高 了 軟 件 開 發 效 率 , 但 仍 具 有 和 API 相 同 的 問 題 : 與 特 定 的 Web 服 務 器 捆 得 太 緊 , 缺 乏 通 用 性 。 值 得 關 注 的 是 JDBC 技 術 , 它 借 鑒 了 ODBC 成 功 的 經 驗 , 並 且 可 以 直 接 利 用 現 有 的 ODBC 驅 動 程 序 訪 問 數 據 庫 。 JavaSoft 公 司 推 出 JDBC 之 後 , 得 到 絕 大 多 數 數 據 庫 商 家 的 支 持 , 隨 著 Java 語 言 在 WWW 中 發 揮 的 作 用 日 益 顯 著 , 相 信 JDBC 會 取 代 CGI 而 成 ? 新 的 標 准 。 發表人 - jackkcg 於 2002/10/19 16:19:22
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
bookworm
中階會員


發表:63
回覆:161
積分:82
註冊:2002-08-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-20 11:08:56 IP:163.28.xxx.xxx 未訂閱
請教jackkcg兄,那現在網路上常看到諸如 .asp,.php,.jsp這些語言,不知道算您大作 裡的哪一個分類呢?其中是否有什麼差別? 小弟翻了幾本書,還是不甚了解,希望您能 幫我解答!
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-21 13:15:56 IP:61.221.xxx.xxx 未訂閱
bookworm 大大 首先在此澄清篇文章非我的大作 此乃(轉貼的文章)由於原網站未寫作者所以只能寫 轉貼 分享 asp,.php,.jsp這些語言 其中是否有什麼差別 個人淺見 1 無 2 差很多 我是覺得3者的共同點的功能是有不少 攥寫就差異大了 不過以jsp來說 保密應該比較好(須看設計者) 國外模組資源不少php需購買其它軟體封裝保護 (如果警覺性夠)如zend軟體 asp撰寫 應該最容易上手 坊間資源最容易取得 但是要寫成(模組)也不會痕難單 所以自己選擇我看還是 觀念 最重要 致於工具 (戲法人人會變 各有巧妙不同) 所以我選1啦(除非你要的是細部加環境考量 此部份站長,版主比我有更神的見解) 希望她們來答覆你更客觀 3q
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
bookworm
中階會員


發表:63
回覆:161
積分:82
註冊:2002-08-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-24 00:33:30 IP:210.85.xxx.xxx 未訂閱
再請教個問題,小弟我是看過asp是可以利用Activex form 來開發,那至於jsp或php,也可以用delphi來開發嗎?
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-24 01:01:34 IP:210.65.xxx.xxx 未訂閱
參考看看 迅速的發展 PHP 和 MySQL 為主的 Web 程式 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19234 【問題】Java 與Delphi 的整合 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=22050 至於Activex form是可以的 如果問我有無範例 我手上目前沒有ㄝ
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-04-20 18:19:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!