Visual FoxPro是什么 作為市場上最靈活和功能最強大的數(shù)據(jù)庫管理系統(tǒng),Visual FoxPro擁有悠久而輝煌的發(fā)展歷史。它初創(chuàng)時是Fox Software公司的FoxBASE產(chǎn)品,“Fox”(這是國際編程界對它的稱呼)一種可靠、便捷和高效的程序員用的數(shù)據(jù)庫產(chǎn)品而名聞遐邇。 世界上沒有一種產(chǎn)品像 Visual FoxPro 那樣運行,它是獨一無二的! 許多人在享受了Visual FoxPro的服務(wù)后卻說不清它是什么。就讓我們沿著它的發(fā)展軌跡了解了解它吧!這會使您能對它有更深刻的認識。 FoxPro隸屬于一種名為Xbase的DBMS類別。Xbase這個術(shù)語很常見,他表示諸如FoxPro、dBASEIII PLUS、dBASEIV、FoxBASE+以及ARAGO的語言。Xbase最初起源于一個大型機使用的DBMS,這個DBMS叫做JPLDIS(噴射推動實驗室數(shù)據(jù)庫管理和信息檢索系統(tǒng))。這個DBMS 是由美國人Jeb Long在1972年開發(fā)成功的。到目前為止全世界的開發(fā)者和程序員已經(jīng)編寫了幾千萬行的Xbase代碼。 追溯到80年代末,F(xiàn)oxBASE是dBase的克隆系統(tǒng)。只要是dBASEIII能做的工作,F(xiàn)oxBASE就能做得更好更快。FoxBASE雖然擁有某些全新的特征,但它并沒有真正重大的技術(shù)突破,只是為了運行得更快更好,而更重要的是它與dBASEIII兼容。 FoxPro 1.0首先背離了與兼容的原則。它開始在圖形用戶界面的設(shè)計和軟件開發(fā)方法中采用一些新的思路,從而使它領(lǐng)先于當時年前景已不妙的dBASEIV。 從2.0開始,F(xiàn)oxPro才真正形成了它自己的特色。當FoxPro 2.0推出時,它包含了若干項關(guān)鍵技術(shù),給PC數(shù)據(jù)庫開發(fā)市場帶來了革命性的變化。這些技術(shù)是:1.加入了Rushmore技術(shù),它能從事許多難以想象的復雜工作。突然之間,帶有以百萬計數(shù)的記錄的表格在PC數(shù)據(jù)庫系統(tǒng)中不僅成為可能,而且可以非常容易地加以實現(xiàn),無需轉(zhuǎn)用其他比較昂貴的技術(shù);Rushmore最重要的優(yōu)點在于它是完全自動化的,不用用戶花費精力和時間。因為有了Rushmore技術(shù),再加上Fox天生的快速,即使在今天Visual FoxPro仍然是最快的桌面數(shù)據(jù)庫引擎。2.SQL語句是FoxPro 2.0推出的另一項具有革命性意義的關(guān)鍵技術(shù)。Fox的開發(fā)人員首次用單一語句取代了整個程序過程,并且這種支持是內(nèi)含于Fox數(shù)據(jù)引擎之中的。SQL語言曾經(jīng)并且現(xiàn)在仍然是強大的數(shù)據(jù)語言。3.FoxPro 2.0還推出了某種所見即所得的開發(fā)報表和屏幕的工具。
FoxPro 2.0確實具備了我們今天的Visual FoxPro擁有的一些出色的功能。GUI設(shè)計服務(wù)、SQL和極快的數(shù)據(jù)訪問,是它明顯的特征。 FoxPro 2.5有for DOS、for Windows版,不過那個Windows版只是具有看上去像“Windows”的DOS應(yīng)用程序的外觀。特別是那個DOS下的版本絕對是經(jīng)典之作,觀察身邊是不是還有很多這樣的系統(tǒng)在運行著?當時有人這樣評價:這個軟件已經(jīng)無法再快了,除非硬件升級…… 直到1995年春天Visual FoxPro推出時,才出現(xiàn)了FoxPro的又一次重大改進(這時Microsoft已經(jīng)收購了Fox Software公司)。Visual FoxPro 3.0增加了一些人們企盼已久的特性,使PC數(shù)據(jù)庫開發(fā)界大為震驚。我們可以看到:Visual FoxPro與FoxPro是由很大差別的,不要再把Visual FoxPro成為FoxPro了。這些特性是:1.數(shù)據(jù)庫容器(Database Container),也叫DBC,它增加了開發(fā)人員多年盼望的對存儲過程的支持、與表格相關(guān)聯(lián)的數(shù)據(jù)規(guī)則和一系列的附加數(shù)據(jù)功能。2.遠程數(shù)據(jù)的無縫連接。談到連接遠程數(shù)據(jù)的處理,大家往往會想到RDO、ADO、BDE等處理數(shù)據(jù)引擎,那么Visual FoxPro利用什么實現(xiàn)遠程數(shù)據(jù)的無縫連接?Visual FoxPro本身的數(shù)據(jù)處理引擎,這和其他任何開發(fā)工具都是不同的!Visual FoxPro數(shù)據(jù)處理引擎通過ODBC驅(qū)動程序與遠程數(shù)據(jù)庫服務(wù)器“通話”,遠程數(shù)據(jù)庫服務(wù)器的ODBC驅(qū)動程序能將Visual FoxPro數(shù)據(jù)轉(zhuǎn)化成可由他們解釋的數(shù)據(jù);相反,Visual FoxPro的ODBC驅(qū)動程序也能將遠程數(shù)據(jù)轉(zhuǎn)化成可由Visual FoxPro數(shù)據(jù)引擎處理的數(shù)據(jù)??梢?,只要遠程數(shù)據(jù)庫有ODBC驅(qū)動程序,就可以用Visual FoxPro最為客戶端軟件。常見的SQL Server、Oracle、Access等數(shù)據(jù)庫都提供ODBC驅(qū)動程序。 3.完全支持面向?qū)ο蠹夹g(shù)(OOP)。充分而健壯的實現(xiàn)了面向?qū)ο蟮奶幚矸绞酱蟠蟾纳屏塑浖_發(fā)條件。健壯的對象模型和創(chuàng)建你自己的類及子類的所用的功能,形成了一種全新的軟件開發(fā)手段。
Visual FoxPro 5.0是3.0的升級版本,它是一個32位的系統(tǒng)。具備了使用和創(chuàng)建COM服務(wù)器的功能,并開始支持在Internet上發(fā)布Visual FoxPro。從這個版本開始,Visual FoxPro進入了Visual studio家族,并且Visual FoxPro將不再升級的謠言也是在這個時期出現(xiàn)。 在Visual FoxPro 6.0出現(xiàn)之前,微軟計劃推出DNA,演化到今天就是.NET,并承諾把Visual FoxPro發(fā)展成健壯的中間層工具,所以這以后Visual FoxPro的變化初級用戶就不太容易感覺了。 Visual FoxPro 6.0也沒有根本上的變化,不過有些變化還是相當明顯的。Access和Assign這兩種方法在控制放入你的對象中的數(shù)據(jù)方面很有創(chuàng)意。運用新的Component Gallery(組件庫)和Foundation Classes(基礎(chǔ)類),你能很容易地轉(zhuǎn)向創(chuàng)建面向?qū)ο蟮膽?yīng)用程序的工作。對COM支持的更好,在Server Pack 3后我們可以用Visual FoxPro創(chuàng)建多線程的COM組件。 Visual FoxPro 7是Fox第一個可視化版本——Visual FoxPro 3以后的最具有革命意義的一次產(chǎn)品升級換代。關(guān)于它的特性,稍候本文會有專門段落講解。 Visual FoxPro的語言是由Xbase、SQL、OOP構(gòu)成的。我不知道這樣分解是否合理,我只是從FoxPro的發(fā)展歷史得出以上結(jié)論的。其實以上三者在Visual FoxPro完美的融合在一起了,已經(jīng)與Visual FoxPro血脈相連、不可分割,很多語句、函數(shù)很難區(qū)分它屬于哪個門類(也沒必要)。再者Xbase這一叫法也不十分妥當,這樣容易讓人誤會,好像Visual FoxPro的語言是沒有發(fā)展的“死語言”、是十幾年前的“老古董”,其實在FoxPro每一次升級中(現(xiàn)在已是Visual FoxPro 7)都會對這部分語言進行修訂、增補。我看還是這樣:Visual FoxPro語言就叫它:“Visual FoxPro語言”,它既不同于任何以往的Xbase(最多有歷史淵源),也不同于其它的編程語言。這就象Delphi那樣,是Object Pascal語言,不是以前的Pascal;VB就是VB,不是以前的 Basic。 綜上所述,Visual FoxPro是創(chuàng)建關(guān)鍵任務(wù)的、企業(yè)范圍的、面向?qū)ο蟮膯螌哟?、雙層次、多層次應(yīng)用程序的重要開發(fā)工具,這些應(yīng)用程序可以在本地或全球范圍內(nèi)進行配置。 VisualFoxPro 與其他開發(fā)工具的比較 這其實是一個很傻的話題,選擇何種開發(fā)工具完全是由于程序員的面臨的任務(wù)以及個人的喜好決定的。只要您選用的工具能夠勝任您從事的項目,只要您對開發(fā)工具有足夠的造詣以應(yīng)付多變、復雜的工作,只要這個工具還在繼續(xù)升級,您就沒有理由更換工具,更沒有必要摻和到這種無聊的討論中去。 任何工具都有其優(yōu)勢與弱勢,產(chǎn)品定位更是各自不同,每個程序員都覺得自己的選擇是最好的,別人都是愚蠢的。以下的討論只是無聊的筆者發(fā)出的無聊的言論,您大可掠過不看。 談?wù)揤isualFoxPro,我們必須注意這樣一個問題:VisualFoxPro 是干什么用的。毋庸置疑,它是一種數(shù)據(jù)庫系統(tǒng)的開發(fā)工具。 我個人認為,到目前為止在Microsoft公司的所有開發(fā)工具中,Visual FoxPro是開發(fā)數(shù)據(jù)庫應(yīng)用程序的最佳產(chǎn)品。我們必須承認這樣的事實:從一開始,VisualFoxPro 就是為處理數(shù)據(jù)而設(shè)計的,它運行速度快、功能強大、而且非常靈活。 有很多人老喜歡拿Access與VisualFoxPro 比較,對此我總不屑一顧,且讓我們看看微軟的評論吧!微軟原話如下:“Microsoft Access 是 Office 中的數(shù)據(jù)庫,也是微軟所銷售的軟件中,使用最廣且最容易學習的數(shù)據(jù)庫工具。如果你是數(shù)據(jù)庫的新手,如果你要使用Microsoft Office來建立應(yīng)用程序,或者你想要一個相當便利的交互式產(chǎn)品,那么就選擇Access。Visual FoxPro 是用來建立關(guān)系型數(shù)據(jù)庫應(yīng)用程序的一種功能強大的RAD工具。如果你是一位以建立關(guān)系型數(shù)據(jù)庫應(yīng)用程序維生的數(shù)據(jù)庫開發(fā)人員,而且你希望速度與功能都達到極限,那么請選擇Visual FoxPro?!?這段話在今年VisualFoxPro 退出VisualStudio后,微軟又重復了一次,強調(diào)VisualFoxPro是專業(yè)開發(fā)人員的開發(fā)工具,而不是Access 那樣的普通用戶的辦公平臺。) 根據(jù)我的經(jīng)驗,Access的MDB數(shù)據(jù)庫適用于20萬條/表的數(shù)據(jù)量的應(yīng)用(它比VisualFoxPro數(shù)據(jù)庫的唯一長處是:所有的數(shù)據(jù)庫組件都在同一個MDB文件里,而Fox的數(shù)據(jù)庫可能有多個文件組成,顯得凌亂。),數(shù)據(jù)量再增加的話,不是說Access不能處理了,而是效率不行了??查詢、索引都很慢。VisualFoxPro能處理百萬計甚至上千萬計的數(shù)據(jù)量,這都是有實踐根據(jù),在過去的20多年里,特別是大型網(wǎng)絡(luò)數(shù)據(jù)庫沒有平民化的年代里,業(yè)界就是依靠DBF數(shù)據(jù)表來管理數(shù)據(jù)的,毫不夸張VisualFoxPro是能夠安全、高效處理大數(shù)據(jù)量的專業(yè)工具。 有多人拿VisualFoxPro與VB、Delphi甚至是VC++做比較,這是很幼稚的,后面三者是編程語言,而VisualFoxPro是數(shù)據(jù)庫 系統(tǒng)的開發(fā)工具,天生分工就不同。 我聽說過這樣的典故:Foxmail最初是用Visual FoxPro編寫的(所以叫做FoxMail),后來改用Delphi編寫。如果這是事實就很能說明問題,VisualFoxPro是數(shù)據(jù)庫開發(fā)工具以它編寫郵件客戶軟件有點勉為其難,即使成功了效率也不會很高,但如果是一個用VisualFoxPro寫的管理系統(tǒng)中要求有郵件功能,Visual FoxPro則完全可以做得很好。 VisualFoxPro作為數(shù)據(jù)庫開發(fā)工具,它為我們提供了十分強健、高效的數(shù)據(jù)引擎,它容量大、速度快、靈活、健壯,所以用Visual FoxPro開發(fā)單用戶數(shù)據(jù)庫絕對比其他所有軟件來的高效??曾經(jīng)有人嘲笑VB處理5、6萬條記錄就趴下,但我們的Visual FoxPro處理百萬條記錄也不覺吃力,所以Visual FoxPro的開發(fā)人員無論在什么時候都要注意發(fā)揮Visual FoxPro的數(shù)據(jù)引擎的威力,這樣才能立于不敗之地。VC++很厲害,但真正地用好它不容易, 開發(fā)效率也不高。如果使用VC++開發(fā)應(yīng)用程序還象VB那樣只會使用控件,那么還是別使用VC++了(這叫掛羊頭賣狗肉),再者VisualFoxPro本身是VC++編寫的,是歷代最優(yōu)秀的程序員智慧的結(jié)晶,為什么有了VC++還要花精力編寫VisualFoxPro,這本身就 很說明問題。 又有人把Power Builder請出來與Visual FoxPro作比較,大家都是數(shù)據(jù)庫應(yīng)用程序開發(fā)環(huán)境,好像PB比VisualFoxPro厲害。 就數(shù)據(jù)庫系統(tǒng)的開發(fā)而言,Visial FoxPro 可以開發(fā)單用戶系統(tǒng)、網(wǎng)絡(luò)環(huán)境下的文件服務(wù)器系統(tǒng)、客戶機服務(wù)器系統(tǒng)、WebServer、數(shù)據(jù)處理的COM組件、WebService,可以說除了Web界面無法開發(fā)之外,凡是與數(shù)據(jù)庫系統(tǒng)有關(guān)的開發(fā)領(lǐng)域VisualFoxPro都很好的支持。PB的起點在客戶機服務(wù)器系統(tǒng),也能很漂亮的完成工作,此中取舍全憑個人喜好;另外,PB的成本很高。據(jù)我所知它的價格十分昂貴(有人戲稱說PB是世界五百強才用的起的產(chǎn)品),而Visual FoxPro才賣幾千人民幣。當然,這個觀點您可以不接受??在中國軟件是沒有價值的,每張只賣5元人民幣;還有PB的開發(fā)方式與眾不同,用了他以后再改學別的會比較困難;最后退一萬步講,您要變換編程工具,我也不贊成改用PB,因為PB再好也是一個數(shù)據(jù)庫開發(fā)工具,從這上面講與Visual FoxPro是一個級別的東西,您想變換工具一定有更多的需求,我看用C#或Delphi會是更佳的選擇。 所有這些語言與VisualFoxPro相比,最大的區(qū)別就是:VisualFoxPro是程序設(shè)計語言與DBMS的完美結(jié)合,而Vc++、Delphi、Vb、PB都只是編程工具,而不是DBMS。Visual FoxPro的這一特性,決定了它更合適與任何類型的企事業(yè)單位,我無法想象??為了簡單的查詢還要用Vc++、Delphi、Vb、PB編寫一個Exe文件,使用Command窗口多好! 又有人把網(wǎng)絡(luò)數(shù)據(jù)庫如Oracle、SQLServer與VisualFoxPro相比較,說了Visual FoxPro一大通的壞話,這種人其實很傻,你大可對他嗤之以鼻。大型數(shù)據(jù)庫與桌面數(shù)據(jù)庫在系統(tǒng)開發(fā)中的作用是不一樣,兩者是相輔相成的。我們應(yīng)該把注意力放在“怎樣發(fā)揮兩者數(shù)據(jù)庫引擎最高效能的問題上”,而不是去爭論孰優(yōu)孰劣。這種爭論就好比是評論是男人漂亮、還是女人美麗那樣??毫無意義。 Visual FoxPr 從Visual Studio 中分離出來了 2001年2月26日,微軟宣布將VisualFoxPro 從VisualStudio 中分離出來,這是一個好消息還是壞消息呢?我們來分析一下: Visual Studio.Net 是一種擅長于開發(fā)Web應(yīng)用程序的工具,過去與現(xiàn)在微軟霸占著"桌面應(yīng)用程序"應(yīng)用市場,現(xiàn)在微軟要吞噬現(xiàn)在由其他公司控制的大型網(wǎng)絡(luò)應(yīng)用市場,于是推出了.Net構(gòu)架,VisualStudio.Net就是開發(fā)基于.Net的應(yīng)用程序的RAD(快速開發(fā)環(huán)境)。 筆者認為:起碼在可知的一兩年內(nèi),我們這些用Visual FoxPro寫程序的人不會有用VisualFoxPro開發(fā)大型Web應(yīng)用需求,客觀上絕大多數(shù)企業(yè)也不會有自建一個電子商務(wù)網(wǎng)站的需求,我們并不會因為Visual FoxPro不是.Net語言而失去我們的市場--普通的企業(yè)級(單用戶構(gòu)架、File Server構(gòu)架、(兩層、三層)客戶機服務(wù)器構(gòu)架)的應(yīng)用。等.Net真正熱起來,那將是幾年后的事情了! 當然作為.Net語言也可以開發(fā)桌面應(yīng)用程序,Visual FoxPro成為.Net語言不是更好嗎?筆者的看法是:不一定。一位網(wǎng)友說:VB.Net的?法像VC++又像JAVA,已?完全不像BASIC?法了,等於是要重新??另一套?言了,有這種感覺的VB程序員很多,聽說國外有很多VB程序員還"憂心忡忡"的。連微軟也承認:VB 6與VB.Net是差別很大的語言。 假設(shè)VB變化的只是語法特色(這已經(jīng)夠厲害的),那么如果VisualFoxPro現(xiàn)在成為.Net語言,其標志性功能的損失一定比VB更多!我們認為:這其中最不能讓大家容忍的就是:VisualFoxPro的數(shù)據(jù)引擎和數(shù)據(jù)處理手段將損失殆盡,說實話我們中多數(shù)人使用VisualFoxPro就是看中了它在數(shù)據(jù)處理上的無與倫比優(yōu)勢。.Net語言使用公共運行庫(CommonRuntime Language),數(shù)據(jù)庫方面的功能是通過外掛ADO等組件完成的。在技術(shù)不成熟的現(xiàn)在,讓Visual FoxPro運行在CLR上,勢必只有三種選擇:取消VisualFoxPro的數(shù)據(jù)處理組件,讓它使用組件處理數(shù)據(jù);把Visual FoxPro的數(shù)據(jù)引擎加入公共運行庫;VisualFoxPro的數(shù)據(jù)引擎做成一個組件??梢娺@三種選擇沒有一種是合理的,即使成了,那么Visual FoxPro也就成為了一個四不像的東西。 但自從FOXPRO 獨立出來后,微軟一直沒有停止對它的開發(fā),甚至開發(fā)速度要超過其他語言,相繼7.0后又有了8.0,9.0,現(xiàn)在出現(xiàn)了9.0 SP1,可見微軟對它的重視.
|