客戶/服務器的開發工作涉及定義客戶/服務器的體系結構, 然后再將該結構與其它一些對于客戶/服務器的實現至關重要的系統結構和技術集成起來。Delphi 2.0的Client/Sever版支持用戶開發客戶/服務器結構的應用程序。本章中我們將闡述客戶服務器體系結構原理、如何用Delphi構建客戶/服務器的環境和Delphi存取遠程SQL服務器的編程和注意事項。 18.1 Delphi客戶/服務器應用開發原理
18.1.1 客戶/服務器體系結構
18.1.1.1 體系結構概述
客戶/服務器系統的體系結構有以下兩個特點:
● 是集合智能用戶工作站作為有效平臺使用
● 平臺和軟件之間的互操作性
客戶/服務器結構包括連接在一個網絡中的多臺計算機。那些處理應用程序,請求另一計算機的服務的計算機稱為客戶機(Client)。而處理數據庫的計算機稱為服務器(Server)。所有用戶都擁有他們自己的計算機來處理應用程序。
客戶機計算機可以是大型機、小型機或微機。但是由于微機具有成本的優勢,因而通常選擇它們作為客戶機。同樣地,服務器通常是一臺微機但在需要較大能力時,也可以使用一臺大型機或小型機。在數據庫環境下,通過若干稱作中間件(Middleware)的程序設計接口,客戶機可以與服務器通信。這些接口提供應用程序和數據庫之間的連通性。
圖18.1 客戶/服務器體系結構
雖然圖18.1只有一個服務器,但客戶/服務器結構也可以包括多個服務器。然而在這種情況下,每個服務器必定只處理一個不同的數據庫或提供一個唯一的服務。(注意:使用兩上或多個服務器來處理同一個數據庫的結構不認為是客戶/服務器系統,相反它是一個分布式數據庫系統〕
表18.1歸納了計算機在客戶/服務器系統中的既定作用。
表18.1 客戶機和服務器計算機的作用
━━━━━━━━━━━━━━━━━━━━━━━━━━━
客戶機功能 服務器功能
───────────────────────────
管理用戶接口 從客戶機接受數據庫請求
從用戶接受數據 處理數據庫請求
處理應用邏輯 格式化結果并傳送給客戶機
產生數據庫請求 執行完整性檢查
向服務器發送數據庫請求 提供并行訪問控制
從服務器接收結果 執行恢復
格式化結果 優化查詢和更新處理
━━━━━━━━━━━━━━━━━━━━━━━━━━━
18.1.1.2 客戶機概述
如上所述,客戶機運行那些使用戶能闡明其服務請求的程序,并將這些請求傳送到服務器。由客戶機執行的計算稱為前端處理(front-end processing)。前端處理具有所有與提供、操作和顯示數據相關的功能。
客戶機軟件由網絡接口軟件、支持用戶需求的應用程序以及實現網絡能力的實用程序【例如電子郵件(E-Mail)和群件(Groupware)】組成。網絡接口軟件提供各種數據傳輸服務。應用程序軟件執行具體的任務,如字處理、電子表格和數據庫查詢生成。實用程序軟件通常執行幾乎所有網絡用戶都要求的標準任務。
18.1.1.3 服務器概述
在服務器上執行的計算稱為后端處理(back-end processing)。后端硬件(back- end hardware)是一臺管理數據資源并執行數據庫引擎功能(如存儲、操作和保護數據)的計算機。在大型機環境下,后端網絡(back-end network)提供大型計算機至大容量存儲設備、控制器以及文件服務器的連接。在識別、評價和選擇適當的服務器平臺時,必須考慮將由該平臺提供的服務。例如,一個數據庫服務器可能需要快速處理能力。其他可能需要執行的網絡服務有通信、應用程序、文件訪問以及只讀存儲器(CD-ROM)服務。隨著新的應用技術的廣泛使用,可被提供的潛在服務還將繼續增加。
服務器軟件既包括遵循于OSI或其它網絡結構的網絡軟件,又包括由該服務器提供給網絡上客戶機的應用程序或服務軟件。
18.1.1.4 中間件概述
中間件是一個軟件層,它保護應用程序開發人員避免受到各種通信協議、操作系統以及數據庫管理系統的影響。它為建立可與以前沿襲下來的應用程序并存的新應用程序打下了基礎。
中間件有好幾種類型。它們包括應用程序設計接口(API),遠程過程調用(RPC),網絡通信、數據庫訪問以及計算機輔助軟件工程(CASE)工具。
由于客戶/服務器系統需要集成各種不同結構的機器和技術,因而應用程序設計相當復雜。選擇適當的中間件可以消除程序設計人員為每個單獨協議和操作系統編寫代碼的麻煩。
18.1.2 關系數據庫體系結構與客戶/服務器模式
18.1.2.1 關系數據庫概述
關系數據庫被定義為一種特殊的數據庫,其中各個文件(稱作關系)以平面文件(FlatFiles)或表的形式保持數據。表必須只含有一種記錄類型。每個記錄具有固定數目的字段,所有字段皆顯示命名。表內的字段內容是各不相同的,不允許重復組(repeating groups)。不含有復制記錄和預定的記錄序列。
在構造關系數據庫時,必須特別注意關系的內容以及記錄的各屬性(字段)之間的內在聯系。
關系數據庫上的基本操作有選擇、投影、連接和除法,選擇建立一個含有與原始關系相同列數的新表,但是行只包括那些滿足某些特寫標準的原始關系行。投影操作指定將被選擇的列,因而形成的表只含有原始表列的一個子集。如果在投影操作刪除的列中有兩個行不同,那么將只有一個記錄被轉入新的關系。連接操作從兩個或多個表中組合信息。兩個表中的公用字段用作組合記錄的基礎字段。在公用字段中具有相等值的記錄被連接在結果關系內。
18.1.2.2 關系數據庫實現的任務
實現關系數據庫所涉及的任務分為三組:
● 為DBMS定義數據庫結構的任務
● 將數據庫分配給物理存儲介質的任務
● 建立數據庫數據的任務
執行這些任務的方法取決于所采用的DBMS產品。
各種不同的DBMS產品提供定義數據庫結構的實用程序。這些實用程序使用一種專用的數據定義語言(DDL)。某些DBMS產品含有一些規定,一旦數據庫已被定義到DBMS,即將該數據庫分配到物理介質。根據應用程序處理的特點,數據可以定位在指定表上或定位在同一磁盤上。它有些DBMS產品偏重于數據庫數據的建立。
如上所述,數據庫定義、存儲分配以及數據建立過程都將取決于應用需求和所選擇的特定DBMS產品的特征。
18.1.2.3 關系數據操作
為了開發數據庫應用,需要使用一種語言來表達處理邏輯。關系數據操作語言共有四類:
● 關系代數,它是一種語言,提供一組遠算符處理關系數據庫中的關系
● 關系演算,它是一種語言,在該語言中用戶指定一組來自關系數據庫內數據操作的結果
● 面向變換的語言,它們構成一類非過程語言,這類語言將表示為關系的輸入數據變換成表示為單個關系的結果。SQL就是一種面向變換的語言
● 面向圖形的系統,它們為用戶提供一個關系結構的圖形,如Borland的Paradox 和IBM公司的QBE(Query By Example)
用戶可以采用多種方法與關系數據庫進行聯系:
● 某些DBMS產品,包括有生成表格的工具并提供表格和報告的處理
● 通過查詢語言提供一個接口,它們執行查詢和更新功能;最重要的查詢語言是SQL
● 與關系數據庫聯系的第三種方法是通過應用程序 [1] [2] 下一頁
|