後一頁
前一頁
回目錄
回首頁
第十八章 Delphi用戶伺服器應用開發(一)

  用戶/伺服器的開發工作涉及定義用戶/伺服器的體系結構, 然後再將該結構與其它一些對於用戶/伺服器的實現至關重要的系統結構和技術整合起來。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

● 與關係資料庫聯繫的第三種方法是通過應用程式

 

18.1.2.4 擴展關係系統

 

  眾多的銷售商都在積極擴展關係模型。這些擴展包括在關係表中存儲複雜數據型式、存儲過程、觸發器以及二進制大物件(BLOB)。目前正在SQL 3標準中考慮的SQL擴展將包括對物件的進一步支援,還有可能包括對用戶定義數據型式及巢狀表的支援。向關係模型提供物件擴展的產品包括Sybase、Informix、Oracle和Borland。

 

18.1.2.5 SQL:整合用戶/伺服器體系結構的基本鍊路

 

  SQL為前面討論的整合用戶/伺服器體系結構提供一條基本鍊路。目前美國國家標準局(ANSI)已認可SQL作為操作資料庫的正式工業標準。它是許多資料庫管理系統(DBMS)產品都採用的數據存取語言。

  SQL允許用戶在關係表數據上進行查詢、建立新表、存取現有的遠端表、操作數據、建立應用程式存取SQL數據,執行SQL語句,處理錯誤以及存取多個伺服器。SQL資料庫伺服器是多用戶關係資料庫管理系統(DBMS)。

  SQL可以作為一個查詢語言用於互動式使用或嵌入在應用程式中。在執行查詢時,SQL接受一個或多個關係作為輸入並產生一個關係作為輸出,結果是一個表或平面文件,例如,一批不含有重複群群組的同一型式記錄。在查詢多個表時,SQL將這些表連接起來。SQL內還含有一些規定,用來向表中插入新數據、從表中解除數據或修改表中的數據。

 

18.1.3 各種資料庫伺服器功能介紹

 

  伺服器數據管理包括若干軟體,它們使用戶可以存取網路中的任何節點以及確保多用戶環境下的保密性、可恢復性和完整性。如前面所提到的,用戶/伺服器計算中的基本存取鍊路是SQL,它是一種進階非過程資料庫語言, 現在已開發出很多支援SQL 的後端伺服器及DBMS。下面將描述這些產品。

 

18.1.3.1 DB2

 

  DB2是一種由IBM公司開發的RDBMS。它使用SQL執行所有的資料庫操作。數據定義、數據存取、數據操作以及授權功能。SQL語句由用戶在一個用戶機節點從鍵盤輸入或巢狀在應用程式中。

  DB2的結構包括表、視圖、表空間、索引、索引空間、資料庫和存儲群群組。 這種RDBMS提供有允許用戶動態建立和修改這些結構的工具。DB2還包括一些並行處理軟體,以控制和限制干預、後備和恢復功能以及安全性保證等。

  並行處理通過鎖來完成,當應用程式讀資料庫數據時,DB2在該數據上獲取一個共享鎖,允許其他應用程式讀這個相同的數據。如果一個應用程式需要修改數據,那麼DB2將一個互斥型鎖放在該數據上,以阻止其它應用程式存取這個數據。DB2還提供一些關於鎖的級別或鎖的大小的任選項。

  DB2周期性地存儲並檢查所有資料庫變化。所有駐留在系統緩衝區中的變化被寫到資料庫,並將一個變化的記錄載入日誌。以最近一次寫到日誌的變化起所建立的全部映像可用於完成系統故障的恢復。DB2包括一些用來從備份拷貝重開新文件立資料庫的公用程式。這種公用程式含有一個選擇項,允許用戶只拷貝表空間中那些自最後一個備份後新被修改的頁面。

  DB2還含有一些用來保護資料庫的安全性規定。

 

18.1.3.2 Borland物件成分體系結構(BOCA)

 

  BOCA建立了一個既考慮開發工具又考慮資料庫管理工具的用戶/伺服器體系結構。它將一級面向物件的工具、中間件和資料庫伺服器技術集中在一起提供用戶/伺服器的解決方案。該體系結構的群群組成部分有:

  1. 先進的面向物件工具

Borland建立有廣泛基礎和緊密整合的面向物件的工具,這些工具充分利用了目前用戶/ 伺服器變革的優點。使用面向物件的方法學,建立了如下產品:Borland C++、Borland Delphi、Paradox、QuattroPro、Visual dBase以及ObjectVision等。

  2. IDAPI

IDAPI(整合資料庫應用程式設計接口)是Borland公司的SQL連通性解決方法。 IDAPI使得開發人員能夠以更高的效率建立資料庫應用,允許用戶在多種硬體和作業系統基台以及網路環境下存取,以多種資料庫格式存儲的數據。

  3. InterBase

InterBase是一種分散式SQL資料庫伺服器。它支援每個資料庫系統查詢數據並將資訊返回到其它任何一個InterBase伺服器。InterBase 的可變體系結構代表了關係系統技術的第三次浪潮,可變引擎使得InterBase可以以最少的鎖支援高效事務處理和決策支援事務處理。

  Borland公司的面向物件技術使得開發人員可以通過構造模群組化的應用成分來建立複雜用戶/伺服器系統。這些模群組化應用成分可以很容易地開發、測試、維護和增強,並可方便地裝配到複雜的應用程式包中,此外Borland公司的可視化技術極大地提高了軟體生產率。

 

18.1.3.3 Informix SQL伺服器系列

 

  Informix公司推出了多種產品來滿足特定的用戶/伺服器需求。 它們包括Informix-On-Line,Informix TP/XA,Informix Star Informix On-Line/Optical和Informix On-Line工作站版。

  Informix-On-Line是一個連線事務處理(OLTP)資料庫伺服器,具有可用性、數據完整性以及多媒體數據管理能力。它建立有效的數據存儲方法進行快速數據存取;緩衝數據於記憶體最低限度地使用磁碟存取;利用多處理器特征,允許不同處理器同時存取;以及自動確定是有效的搜索策略等,從而獲得極高的性能。

  Informix-TP/XA將On-Line連接到事務處理管理程式;支援那些涉及多個資料庫以及多個DBMS(由不同的銷售商提供)的事務處理。在眾多RDBMS中,Informix 第一個向依從於X/Open XA的事務處理管理程式提供了這種基於標準的接口。

  Informix-STAR是一種用於On-Line的分散式用戶/伺服器資料庫產品,它提供最佳的性能,並且具有最小的網路通信量、站點透明性以及在不同站點操作資料庫的高度可靠性。

  Informix-On-Line/Optical是一種針對On-Line用戶的附加產品。這些用戶想在他們的資料庫系統上使用具有大容量存儲能力的光學設備。On_Line/Optical允許用戶在“寫一次讀多次”(WORM)的光學子系統上存儲BLOB。用戶必須擁有On-Line/Optical On-Line和一個光學子系統。那當然,如果沒有這個On-Line/Optical產品用戶仍可以使用On- LIne在磁存儲設備上操作BLOB。

  Informix-On-Line工作站版是On-Line管理員手冊的圖形化版本。該工作站版具有與硬體版本相同的技術內容,但它是構造在一個視窗化、點一撳式(Point-and-Click)圖形接口,採用關鍵字交叉查閱。這使得用戶可以在某一視窗中存取所需資訊的同時,在另一視窗中組態監視或調節On-Line。

 

18.1.3.4 Microsoft SQL伺服器系列

 

  作為Microsoft SQL伺服器系列的一部分,有以下產品:Microsoft SQL Server for Window NT,Microsoft SQL Administrator for Windows,Microsoft SQL Bridge 和Microsoft SQL Server程式員工具包。

  Microsoft SQL Server for Windows NT旨在為有關鍵任務的應用系統管理大型資料庫和滿足網路化用戶/伺服器應用的需要。

  Microsoft SQL Bridge在Microsoft SQL Server環境和Sybase SQL Server環境之間提供一個通訊協定網點。

  Microsoft SQL程式員工具包提供開發用戶/伺服器應用程式的靈活性,這些應用程式將關鍵的群群組合資訊轉送給基於Windows、MS-DOS和OS/I的產生系統。

 

18.1.3.5 Oracle RDBMS

 

  Oracle RDBMS為以任務為中心的企業範圍的應用提供所需要的操作、監督和管理軟體。使用Oracle RDBMS的分散式資料庫和網點能力,用戶可以透明地整合該企業的新舊數據、系統和應用程式。Oracle被分群群組形成幾個套裝軟體,使得用戶可選地獲取他們自己的應用所需要的功能。這些套裝軟體是:

● 標準Oracle套裝軟體

● 過程化選件套裝軟體

● 分式式物件套裝軟體

● 並行伺服器選件套裝軟體

● 開放通訊閘套裝軟體

 

  標準Oracle套裝軟體提供解決大量關鍵任務的連線數據處理(OLDP)和決策支援應用所需要的功能及性能。這個標準軟體除具有其它幾個套裝軟體的全部特征外,還有以下標準Oracle套裝軟體所專有的特征:

  1. Oracle的過程化選件(procedual option)

提供多種能力可使資料庫伺服器成為應用環境的一個有效群群組成部分,過程化選件非常適用於具有進階需求和複雜商業實施規則的應用。它可選擇地包括在Oracle伺服器內使用程式設計語言PL/SQL過程的能力。具有存儲過程和函數、過程套裝軟體、資料庫觸發器、鎖管理程式套裝軟體以及資料庫報警等特點。它還允許互動式提交或從3GL(第三代語言)程式提交“匿名”PL/SQL過程。

2. 分散式選件(distributed Option)允許把一個物理分散式資料庫當作一個邏輯資料庫來看待。那些需要在多個站點更新數據的應用可以從分散式選件獲益。該選件的特征包括:

● 分散式更新

● 事務處理(TP)

● 監控器(XA)接口

● 透明的二階段提交

● 遠端過程呼叫(RPC)

● 表復制以及Oracle郵件接口

 

對於標準Oracle伺服器,還包含查詢能力和全局資料庫名。

  3. 並行伺服器選件(Parallel | Server Option)

提供對松耦合系統多個節點的支援,從而並行存取OLTP和決策支援的一個資料庫。並行伺服器在高性能、可擴充性、可用性以及資料庫連接等領欄位具有極大的優勢。並行伺服器選件包括快取記憶體(Cache)管理以及松耦合和大規模並行基台所需要的其它所有特征。

  4. Oracle開放通訊閘套裝軟體

提供對非Oracle數據管理程式、文件系統、應用程式和其它各種系統中的數據可程式設計且透明的存取。Oracle公司採用開放通訊閘技術來向眾多流行的數據系統和文件系統提供SQL連接通訊閘,以進行透明的SQL存取。對於那些沒有SQL連接產品的目標數據管理程式,Oracle開放通訊閘開發人員工具包可以簡化基於開放系統的應用手冊的系統、數據及應用的整合工作。

  如果有些部門希望使用基於數據靈敏性或分類的存取控制,那麼Trusted Oracle 會包含有Oracle T的所有特征,並具有多級安全性。

 

18.1.3.6 Sybase SQL伺服器系列

 

  Sybase SQL用戶/伺服器體系結構由三個產品系列群群組成Sybase SQL伺服器、Sybase生命周期開發工具和Sybase開放式互操作性產品。

  Sybase SQL伺服器是一個針對連線應用的RDBMS。它提供亞秒級響應時間,每用戶低成本操作和可用性,SQL伺服器智能數據詞典收集了眾多數據定義、商業規則、報告以及組態資訊。

  Sybase SQL生命周期工具提供一種快速原型設計、建立和維護連線應用的手段,使事務處理模型化,實施商業規則保護數據完整性,並將現有應用與新的數據源結合起來。

它們允許開發人員在SQL卡上用生命周期的各個階段工作。利用Sybase工具,開發人員可以任意群群組合使用SQL、3GL、4GL多媒體和面向物件的工具來建立連線系統。

  Sybase的互操作性策略提供用於開發用戶機和伺服器應用的兩種擴展工具包,並面向最一般的的RDBMS提供撥動通訊閘(turnkey gateways)。該策略使得複雜計算環境下的多機種硬體,作業系統、網路、資料庫和應用程式協同作成為可能。

 

18.1.4 IDAPI結構原理

 

  IDAPI(整合資料庫應用程式設計接口)是Borland公司解決用戶/伺服器連通性的方案。也是Delphi 用戶/伺服器開發的重要群群組成部分。為了說清楚什麼是IDAPI,讓我們先來討論一下普通資料庫的接口問題。

每個資料庫管理系統和資料庫應用都需一定的方式來存取內容所採用的數據格式,連接二者的部分稱為接口,其最簡單的情況就是對文件的直接存取,也可複雜到由幾個層次群群組成。

  當今,面向用戶的資料庫通常都直接與其數據打交道,對那些有一定的用戶和使用了一定時間的產品尤其如此。製造商總是認為自己的產品就是標準,而不關心對其它數據格式的存取。同樣,許多縱向資料庫應用用類似C的語言開發,多是直接存取其資料庫。對開發者,這樣做會變得容易些,但用戶的情況往往是多變的。他對底層數據格式的選擇並不一定與產品一致。其實在ODBC和IDAPI等尚未推出的前20年�堙A工業界已經認識到,一個DBMS不只是要存取其自身的數據格式。

  廣義地講,資料庫接口可分為以下兩類:

  ● 本地型(Local)

  ● 用戶/伺服器型(Client/Server)


後一頁
前一頁
回目錄
回首頁