李维:Windows 原生開發工具的瑰寶 – Delphi 6(2…
2008-04-09 04:29:52来源:互联网 阅读 ()
Delphi 6的dbExpress元件組。

Delphi 6的dbExpress元件組
在4月的RUN!PC的Kylix介紹一文中我已經介紹過dbExpress,因此在本文只簡單的介
紹dbExpress的功能。
基本上dbExpress是使用所謂的Firehose引擎來存取資料,並且把異動資料的工作交給
MIDAS(MIDAS在Delphi 6中將改名為DataSnap)下圖便是DBExpress結合Firehose和
MIDAS的功能示意圖。

dbExpress的核心是數個簡潔的介面(Interface)組成的,這些介面定義了如何跟特定的
資料庫廠商介面溝通的ISQLDriver,如何連結資料庫的ISQLConnection,如何對資料
來源下達命令的ISQLCommand,如何控制Cursor的ISQLCursor,以及存取資料庫
MetaData的ISQLMetaData。這些介面定義的目標就是簡易,有效率,它們和Java的
JDBC有非常類似的觀念,但是Borland又提供了MIDAS來巧妙的結合這些介面,因此
提供了比JDBC高上數倍的生產力。
雖然dbExpress在Kylix中是1.0的版本,而在Delphi 6中則是1.x的版本,意謂Borland又
修正和改善了Kylix中的dbExpress。但是dbExpress的執行速度卻已經和開發多年的
BDE/IDAPI有著幾乎一樣的表現,絲毫不遜色,甚至有許多項目還比BDE/IDAPI表現
得更好。例如下圖是dbExpress和BDE/IDAPI在連結InterBase的表現,從下面的資料中
可以看出dbExpress還略勝一籌。
開啟資料庫 dbExpress BDE
時間 1.467 1.831

此外我還寫了一些測試程式,讓dbExpress和BDE/IDAPI隨機產生資料,並且異動到資
料庫之中。下面便是執行測試的結果,從這些數據中我們可以看出dbExpress和
BDE/IDAPI幾乎是不分上下的。
新增資料筆數 dbExpress BDE
10 0.052 0.036
100 0.334 0.342
1000 3.186 3.421
2000 6.514 6.732
10000 37.992 36.109

不過dbExpress更吸引人的地方是如果程式師知道如何微調它的話,那麼它幾乎可以
使用閃電般的速度處理資料。例如下面的資料便是經過我調整之後的dbExpress和
BDE/IDAPI比較處理資料的結果。從這些數據中我們可以看到調整之後的dbExpress幾
乎以快3倍的速度在處理資料,把BDE/IDAPI遠遠的拋在後面。看到這樣的結果,真
不禁今人佩服Borland開發dbExpress的功力。
新增資料筆數 dbExpress BDE 改良的dbExpress
10 0.052 0.036 0.047
100 0.334 0.342 0.206
1000 3.186 3.421 1.19
2000 6.514 6.732 2.686
10000 37.992 36.109 17.472

dbExpress除了在異動資料的速度方面超過BDE/IDAPI,在查詢資料方面也是大幅領先
BDE/IDAPI。例如下表是分別使用dbExpress和BDE/查詢大量隨機資料的結果,
dbExpress在這一方面也以3倍的時間勝出BDE。從各種數據顯示,dbExpress在各種處
理資料的工作方面幾乎都遙遙領先已經發展數年之久的BDE/IDAPI。

除了dbExpress之外,Delphi 6仍然內附了最新的BDE/IDAPI,它包含了臭蟲修正以及
新的DB2驅動程式。此外也仍然包含ADOExpress,ADOExpress除了修正了許多臭蟲
之外,也加入了一些新的功能,最重要的是ADOExpress終於改正了在開發
Master/Detail型態的應用程式會碰到的問題,這應該可以讓許多程式師感到滿意,不
過Delphi 6的ADOExpress在Beta 4之中仍然是以MDAC 2.1版為基礎,並沒有昇級到最
新的2.7版,不知道Borland是否會在最後階段完成昇級的工作。
更好的COM 支援功能
Delphi 6在支援COM/MTS/COM 物件方面又再次的進行了加強的工作,除了在Type
Library編輯器增加功能之外,對於實作COM物件方面也加入了最新支援Neutral執行
緒模型的實作。例如下圖顯示了當我開發COM物件時,可以選擇各種執行緒模型型
態的COM物件。

Delphi 6允許程式師建立各種執行緒模型的COM物件,包括了最新的Neutral型態
的COM物件
此外當程式師需要實作特定的COM介面方法時,再也不需要像以往一樣辛苦的宣告
並且實作COM介面。Delphi 6的COM精靈可以讓程式師自由選擇要實作的COM介面,
然後幫助程式師自動產生所有的介面宣告程式碼。例如下圖是我要實作IActiveMovie
介面時,可以啟動Delphi 6的COM精靈,從介面選擇精靈對話盒中選擇IActiveMovie
介面,然後Delphi 6便會在編輯器中自動產生所有IActiveMovie介面的宣告程式碼,使
用介面精靈的好處是程式師不但更方便,而且在宣告介面定義時也不會出錯。

Delphi 6 的COM精靈可以幫助程式師自動宣告任何COM介面以及COM介面之中的
方法
type
TIDelphi6 = class(TAutoObject, AccessObject)
protected
function Get__Name: WideString; safecall;
function Get_Attributes: Integer; safecall;
function Get_FullName: WideString; safecall;
function Get_IsLoaded: WordBool; safecall;
function Get_Name: WideString; safecall;
function Get_Parent: IDispatch; safecall;
function Get_Properties: AccessObjectProperties; safecall;
function Get_Type_: Integer; safecall;
{ Protected declarations }
end;
除了一般的COM物件之外,Delphi 6在支援MTS/COM 方面也以新的Transaction Object
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
