李维:Windows 原生開發工具的瑰寶 – Delphi 6(2…

2008-04-09 04:29:52来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


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
1.215
BDE
4.826
最佳化後的 BDE
3.171



除了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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:用Delphi编写安装程序(1)

下一篇:Delphi中 OnDrawCell的使用技巧