?? 044.htm
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基礎教程-->第十八章 Delphi客戶服務器應用開發(二)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基礎教程 第十八章 Delphi客戶服務器應用開發(二)">
<META NAME="description" CONTENT=" - DELPHI基礎教程 - 第十八章 Delphi客戶服務器應用開發(二)">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%" bgcolor="#e0e0e0"><strong><A HREF="045.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="043.htm"><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR>
<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首頁</font></A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">第十八章 Delphi客戶服務器應用開發(二)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<font face="Arial"><p>18.1.4.1 </font><font face="宋體" lang="ZH-CN">本地型數據庫接口 </p>
<p> 本地型數據庫是伴隨微機的產生而產生的。</font><font
face="Arial">dBASEII</font><font face="宋體" lang="ZH-CN">作為最早的并仍在使用的系統之一就是典型的本地型數據庫。 </font><font
face="Arial"></p>
</font><font face="宋體" lang="ZH-CN"><p> 本地型數據庫管理系統的數據存放在一個本地硬盤上。</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">接受來自用戶或用戶程序的命令。這些命令通常是系統特有的數據庫管理語言。命令被轉換為簡單的磁盤訪問命令,并交付文件系統來處理。然后</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">接收來自磁盤上的數據,并加以處理。</p>
<p> 在本地型</font><font face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">應用中,數據庫引擎</font><font
face="Arial">(DBE)</font><font face="宋體" lang="ZH-CN">運行于工作站上。圖</font><font
face="Arial">18.2</font><font face="宋體" lang="ZH-CN">暗示數據是存放在工作站的局部驅動器上,其實在網絡中,數據還可存放在文件服務器上。這里數據庫引擎使用典型的文件</font><font
face="Arial">I/O</font><font face="宋體" lang="ZH-CN">調用和記錄封鎖技術來直接讀寫數據。 </p>
<p> 存放數據的文件位于網絡中的某個服務器上時,</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">的行力與單機情況無異。</font><font
face="Arial"> </font><font face="宋體" lang="ZH-CN">網絡操作系統負責對服務器的管理,因此對</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">而言,對服務器的使用就象使用局部的驅動器一樣。</p>
<p> 當用戶發出命令,請求</font><font face="Arial">DBMS</font><font
face="宋體" lang="ZH-CN">讀取數據庫中的數據時,該請求首先由工作站</font><font
face="Arial">(</font><font face="宋體" lang="ZH-CN">客戶</font><font face="Arial">)</font><font
face="宋體" lang="ZH-CN">的網絡驅動程序處理,它負責把請求從網絡上傳到所需的服務器網絡文件系統。服務器操作系統從適當的磁盤卷上找到數據,并發回等待中的工作站驅動程序。最后,數據回傳給</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">,這樣</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">使用這些數據就象使用本地存儲的數據一樣。網絡情況下的接口比單機情況下接口的處理增加了通信開銷,正常情況下這種額外開銷不會影響用戶的響應時間,除非在網絡通信的高峰期間或</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">要求大數據量傳遞。</p>
<p> 對于本地型</font><font face="Arial">DBMS</font><font face="宋體"
lang="ZH-CN">其大部分工作都在工作站一側完成,即使數據存儲在文件服務器上,其對數據的處理仍然要在工作站上進行。這種方式的最主要的一個缺點是無論查詢需要多么少的數據,都需要首先將查詢中的所有數據通過網絡傳到工作站,然后由工作站負責選出滿足查詢條件的數據,不難想象,當幾個用戶同時操作數據庫時,數據庫網絡的帶寬會很快阻塞。</p>
<p> 在這一方式下,工作站不僅要負責所有用戶界面管理,還要負責所有數據處理的工作。在當今的數據庫應用中,尤其是那些功能強且使用簡便的系統,用戶界面的處理開銷是相當大的,象</font><font
face="Arial">Windows</font><font face="宋體" lang="ZH-CN">這樣的圖形環境,處理上的額處開銷會更大。為此而升級工作站是很得不償失的。</p>
<p> </font><font face="Arial"></p>
<p>18.1.4.2 </font><font face="宋體" lang="ZH-CN">客戶</font><font face="Arial">/</font><font
face="宋體" lang="ZH-CN">服務器型數據接口</p>
<p> </p>
<p> 由于服務器硬件技術逐年迅速地提高,數據庫在處理模式上在近五年內發生了改變。本地型</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">逐漸讓位給客戶</font><font
face="Arial">/</font><font face="宋體" lang="ZH-CN">服務器型</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">,尤其是在大中型企業中更是這樣。</p>
<p> 正如名字所暗示的,客戶</font><font face="Arial">/</font><font
face="宋體" lang="ZH-CN">服務器是將處理工作分散到工作站和服務器上去處理,服務器不僅負責存取數據,還要對數據作一定的處理工作,這樣在數據發送給工作站之前即求得查詢結果集,從而在大部分情況下可大大減少網絡傳輸的開銷,因此,也減輕了工作處理負擔,從而只需關心用戶界面的處理工作即可。</p>
<p> 服務器處理數據帶來的另一個好處是,當服務器中數據庫引擎使用了緩沖機制時,多個工作站可以從中受益。例如,一用戶查詢了某數據,當另一用戶要查詢同樣的數據時,即可從服務器緩沖中直接得到結果,從而免去很多開銷。</p>
<p> 客戶</font><font face="Arial">/</font><font face="宋體" lang="ZH-CN">服務器系統的成功與否在很大程度上依賴于服務器硬件質量和容量。用戶越多,服務器的處理負擔越重,相應服務器硬件性能也要跟得上,否則就會導致響應時間比本地型數據庫還要差的結果。 </p>
</font><font face="Arial"><p></font><font face="宋體" lang="ZH-CN"> 處理工作,而工作站負責用戶界面處理工作 </p>
<p> 客戶和服務器間的數據庫接口要比本地型系統復雜得多。它有幾個轉換級負責命令和結果集在工作站和服務器間的傳送。圖</font><font
face="Arial">18.5</font><font face="宋體" lang="ZH-CN">給出了客戶</font><font
face="Arial">/</font><font face="宋體" lang="ZH-CN">服務器數據庫接口的詳細情況。 </p>
<p> 客戶</font><font face="Arial">/</font><font face="宋體" lang="ZH-CN">服務器的前端應用程序實際上不直接與數據庫引擎打交道。每個客戶服務器提供一個數據庫通信接口,該數據庫通信接口運行于前端。這些接口也稱為數據庫通信</font><font
face="Arial">API</font><font face="宋體" lang="ZH-CN">等。數據庫通信接口的工作流程如下:</p>
<p> ①</font><font face="Arial"> </font><font face="宋體" lang="ZH-CN">前端應用程序發送命令給數據庫通信接口。</font><font
face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">②</font><font face="Arial"> </font><font
face="宋體" lang="ZH-CN">接口通過網絡把命令傳給數據庫引擎。</font><font
face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN"> ③</font><font face="Arial"> </font><font
face="宋體" lang="ZH-CN">數據庫引擎在服務時上做查詢或更新操作之類的工作,通過網絡文件系統訪問物理數據。</p>
<p> ④</font><font face="Arial"> </font><font face="宋體" lang="ZH-CN">數據庫引擎將結果返送給工作站上的通信接口。</p>
<p> ⑤</font><font face="Arial"> </font><font face="宋體" lang="ZH-CN">前端從接口上接到結果后,顯示或按用戶要求做其它處理。 </p>
<p> 客戶</font><font face="Arial">/</font><font face="宋體" lang="ZH-CN">服務器型比本地型</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">更接近</font><font
face="Arial">ODBC</font><font face="宋體" lang="ZH-CN">的原理。因為由前端向數據庫的命令發送和由數據庫向前端結果的返回都是透明的,并不需知道具體傳送方式如何,各系統存在差別地方是:客戶</font><font
face="Arial">/</font><font face="宋體" lang="ZH-CN">服務器系統在管理工作站和服務器間通信的方式不同,彼此會不兼容。此外</font><font
face="Arial">,</font><font face="宋體" lang="ZH-CN">對于本地型</font><font
face="Arial">DBMS</font><font face="宋體" lang="ZH-CN">缺乏讀取不同類型數據源的能力的問題。這些問題在</font><font
face="Arial">IDAPI</font><font face="宋體" lang="ZH-CN">中得到了有效解決。 </p>
</font><font face="Arial"><p>18.1.4.3 Borland Delphi </font><font face="宋體"
lang="ZH-CN">的解決方案 </p>
<p> </font><font face="Arial">IDAPI</font><font face="宋體" lang="ZH-CN">是通過</font><font
face="Arial">BDE(Borland Database Engine)</font><font face="宋體" lang="ZH-CN">和</font><font
face="Arial">SQL Links</font><font face="宋體" lang="ZH-CN">,來解決本地型數據庫接口和客戶</font><font
face="Arial">/</font><font face="宋體" lang="ZH-CN">服務器型數據庫接口的兼容問題的,見圖</font><font
face="Arial">13.1</font><font face="宋體" lang="ZH-CN">。</p>
<p> </font><font face="Arial">Delphi </font><font face="宋體" lang="ZH-CN">的數據庫特性使你能很容易構造數據庫應用程序。這些應用程序能訪問</font><font
face="Arial">Visual dBASE</font><font face="宋體" lang="ZH-CN">、</font><font
face="Arial">Paradox</font><font face="宋體" lang="ZH-CN">、</font><font face="Arial">Local
InterBase Server for Windows</font><font face="宋體" lang="ZH-CN">等本地數據庫和</font><font
face="Arial">Oracle</font><font face="宋體" lang="ZH-CN">、</font><font face="Arial">Sybase</font><font
face="宋體" lang="ZH-CN">、</font><font face="Arial">Informix</font><font face="宋體"
lang="ZH-CN">、</font><font face="Arial">SQL Server</font><font face="宋體"
lang="ZH-CN">和</font><font face="Arial">Remote InterBase Server</font><font
face="宋體" lang="ZH-CN">等客戶</font><font face="Arial">/</font><font face="宋體"
lang="ZH-CN">服務器數據庫。</font><font face="Arial"></p>
<p>BDE</font><font face="宋體" lang="ZH-CN">是</font><font face="Arial">Borland</font><font
face="宋體" lang="ZH-CN">公司支持</font><font face="Arial">Delphi 2.0 Client/Server
Suite</font><font face="宋體" lang="ZH-CN">、</font><font face="Arial">Paradox for
Windows</font><font face="宋體" lang="ZH-CN">、</font><font face="Arial">Visual dBASE
for Windows</font><font face="宋體" lang="ZH-CN">等產品的核心數據庫引擎和互連軟件。</font><font
face="Arial">BDE </font><font face="宋體" lang="ZH-CN">提供了豐富和強壯的特性支持客戶</font><font
face="Arial">/</font><font face="宋體" lang="ZH-CN">服務器應用的開發。</p>
<p> 提供支持多種數據庫如</font><font face="Arial">dBASE</font><font
face="宋體" lang="ZH-CN">、</font><font face="Arial">Paradox</font><font face="宋體"
lang="ZH-CN">、</font><font face="Arial">Text</font><font face="宋體" lang="ZH-CN">、</font><font
face="Arial">InterBase</font><font face="宋體" lang="ZH-CN">、</font><font face="Arial">Oracle</font><font
face="宋體" lang="ZH-CN">、</font><font face="Arial">Sybase</font><font face="宋體"
lang="ZH-CN">和</font><font face="Arial">Microsoft SQL Server</font><font face="宋體"
lang="ZH-CN">以及任何</font><font face="Arial">ODBC</font><font face="宋體"
lang="ZH-CN">數據源的統一和一致的應用程序編程接口</font><font
face="Arial">(API)</font><font face="宋體" lang="ZH-CN">。開發者能不用修改數據庫應用就能訪問不同的數據庫站點和數據庫格式:</p>
<p> </font><font face="Arial"> </font><font face="宋體" lang="ZH-CN">●</font><font
face="Arial"> BDE</font><font face="宋體" lang="ZH-CN">是用于開發客戶</font><font
face="Arial">/</font><font face="宋體" lang="ZH-CN">服務器數據庫應用的理想工具,數據庫應用程序既可訪問本地數據庫又可訪問遠程數據庫</font><font
face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">●</font><font face="Arial"> </font><font
face="宋體" lang="ZH-CN">允許數據庫用直接和靈活地訪問數據源</font><font
face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">●</font><font face="Arial"> BDE</font><font
face="宋體" lang="ZH-CN">對于</font><font face="Arial">Paradox</font><font
face="宋體" lang="ZH-CN">和</font><font face="Arial">dBASE</font><font face="宋體"
lang="ZH-CN">文件格式來是高性能的數據庫引擎</p>
<p> </font><font face="Arial"> </font><font face="宋體" lang="ZH-CN">●</font><font
face="Arial"> </font><font face="宋體" lang="ZH-CN">支持使用</font><font
face="Arial">ISAM(Indextd Sequential Access Method)SQL</font><font face="宋體"
lang="ZH-CN">和</font><font face="Arial">QBE</font><font face="宋體" lang="ZH-CN">訪問數據</p>
<p> </font><font face="Arial"> </font><font face="宋體" lang="ZH-CN">●</font><font
face="Arial"> BDE</font><font face="宋體" lang="ZH-CN">是數據集成化引擎,提高跨不同數據庫的共享服務。支持不同數據庫格式的相互轉化,如</font><font
face="Arial">dBASE</font><font face="宋體" lang="ZH-CN">和</font><font face="Arial">Oracle</font><font
face="宋體" lang="ZH-CN">表、從</font><font face="Arial">InterBase</font><font
face="宋體" lang="ZH-CN">到</font><font face="Arial">Paradox</font><font face="宋體"
lang="ZH-CN">拷貝數據甚至建立</font><font face="Arial">InterBase </font><font
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -