Delphi 的 N-tier 主 從 架 構 應
用
主 從 架 構 應 用 程 式 開 發
的 觀 念
自 從 Delphi 成 功 的 進 入 了 主 從 架 構 的 市 場 後 ,
有 愈 來 愈多 的 人 使 用 Delphi 開 發 大 型 的 專 案 。 由
於 Delphi 的 目 標 市場 是 Windows 95 以 及 Windows NT , 所 以
Delphi 自 然 也 必 須 面 對許 多 在 資 料 庫 方 面 新 的 問
題 。 例 如 , 在 Windows 95 和 NT 中, 一 個 應 用 程 式 可 以
產 生 多 個 執 行 緒 ( thread ) , 因 此 一個 使 用 Delphi 開 發
的 分 散 式 應 用 系 統 最 好 可 以 善 用 這 個 功能 而 能
夠 使 用 來 同 時 處 理 許 多 不 同 的 資 料 存 取 功 能 。
此外 在 N-Tier 的 主 從 架 構 應 用 程 式 逐 漸 流 行 的 風
潮 下 , 以 及未 來 作 業 系 統 即 將 支 援 分 散 式 物 件
的 時 候 , 在 一 些 大 型的 專 案 中 , Delphi 勢 必 必 須
支 援 應 用 程 式 切 割 ( application partitioning ) 的 功 能 , 那
麼 在 Delphi 中 , Borland 公 司 是 如 何的 為 Delphi 加 入 這 些
關 鍵 的 功 能 呢 ? 在 討 論 Delphi 的 整 個 N-Tier 應 用 架
構 之 前 , 先 讓 我 們 看 看 Delphi 中 主 從 架 構 應用 程
式 的 結 構 。
圖 1.1 Delphi Client / Server 應 用 程 式 的 開 發
架構
在 圖 1.1 中 可 以 看 出 事 實 上 這 個 架 構 已 經 是 一
個 N-Tier 的 架 構 了 。 在 圖 1.1 中 第 一 層 即 是 使 用
Delphi 開 發 的 使 用者 介 面 應 用 程 式 , 第 三 層 是 後
端 的 資 料 庫 。 而 第 二 層 則是 Delphi 中 的 DataModule 以 及
DataDictionary 。 雖 然 Delphi 中 的 DataModule 看 起 來 只 是 用 戶
端 ( Client ) 專 案 中 的 一 個 非 視 覺 化 表 格, 而 且 在
這 個 DataModule 中 是 放 置 一 些 如 TTable , TQuery , TDataSource
的 元 件 而 已 , 但 是 在 中 您 不 但 可 以 在 DataModule 中
放 入 這些 資 料 感 知 元 件 元 件 , 更 可 以 放 入 您 自
行 開 發 的 企 業 物件 ( business objects ) 。 而 且 在 未 來 這
些 DataModule 也 可 以 存在 於 網 路 上 的 任 何 機 器 中 而
達 成 應 用 程 式 切 割 ( application partitioning ) 的 目 的 。 這
即 是 意 謂 您 可 以 以 任 何 適 合 的 方法 切 割 您 的 企
業 物 件 於 網 路 的 任 何 地 方 。 當 然 , 這 必 須配 合
使 用 Microsoft 的 DCOM 或 CORBA 才 可 以 。
| 註 DCOM 以 及 CORBA 簡 單 的 說 都 是 一 種讓 分 散
式 計 算 成 真 的 物 件 溝 通 架 構 。 目 前 我 們 可
以 在 個人 機 器 上 使 用 OLE 以 及 許 多 的 軟 體 元
件 例 如 VBX , OCX 等 來 幫 助 我 們 解 決 許 多 的 問
題 。 但 是 這 些 物 件 都 必 須 在機 器 註 冊 並 且
存 在 於 機 器 中 才 可 以 使 用 。 在 使 用 DCOM 之 後
, 這 些 物 件 可 以 存 在 於 網 路 的 任 何 地 方 ,
它 們 就 好像 是 在 相 同 的 機 器 中 一 樣 ( 當 然 ,
除 了 速 度 上 有 一 些 差別 之 外 ) 。 DCOM 以 及 CORBA
可 以 幫 助 我 們 管 理 這 些 分散 的 物 件 。 目 前
的 CORBA 是 以 UNIX 做 為 大 本 營 , 不 過 CORBA 目 前 也
已 經 推 出 中 Windows 平 台 的 版 本 。 至 於 DCOM 已 經
於 Windows NT 4.0 版 中 正 式 問 市 。 |
事 實 上 一 般 我 們 討 論 的 N-Tier 的 架 構 是 同 圖 1.2
所 展示 的 :
圖 1.2 N-Tier 的 Client /
Server 應 用 程 式 架 構
從 圖 1.2 中 可 以 看 出 N-Tier 的 主 從 架 構 架 構 是 在
目前 我 們 熟 知 的 主 從 架 構 架 構 中 再 加 上 一 層 應
用 程 式 伺 服器 或 是 企 業 物 件 伺 服 器 來 讓 邏 輯 資
料 感 知 元 件 和 企 業 物件 和 真 正 的 資 料 庫 伺 服 器
分 離 以 便 具 備 更 大 的 彈 性 和 減少 原 先 資 料 庫 伺
服 器 的 負 荷 。 更 重 要 的 是 第 二 層 的 物 件可 以 存
在 於 網 路 的 任 何 地 點 , 而 且 對 前 端 的 應 用 程 式
而言 物 件 的 位 置 是 完 全 透 明 的 。 這 些 功 能 在
Delphi 4 中都 提 供 了 良 好 的 支 援 能 力 。
| 註 目 前 的 PowerSoft 的 PowerBuilder 6.0 宣 稱 其 有 應
用 程 式 切 割 的 能 力 並 且 允 許 您 使 用 PowerBuilder
建 立 N-Tier 的 應 用 程 式 。 但 是 PowerBuilder 6.0 目 前
的 這 種 能 力 是 使 用 PowerSoft 自 已 發 展 的 專 屬
的 方 法 。 並 不 是 使 用 DCOM 或 是 CORBA , 因 此 它
的 執 行 效 率 以 及 和 未 來 標 準 的 相 容 性 需 要
進 一步 的 評 估 。 而 VB 5.0 的 N-Tier 架 構 需 要 同 時
使 用 Microsoft Transaction Server , 此 外 程 式 師 自 己必
須 撰 寫 處 理 資 料 的 程 式 碼 , 和 呼 叫 ODBC 的 API
。 這種 做 法 和 Delphi 中 提 供 的 N-Tier 元 件 有 相 當
大 的 差距 。 使 用 VB 5.0 開 發 N-Tier 的 應 用 程 式 需
要 程 式 師 花費 許 多 的 時 間 在 撰 寫 用 戶 端 和
應 用 程 式 伺 服 器 之 間 資 料的 異 動 , 同 步 以
及 資 料 和 使 用 者 介 面 元 件 之 間 的 顯 示 問題
之 上 。 這 造 成 了 使 用 VB 5.0 開 發 N-Tier 應 用 系
統 需要 花 費 更 久 的 時 間 以 及 更 容 易 造 成 系
統 的 臭 蟲 。 相 反 的 Delphi 4 提 供 的 分 散 式 元 件
已 經 幫 助 程 式 師 撰 寫 完 這些 必 要 的 程 式 碼
, 程 式 師 只 需 要 專 心 開 發 應 用 程 式 的 邏輯
即 可 。 讓 應 用 系 統 能 夠 在 更 短 的 時 間 之 內
, 以 更 低 的成 本 完 成 。 |
|