Application Framework之三大流派
2001-05-02 11:05:22


在業界有許多把Windows程式包裝好的類別函示庫(Class Library),這些函示庫利用C++語言帶來的特性像是:封裝、繼承及虛擬函示等特性來打造視窗物件,使程式設計師得以加以利用,加快建立Windows應用程式的速度,這一類龐大的類別函示庫統稱為應用程式架構(Application Framework , AF),目前業界有3大AF的存在:

一、Microsoft的MFC(Microsoft Foundation Classes):
MFC是Microsoft 所推出的AF,首先出現在Microsoft C++ 7.0(那時候Microsoft Visual C++ 1.0還沒有問世,Windows版本也還在2.x),由於是Windows本家所推出的AF,深受M字派擁護者的喜愛,因此在Microsoft Visual C++、Watcom C++、Symantic C++、Borland C++、Borland C++Builder(3.0版以後開始支援)都找得到MFC的蹤影,最新的MFC版本是4.21。

二、Borland的OWL(Object Windows Library):
這是Borland推出的AF,隨著Borland C++ 3.0 for Windows所推出,也是從Windows 3.1開始起家的。每一代Borland C++都可以看得到他的蹤影(但Borland C++發行到5.02版以後就沒有再推出新版本了,取而代之的是C++Builder,但是奇怪的是C++Builder 1.0並沒有支援OWL),但是由於Borland近年來對於VCL的心血投入甚多,加上市場受到Microsoft MFC的鯨吞蠶食,已經漸漸不再開發新版本而退出市場,C++Builder從3.0開始支援OWL(也支援MFC),但是到了C++Builder 5.0開始僅支援VCL及MFC,開始放棄OWL的市場了。一個原本被喻為Windows平台上最棒的AF就這樣沒落了,真是辛苦那些原本學OWL的程式設計師了。

三、Borland的VCL(Visual Component Library):
這是Borland繼OWL受打壓之後所推出的力作,以Object Pascal為核心語言(Object Pascal的制定權在Borland手上,因此Borland把Object Pascal修改成功能強大的物件導向語言幾乎C++語言有的功能Object Pascal都辦得到),Borland近期的Delphi及C++Builder皆使用VCL當作AF,讀者們一定會覺得很奇怪,VCL不是用Object Pascal所寫成的嗎?為什麼C++Builder可以支援呢?這就得說到對Object Pascal有得天獨厚的權力加上Delphi也是Borland自己本家的產品,當然可以把C++Builder做到相容Delphi的境界囉!另外值得一提的是C++Builder裡所使用的VCL版本幾乎都比同版本Delphi新大約 0.5個版號,也就是說若Delphi 4.0所使用VCL版本是4.0則C++Builder4.0所使用的就是4.5版的VCL,原因無他因為C++Builder皆比Delphi晚半年左右推出,而Borland VCL小組也一直在更新版本及修正臭蟲,因此C++Builder的使用者可以以享用到比相同版號Delphi更新的VCL,此外C++Builder也擁有與同一版號Delphi大多數的新功能。VCL在Borland手中打造成了真正視覺化的物件形式,讓程式設計師幾乎以拖拉點放就可以完成大部分視窗界面上的工作程式設計師僅需在必要的事件中加以撰寫程式就可以完成其所要的功能。此外,程式設計師還可以自行撰寫VCL元件(VCL Component)來使用甚至是與其他程式設計師交流,僅需將元件打包至一個Package(註)並安裝至C++Bui;der(或Delphi)中就可以像是內建的VCL元件一般的使用了,非常的方便;也因此,許多C/C++程式設計師紛紛轉投至C++Builder氅下,原因無他就是VCL的便利性,在網際網路上可以下載到許多的 VCL元件來使用,甚至有許多是完全免費的,使用VCL元件可以減少程式設計師開發的時間,但程式的複雜度也相對的的提高了許多。最新的VCL版本是C++Builder內附上的VCL 5.5。

值得一提的是這三大AF在購買編譯器時只要是購買Professional版本大多會附上原始程式碼,若使用者想要好好的了解AF在背後到底是怎麼封裝怎麼撰寫,可以自己好好的去Trace這些原始碼

__________________
Best regards

Martin Hsiao

Email: martin@msws.idv.tw
Inside Out C++Builder http://insidebcb.msws.idv.tw
Open Source United Bulletin http://bulletin.linuxshop.idv.tw/