九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
認(rèn)識(shí)VFP--Visual FoxPro 漫談

BOE.COM Article Resource News Links About US

文章標(biāo)題:Visual FoxPro 漫談
作品來(lái)源:BOE 數(shù)據(jù)網(wǎng)絡(luò)工作室
創(chuàng)建日期:2001年02月23日
最后更新:2002年07月21日
文字?jǐn)?shù)量:約22000字
作者姓名:陳純

譯者姓名 原創(chuàng)作品 無(wú)譯者
版權(quán)聲明 版權(quán)屬于BOE 數(shù)據(jù)網(wǎng)絡(luò)工作室

細(xì)節(jié)描述
作為市場(chǎng)上最靈活和功能最強(qiáng)大的數(shù)據(jù)庫(kù)管理系統(tǒng),Visual FoxPro擁有悠久而輝煌的發(fā)展歷史。它初創(chuàng)時(shí)是Fox Software公司的FoxBASE產(chǎn)品,“Fox”(這是國(guó)際編程界對(duì)她的稱呼)一種可靠、便捷和高效的程序員用的數(shù)據(jù)庫(kù)產(chǎn)品而名聞遐邇。世界上沒(méi)有一種產(chǎn)品像 Visual FoxPro 那樣運(yùn)行,她是獨(dú)一無(wú)二的!

目錄

前言
Visual FoxPro是什么?
Visual FoxPro 已經(jīng)過(guò)時(shí)了嗎?
面向?qū)ο笈c面向過(guò)程之爭(zhēng)?
面向記錄與面向集合之爭(zhēng)?
產(chǎn)品定位導(dǎo)致Visual FoxPro變化不易為人們感覺(jué)。微軟要把Visual FoxPro作為三層構(gòu)架(或是多層構(gòu)架)的中間層開(kāi)發(fā)工具
Visual FoxPro 只能局限于桌面應(yīng)用程序的開(kāi)發(fā)嗎?
不要以為Visual FoxPro是“低端產(chǎn)品",無(wú)論從數(shù)據(jù)庫(kù)(DBF Base)品質(zhì)還是開(kāi)發(fā)環(huán)境評(píng)價(jià)Visual FoxPro, 它都是一個(gè)“高端工具”
Visual FoxPro 的語(yǔ)言看上去蠻難的
OOP不僅是指“面向?qū)ο蟆钡拈_(kāi)發(fā)環(huán)境,更是一種開(kāi)發(fā)思想、開(kāi)發(fā)技術(shù),Visual FoxPro 在后者上做得更好
Visual FoxPro的界面能力真的很差嗎
Visual FoxPro與OLE DB、ADO
Visual FoxPro是一種歷史悠久的產(chǎn)品,很多用戶是從FoxBASE到FoxPro到Visual FoxPro,這樣一步一步過(guò)來(lái)的。歷史的積淀多了,歷史的包袱也重了——許多程序員往往抓住老產(chǎn)品而忘了深入鉆研新產(chǎn)品的新特性,這是一種悲哀
Visual FoxPro 與其他開(kāi)發(fā)工具的比較
Visual FoxPro 從Visual Studio 中分離出來(lái)了
我們失去了什么
Visual FoxPro 與.Net
客觀上,有利于Visual FoxPro 的發(fā)展
獨(dú)立面對(duì)挑戰(zhàn)
Visual FoxPro 7 的特性
巨好的開(kāi)發(fā)環(huán)境
數(shù)據(jù)庫(kù)事件
XML與Web Service
COM以及COM+
Install Shield Express For Visual FoxPro
Visual FoxPro 7 SP1
我們的 Visual FoxPro 8
已經(jīng)看到的Visual FoxPro 8 的新特性
微軟對(duì)Visual FoxPro 8的定位
Visual FoxPro 8 不會(huì)是.Net語(yǔ)言
我對(duì)Visual FoxPro 8 的期望
選擇Visual FoxPro

前言

這篇文章可以說(shuō)是 BOE 數(shù)據(jù)網(wǎng)絡(luò)工作室的開(kāi)山之作了。它的動(dòng)工是從2000年國(guó)慶節(jié)開(kāi)始的,寫(xiě)寫(xiě)停停,直到那年的農(nóng)歷春節(jié)才完成初稿……后來(lái)我有幾次修改,算在2002年4月的這個(gè)版本,應(yīng)該是第四版了!當(dāng)初,我寫(xiě)這篇文章的動(dòng)機(jī)是:平靜的表達(dá)我的觀點(diǎn)。作為一名 Visual FoxPro 的程序員經(jīng)常受到別人的質(zhì)疑、甚至是批駁、挖苦,我不是一個(gè)擅長(zhǎng)口舌爭(zhēng)斗的人,更不敢冒犯“眾怒”。于是我就用鍵盤(pán)陸續(xù)敲擊一些文字,表達(dá)我對(duì) Visual FoxPro 的認(rèn)識(shí),同時(shí)表達(dá)對(duì)各類問(wèn)題的看法……
近兩年來(lái),就我本人來(lái)說(shuō)發(fā)生了很多變化:由于工作的關(guān)系,我接觸了很多其他的開(kāi)發(fā)工具,其中有大家廣為熟悉的Delphi,也有國(guó)內(nèi)不見(jiàn)經(jīng)傳的Rapid Plus、InTouch、InSQL、InTruck。體會(huì)過(guò)種種、經(jīng)歷過(guò)許多,我覺(jué)得我更有能力完成此文了,我希望站在公正的立場(chǎng)上看待Visual FoxPro,而不是社會(huì)上一味的批評(píng)、鄙夷,更不是Fox Fans的“天下我是老大”的心態(tài)!希望大家能在文章中感到BOE的成熟和進(jìn)步。
網(wǎng)友們特別喜歡這篇文章,我知道Fox 的 Fans能在此處得到共鳴,其實(shí)我寫(xiě)這篇文章也就是要把平時(shí)大家關(guān)心的話題總結(jié)歸納一下,去粗取精、去偽存真……
去年春天 Visual FoxPro 7 就正式發(fā)行,好多狐友都在等待簡(jiǎn)體中文版,很遺憾的是,微軟并沒(méi)有漢化它。我覺(jué)得,沒(méi)有任何必要使用簡(jiǎn)體中文版的Visual FoxPro 7,原因如此:功能上講,中文版與英文版完全相同;Visual FoxPro 7的IDE與以前版本沒(méi)有什么區(qū)別,所以對(duì)于熟悉Visual FoxPro的用戶來(lái)說(shuō),使用上不會(huì)有任何障礙;再就是Help文件,Visual FoxPro 7自帶了一個(gè)完整、獨(dú)立的英文版的,而中文Visual FoxPro 6的Help是集成在MSDN里的,巨大無(wú)比,其實(shí)也沒(méi)怎么漢化,一般的Fox Fans都不裝的,所以就幫助來(lái)說(shuō),對(duì)于不熟悉英語(yǔ)的朋友來(lái)說(shuō),英語(yǔ)Visual FoxPro 7與中文Visual FoxPro 6是一樣的;Visual FoxPro 7從各方面來(lái)說(shuō),均非Visual FoxPro 6可比擬的,升級(jí)開(kāi)發(fā)工具是必然的。所以,希望各位,升級(jí)到Visual FoxPro 7吧!

Visual FoxPro是什么

作為市場(chǎng)上最靈活和功能最強(qiáng)大的數(shù)據(jù)庫(kù)管理系統(tǒng),Visual FoxPro擁有悠久而輝煌的發(fā)展歷史。它初創(chuàng)時(shí)是Fox Software公司的FoxBASE產(chǎn)品,“Fox”(這是國(guó)際編程界對(duì)它的稱呼)一種可靠、便捷和高效的程序員用的數(shù)據(jù)庫(kù)產(chǎn)品而名聞遐邇。 世界上沒(méi)有一種產(chǎn)品像 Visual FoxPro 那樣運(yùn)行,它是獨(dú)一無(wú)二的!

許多人在享受了Visual FoxPro的服務(wù)后卻說(shuō)不清它是什么。就讓我們沿著它的發(fā)展軌跡了解了解它吧!這會(huì)使您能對(duì)它有更深刻的認(rèn)識(shí)。

FoxPro隸屬于一種名為Xbase的DBMS類別。Xbase這個(gè)術(shù)語(yǔ)很常見(jiàn),他表示諸如FoxPro、dBASEIII PLUS、dBASEIV、FoxBASE+以及ARAGO的語(yǔ)言。Xbase最初起源于一個(gè)大型機(jī)使用的DBMS,這個(gè)DBMS叫做JPLDIS(噴射推動(dòng)實(shí)驗(yàn)室數(shù)據(jù)庫(kù)管理和信息檢索系統(tǒng))。這個(gè)DBMS 是由美國(guó)人Jeb Long在1972年開(kāi)發(fā)成功的。到目前為止全世界的開(kāi)發(fā)者和程序員已經(jīng)編寫(xiě)了幾千萬(wàn)行的Xbase代碼。

追溯到80年代末,F(xiàn)oxBASE是dBase的克隆系統(tǒng)。只要是dBASEIII能做的工作,F(xiàn)oxBASE就能做得更好更快。FoxBASE雖然擁有某些全新的特征,但它并沒(méi)有真正重大的技術(shù)突破,只是為了運(yùn)行得更快更好,而更重要的是它與dBASEIII兼容。

FoxPro 1.0首先背離了與兼容的原則。它開(kāi)始在圖形用戶界面的設(shè)計(jì)和軟件開(kāi)發(fā)方法中采用一些新的思路,從而使它領(lǐng)先于當(dāng)時(shí)年前景已不妙的dBASEIV。

從2.0開(kāi)始,F(xiàn)oxPro才真正形成了它自己的特色。當(dāng)FoxPro 2.0推出時(shí),它包含了若干項(xiàng)關(guān)鍵技術(shù),給PC數(shù)據(jù)庫(kù)開(kāi)發(fā)市場(chǎng)帶來(lái)了革命性的變化。這些技術(shù)是:加入了Rushmore技術(shù),它能從事許多難以想象的復(fù)雜工作。突然之間,帶有以百萬(wàn)計(jì)數(shù)的記錄的表格在PC數(shù)據(jù)庫(kù)系統(tǒng)中不僅成為可能,而且可以非常容易地加以實(shí)現(xiàn),無(wú)需轉(zhuǎn)用其他比較昂貴的技術(shù);Rushmore最重要的優(yōu)點(diǎn)在于它是完全自動(dòng)化的,不用用戶花費(fèi)精力和時(shí)間。因?yàn)橛辛薘ushmore技術(shù),再加上Fox天生的快速,即使在今天Visual FoxPro仍然是最快的桌面數(shù)據(jù)庫(kù)引擎。

SQL語(yǔ)句是FoxPro 2.0推出的另一項(xiàng)具有革命性意義的關(guān)鍵技術(shù)。Fox的開(kāi)發(fā)人員首次用單一語(yǔ)句取代了整個(gè)程序過(guò)程,并且這種支持是內(nèi)含于Fox數(shù)據(jù)引擎之中的。SQL語(yǔ)言曾經(jīng)并且現(xiàn)在仍然是強(qiáng)大的數(shù)據(jù)語(yǔ)言。
FoxPro 2.0還推出了某種所見(jiàn)即所得的開(kāi)發(fā)報(bào)表和屏幕的工具。

FoxPro 2.0確實(shí)具備了我們今天的Visual FoxPro擁有的一些出色的功能。GUI設(shè)計(jì)服務(wù)、SQL和極快的數(shù)據(jù)訪問(wèn),是它明顯的特征。

FoxPro 2.5有for DOS、for Windows版,不過(guò)那個(gè)Windows版只是具有看上去像“Windows”的DOS應(yīng)用程序的外觀。特別是那個(gè)DOS下的版本絕對(duì)是經(jīng)典之作,觀察身邊是不是還有很多這樣的系統(tǒng)在運(yùn)行著。當(dāng)時(shí)有人這樣評(píng)價(jià):這個(gè)軟件已經(jīng)無(wú)法再快了,除非硬件升級(jí)……

直到1995年春天Visual FoxPro推出時(shí),才出現(xiàn)了FoxPro的又一次重大改進(jìn)(這時(shí)Microsoft已經(jīng)收購(gòu)了Fox Software公司)。Visual FoxPro 3.0增加了一些人們企盼已久的特性,使PC數(shù)據(jù)庫(kù)開(kāi)發(fā)界大為震驚。我們可以看到:Visual FoxPro與FoxPro是由很大差別的,不要再把Visual FoxPro成為FoxPro了。

這些特性是:
數(shù)據(jù)庫(kù)容器(Database Container),也叫DBC,它增加了開(kāi)發(fā)人員多年盼望的對(duì)存儲(chǔ)過(guò)程的支持、與表格相關(guān)聯(lián)的數(shù)據(jù)規(guī)則和一系列的附加數(shù)據(jù)功能。

遠(yuǎn)程數(shù)據(jù)的無(wú)縫連接。談到連接遠(yuǎn)程數(shù)據(jù)的處理,大家往往會(huì)想到RDO、ADO、BDE等處理數(shù)據(jù)引擎,那么Visual FoxPro利用什么實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)的無(wú)縫連接?Visual FoxPro本身的數(shù)據(jù)處理引擎,這和其他任何開(kāi)發(fā)工具都是不同的!Visual FoxPro數(shù)據(jù)處理引擎通過(guò)ODBC驅(qū)動(dòng)程序與遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器“通話”,遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器的ODBC驅(qū)動(dòng)程序能將Visual FoxPro數(shù)據(jù)轉(zhuǎn)化成可由他們解釋的數(shù)據(jù);相反,Visual FoxPro的ODBC驅(qū)動(dòng)程序也能將遠(yuǎn)程數(shù)據(jù)轉(zhuǎn)化成可由Visual FoxPro數(shù)據(jù)引擎處理的數(shù)據(jù)??梢?jiàn),只要遠(yuǎn)程數(shù)據(jù)庫(kù)有ODBC驅(qū)動(dòng)程序,就可以用Visual FoxPro最為客戶端軟件。常見(jiàn)的SQL Server、Oracle、Access等數(shù)據(jù)庫(kù)都提供ODBC驅(qū)動(dòng)程序。

在Visual FoxPro中實(shí)際操作遠(yuǎn)程數(shù)據(jù)有兩種方法,遠(yuǎn)程視圖和SPT技術(shù)。視圖(View)是可更新的SQL光標(biāo),增加了一整套的數(shù)據(jù)訪問(wèn)方法,用于數(shù)據(jù)處理、GUI顯示和報(bào)表制作。它支持兩種類型的視圖,即本地視圖和遠(yuǎn)程視圖。本地視圖是基于Visual FoxPro表格的視圖,遠(yuǎn)程視圖是基于任何ODBC數(shù)據(jù)源的視圖。另外為了使Visual FoxPro成為完整的C/S開(kāi)發(fā)環(huán)境,除視圖之外Visual FoxPro還支持SPT(SQL Pass Through)技術(shù)來(lái)完成視圖無(wú)法完成的工作,比如數(shù)據(jù)庫(kù)服務(wù)器的用戶管理、存儲(chǔ)過(guò)程調(diào)用等。View與SPT技術(shù)的產(chǎn)生后,Visual FoxPro就成為訪問(wèn)遠(yuǎn)程數(shù)據(jù)的主要工具。從總體來(lái)看,創(chuàng)建整個(gè)企業(yè)范圍內(nèi)的應(yīng)用程序和使用存儲(chǔ)在遠(yuǎn)程數(shù)據(jù)源中的數(shù)據(jù),幾乎與使用Visual FoxPro表格本身一樣容易,處理在數(shù)據(jù)存取時(shí)增加了一些命令、函數(shù),數(shù)據(jù)處理與普通的Visual FoxPro編程沒(méi)有任何區(qū)別。再次指出:Remote View與SPT技術(shù)是由Visual FoxPro數(shù)據(jù)處理引擎直接支持的,這與在VB、VC++中的外部數(shù)據(jù)訪問(wèn)技術(shù)不同(他們使用組件,如:DAO、RDO、ADO……),所以用Visual FoxPro訪問(wèn)遠(yuǎn)程數(shù)據(jù)的效率很高,并能把遠(yuǎn)程數(shù)據(jù)與本地?cái)?shù)據(jù)完美的融合在一起,最大程度地提高開(kāi)發(fā)效率和程序運(yùn)行效率。

完全支持面向?qū)ο蠹夹g(shù)(OOP)。充分而健壯的實(shí)現(xiàn)了面向?qū)ο蟮奶幚矸绞酱蟠蟾纳屏塑浖_(kāi)發(fā)條件。健壯的對(duì)象模型和創(chuàng)建你自己的類及子類的所用的功能,形成了一種全新的軟件開(kāi)發(fā)手段。

Visual FoxPro 5.0是3.0的升級(jí)版本,它是一個(gè)32位的系統(tǒng)。具備了使用和創(chuàng)建COM服務(wù)器的功能,并開(kāi)始支持在Internet上發(fā)布Visual FoxPro。從這個(gè)版本開(kāi)始,Visual FoxPro進(jìn)入了Visual studio家族,并且Visual FoxPro將不再升級(jí)的謠言也是在這個(gè)時(shí)期出現(xiàn)。

在Visual FoxPro 6.0出現(xiàn)之前,微軟計(jì)劃推出DNA,演化到今天就是.NET,并承諾把Visual FoxPro發(fā)展成健壯的中間層工具,所以這以后Visual FoxPro的變化初級(jí)用戶就不太容易感覺(jué)了。

Visual FoxPro 6.0也沒(méi)有根本上的變化,不過(guò)有些變化還是相當(dāng)明顯的。Access和Assign這兩種方法在控制放入你的對(duì)象中的數(shù)據(jù)方面很有創(chuàng)意。運(yùn)用新的Component Gallery(組件庫(kù))和Foundation Classes(基礎(chǔ)類),你能很容易地轉(zhuǎn)向創(chuàng)建面向?qū)ο蟮膽?yīng)用程序的工作。對(duì)COM支持的更好,在Server Pack 3后我們可以用Visual FoxPro創(chuàng)建多線程的COM組件。

Visual FoxPro 7是Fox第一個(gè)可視化版本——Visual FoxPro 3以后的最具有革命意義的一次產(chǎn)品升級(jí)換代。關(guān)于它的特性,稍候本文會(huì)有專門(mén)段落講解。

Visual FoxPro的語(yǔ)言是由Xbase、SQL、OOP構(gòu)成的。我不知道這樣分解是否合理,我只是從FoxPro的發(fā)展歷史得出以上結(jié)論的。其實(shí)以上三者在Visual FoxPro完美的融合在一起了,已經(jīng)與Visual FoxPro血脈相連、不可分割,很多語(yǔ)句、函數(shù)很難區(qū)分它屬于哪個(gè)門(mén)類(也沒(méi)必要)。再者Xbase這一叫法也不十分妥當(dāng),這樣容易讓人誤會(huì),好像Visual FoxPro的語(yǔ)言是沒(méi)有發(fā)展的“死語(yǔ)言”、是十幾年前的“老古董”,其實(shí)在FoxPro每一次升級(jí)中(現(xiàn)在已是Visual FoxPro 7)都會(huì)對(duì)這部分語(yǔ)言進(jìn)行修訂、增補(bǔ)。我看還是這樣:Visual FoxPro語(yǔ)言就叫它:“Visual FoxPro語(yǔ)言”,它既不同于任何以往的Xbase(最多有歷史淵源),也不同于其它的編程語(yǔ)言。這就象Delphi那樣,是Object Pascal語(yǔ)言,不是以前的Pascal;VB就是VB,不是以前的 Basic。

從Fox進(jìn)入可視化的時(shí)代后,對(duì)COM技術(shù)的支持一直是Visual FoxPro在過(guò)去、現(xiàn)在、將來(lái)不斷改進(jìn)的地方。面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)的最大的好處就在于代碼的重復(fù)使用。然而,OOP只是一種解決代碼重復(fù)使用的一種優(yōu)秀的方案(solution)。單純利用OOP技術(shù)不僅要求所有對(duì)象都必須用一種語(yǔ)言完成,并且你還需要得到原程序代碼嵌入應(yīng)用程序(就像我們?cè)赩isual FoxPro開(kāi)發(fā)使用Class那樣)。如果對(duì)象是有你或你的公司完成的這些可能不是什么問(wèn)題,但如果對(duì)象是由其他人或其他公司寫(xiě)的這就是問(wèn)題了……再者為了節(jié)省資源我們常希望把一對(duì)象放在遠(yuǎn)程的計(jì)算機(jī)上供許多應(yīng)用程序使用,怎樣簡(jiǎn)單、安全完成這個(gè)任務(wù)呢?看來(lái),單有OOP是不行的!于是微軟提出了Component Object Model(COM)技術(shù),有了它我們就不需要把對(duì)象源程序嵌入我們的應(yīng)用程序中,就可以使用其他語(yǔ)言開(kāi)發(fā)的對(duì)象,就可以分布的使用對(duì)象了。

COM技術(shù)提供四種不同的特性,Visual FoxPro支持所有的COM 特性。

ActiveX documents 允許用戶在一個(gè)應(yīng)用程序中編輯另一個(gè)應(yīng)用程序的document。我們把Word文檔嵌入或鏈接到Visual FoxPro中,就可以不離開(kāi)Visual FoxPro編輯Word文檔了。

ActiveX controls 為開(kāi)發(fā)人員提供了增加的系統(tǒng)功能的方法,典型的應(yīng)用就是各類ActiveX控件的使用來(lái)加強(qiáng)用戶界面。這里要說(shuō)明的是Visual FoxPro不支持(7.0也不支持)“集裝箱式的”ActiveX 控件,比如Cool bar控件。
Automation 允許用戶在一個(gè)應(yīng)用程序中操縱另外一個(gè)應(yīng)用程序或組件,典型的應(yīng)用就是Visual FoxPro 與Office 的OLE-Automation應(yīng)用(與Word、Excel無(wú)縫連接)。

Remote Automation 或者稱 Distributed COM (DCOM)與Automation技術(shù)差不多,只是它支持組件的分布,這就是微軟的分布式應(yīng)用戰(zhàn)略。

Visual FoxPro 不支持Active controls(ActiveX)的開(kāi)發(fā),但支持server components的開(kāi)發(fā),也就是在Automation、Remote Automation中使用的組件都可以用Visual FoxPro來(lái)開(kāi)發(fā)。Visual FoxPro的這種能力是從5.0開(kāi)始具有的,到了6.0的SP 3已經(jīng)可以開(kāi)發(fā)出多線程的組件了,這些在上文已經(jīng)有過(guò)論述。以后的 Visual FoxPro 版本一定會(huì)對(duì)Automation,特別是Remote Automation有更好的支持,無(wú)論是開(kāi)發(fā)server components,還是由Visual FoxPro充當(dāng)客戶程序。

綜上所述,Visual FoxPro是創(chuàng)建關(guān)鍵任務(wù)的、企業(yè)范圍的、面向?qū)ο蟮膯螌哟?、雙層次、多層次應(yīng)用程序的重要開(kāi)發(fā)工具,這些應(yīng)用程序可以在本地或全球范圍內(nèi)進(jìn)行配置。

Visual FoxPro已經(jīng)過(guò)時(shí)了嗎

恕我直言,這樣的問(wèn)題我真的聽(tīng)膩了。這個(gè)問(wèn)題我聽(tīng)了好幾年了。從謠言出現(xiàn)到今天Visual FoxPro的版本已經(jīng)生了兩次變化,就是Visual FoxPro 6.0 與2001年春天推出的Visual FoxPro 7.0。根據(jù)微軟的官方消息,Visual FoxPro 8(可能是這個(gè)名稱吧)已經(jīng)在研發(fā)之中了。我不敢保證是否會(huì)有Visual FoxPro 9.0(這就像我不敢保證微軟是否在那時(shí)還存在一樣)(注:實(shí)際上2004年的9.0以及2005年9.0SP1已經(jīng)發(fā)布)??梢赃@樣認(rèn)為,只要不出意外情況(比如微軟倒閉、業(yè)界發(fā)生了重大的變革等),F(xiàn)ox就會(huì)平穩(wěn)地發(fā)展!

在國(guó)外,一個(gè)程序員、一家公司把他們使用的開(kāi)發(fā)工具視作一項(xiàng)投資,作為Visual FoxPro的開(kāi)發(fā)廠商微軟公司就必須保護(hù)客戶的投資權(quán)益,這是很基本的商業(yè)原則,微軟絕對(duì)不敢隨意淘汰有著50萬(wàn)用戶的Fox,除非永遠(yuǎn)不想賺這50萬(wàn)用戶的錢(qián)了。

為什么會(huì)有Visual FoxPro 要淘汰的傳聞呢,我不是很清楚。但這兩年微軟對(duì)Visual FoxPro的不宣傳態(tài)度卻是為這股謠言起到了推波助瀾的作用。另外Visual FoxPro 確實(shí)是一個(gè)容易引起誤會(huì)的產(chǎn)品,初級(jí)用戶很容易對(duì)它產(chǎn)生“不怎么樣的”評(píng)判,于是加上那謠言就產(chǎn)生了“Visual FoxPro 就真的要淘汰了”的幻覺(jué)了。

為什么說(shuō)Visual FoxPro是容易引起誤會(huì)的產(chǎn)品呢?我總結(jié)以下幾點(diǎn)原因:

面向?qū)ο笈c面向過(guò)程之爭(zhēng)

我們說(shuō)Visual FoxPro是面向?qū)ο蠡恼Z(yǔ)言,是有根據(jù)的。面向?qū)ο蠡恼Z(yǔ)言必須具備四個(gè)特性:抽象(Abstraction)、封裝(Encapsulation)、繼承(Inheritance)、多態(tài)(Polymorphism)。對(duì)照一下Visual FoxPro,是不是支持這四大特性!

當(dāng)然,Visual FoxPro 與C++和Object Pascal 一樣都是歷史悠久的語(yǔ)言,所以語(yǔ)言中有很多面向過(guò)程的語(yǔ)素。我知道很多學(xué)校在教學(xué)中,只是教導(dǎo)學(xué)生們使用Visual FoxPro的面向過(guò)程的語(yǔ)言特色,而忽視了面向?qū)ο蟮慕虒W(xué),同樣的問(wèn)題也存在于廣大的 Visual FoxPro 程序員中。我們必須明白:不能因?yàn)槲覀儧](méi)有使用Visual FoxPro面向?qū)ο蟮膹?qiáng)大功能,而說(shuō)Visual FoxPro不是面向?qū)ο蟮恼Z(yǔ)言,這就像不能因?yàn)樘煜掠?、沒(méi)有出太陽(yáng),而說(shuō)太陽(yáng)被天狗吃掉了——多么的幼稚可笑!

我們知道Visual FoxPro對(duì)數(shù)據(jù)的操作沿用了多年來(lái)的面向過(guò)程的做法,這與現(xiàn)在流行的開(kāi)發(fā)工具有很大的不同。我覺(jué)得,微軟這樣做是有它的道理的:

第一、面向過(guò)程的數(shù)據(jù)處理,更能發(fā)揮XBase語(yǔ)言體系的靈活與隨意的特色。這一點(diǎn),你用過(guò)其他的數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,然后再用用Visual FoxPro就明白了。

第二、不直接提供面向?qū)ο蟮臄?shù)據(jù)處理組件,不代表不允許用戶封裝自己的數(shù)據(jù)處理組件。很多優(yōu)秀的 Fox程序員,都會(huì)自己封裝專門(mén)數(shù)據(jù)處理組件,這才是Visual FoxPro編程的高尚境界!

面向記錄與面向集合之爭(zhēng)

根據(jù)筆者的淺薄認(rèn)知,關(guān)系型數(shù)據(jù)庫(kù)處理可以分為面向記錄操作和面向集合操作。

各種開(kāi)發(fā)工具支持的客戶端光標(biāo)體系就是面向記錄操作的,它們支持記錄之間的絕對(duì)定位,更明白地說(shuō)就是可以在記錄之間導(dǎo)航,諸如:SKIP、GO TOP之類的語(yǔ)句。Visual FoxPro 無(wú)疑是此道的絕對(duì)高手,20年的語(yǔ)言發(fā)展,聚集了大量面向記錄的語(yǔ)言要素。這是因?yàn)檫@樣,我們才會(huì)反復(fù)強(qiáng)調(diào):Visual FoxPro的Cursor 體系靈活、強(qiáng)大!

各類大型數(shù)據(jù)庫(kù),如Oracle、SQL Server 是面向集合處理的代表,看看正統(tǒng)的SQL 語(yǔ)言,絕對(duì)沒(méi)有數(shù)據(jù)導(dǎo)航之說(shuō),數(shù)據(jù)記錄之間是平等的,一切都要講關(guān)系、擺條件!

隨著技術(shù)的發(fā)展,人們開(kāi)始注意到,不能分割這兩種對(duì)數(shù)據(jù)的操作方式,于是大型數(shù)據(jù)庫(kù)支持了游標(biāo)語(yǔ)素,F(xiàn)ox也支持符合規(guī)范的SQL 語(yǔ)言。

產(chǎn)品定位導(dǎo)致Visual FoxPro變化不易為人們感覺(jué)。微軟要把Visual FoxPro作為三層構(gòu)架(或是多層構(gòu)架)的中間層開(kāi)發(fā)工具。

什么是三層構(gòu)架呢?第一層是用戶界面:它包含了用戶界面,讓使用者輸入,輸出,查詢等工作;第三層是資料層:它就是用來(lái)放資料的地方,一般是指后端數(shù)據(jù)庫(kù),主要有包括 Oracle、SQL Server等,它主要是提供一個(gè)很大的地方,來(lái)有規(guī)則的存放數(shù)據(jù);第二層是商務(wù)邏輯層(中間層):有人要說(shuō)了:存取資料,直接從第一層跳到第二層可不可以?當(dāng)然可以,沒(méi)有人規(guī)定不能走捷徑,而且從數(shù)據(jù)庫(kù)直接抓資料,既快又好,那為什么搞出個(gè)第二層呢?

商務(wù)規(guī)則是經(jīng)常變化的,比如上班從8 點(diǎn)改為10 點(diǎn),那電腦怎么知道老板因?yàn)椴痪皻馍僮尨蠹疑隙€(gè)小時(shí)班呢?它一定無(wú)法知道,你必須告訴它,這時(shí)問(wèn)題就來(lái)了,如果你有很多部電腦,例如:100 臺(tái),你就得一部部換新程序。如果這是一個(gè)掛在Internet上的網(wǎng)絡(luò)程序,難道總讓用戶download新程序不成?

更重要的是,在大量客戶存在的環(huán)境里,傳統(tǒng)的兩層構(gòu)架根本沒(méi)有能力承擔(dān)巨大的工作壓力,必須通過(guò)某種中間系統(tǒng)實(shí)現(xiàn)壓力平衡,這就是中間層的另一妙用!

中間層是沒(méi)有圖形界面設(shè)計(jì)的代碼編寫(xiě),并且是OOP方式的代碼編寫(xiě),不僅要熟悉后臺(tái)數(shù)據(jù)庫(kù)的特性,還要考慮前臺(tái)界面工具的特性,最重要的是商務(wù)邏輯的構(gòu)架,同時(shí)還要求懂得IIS、MTS(COM+)、NT的安全設(shè)置等復(fù)雜枯燥的東西。有趣的是,近年來(lái) Visual FoxPro 的各種改進(jìn),更多的是在這些方面下功夫,到了最新版本的Visual FoxPro 7 更是在此方面增加了若干特性,下面就讓我用四個(gè)問(wèn)題來(lái)說(shuō)明Visual FoxPro 在開(kāi)發(fā)中間層方面的貢獻(xiàn):

問(wèn)題一:Visual FoxPro能開(kāi)發(fā)出穩(wěn)定、有效率的Server程序嗎?能,在1999年發(fā)布的Visual FoxPro SP 3中微軟賦予了Visual FoxPro開(kāi)發(fā)多線程進(jìn)程的內(nèi)組件的能力,并增加了新的運(yùn)行時(shí)刻庫(kù)VFPnT.DLL(n代表版本號(hào)),支持其運(yùn)行,在這個(gè)運(yùn)行庫(kù)中,刪除了大量老式的和界面控制元素,使得它更小巧。但是由于Visual FoxPro6本身不是很穩(wěn)定(加打SP4或SP5才有所改善),所以這個(gè)很棒的功能在Visual FoxPro 6下并不能充分發(fā)揮,直到Visual FoxPro 7出現(xiàn)才使它的顯示出英雄本色!

問(wèn)題二:分布式的事務(wù)、動(dòng)態(tài)負(fù)載平衡怎么實(shí)現(xiàn)?Visual FoxPro 7對(duì)COM+有很好的支持,借由COM+就可以解決這兩個(gè)問(wèn)題了!

問(wèn)題三:作為Server程序,客戶程序怎樣與Server交換數(shù)據(jù)集合?這是Visual FoxPro 6開(kāi)發(fā)的Server程序的致命弱點(diǎn),我們知道Visual FoxPro是用來(lái)處理數(shù)據(jù)的,但不能與外界自由交換數(shù)據(jù)集合會(huì)大大降低開(kāi)發(fā)、使用以及程序運(yùn)行效率!在Visual FoxPro 7里我們XML就可以快速、輕易的傳遞大型數(shù)據(jù)集合,真正做到數(shù)據(jù)集的來(lái)去自由。現(xiàn)在回想Visual FoxPro 6中我們用的那種“循環(huán)+屬性”的做法,真有天上與人間的感受!

問(wèn)題四:能不能讓Visual FoxPro開(kāi)發(fā)的Server任由客戶使用,叫干什么就干什么?可以的,在Visual FoxPro 7里提供了一個(gè)全新的函數(shù):ExecScript()。有了它,就可以一次執(zhí)行多條客戶端送來(lái)的符合Visual FoxPro規(guī)范的語(yǔ)句:你可以定義變量、做查詢、更新數(shù)據(jù)、修改表結(jié)構(gòu)……

微軟確實(shí)實(shí)踐著讓Visual FoxPro在中間層運(yùn)行的承諾。但遺憾的是:由于國(guó)內(nèi)用戶的水平、國(guó)內(nèi)軟件應(yīng)用的領(lǐng)域,對(duì)大多數(shù)Fox Fans 無(wú)法感受Visual FoxPro日新月異的變化——對(duì)他們來(lái)說(shuō),Visual FoxPro確實(shí)“沒(méi)有改變”!

Visual FoxPro只能局限于桌面應(yīng)用程序的開(kāi)發(fā)嗎?

技術(shù)在進(jìn)步,軟件技術(shù)的應(yīng)用不斷在拓寬,Internet 已經(jīng)是眾多開(kāi)發(fā)工具競(jìng)相支持的應(yīng)用領(lǐng)域。Visual FoxPro 從版本 5 開(kāi)始不斷擴(kuò)充對(duì)Internet的支持,到最新的Visual FoxPro 7 更是增加了對(duì)Web Service的支持。我們可以把Visual FoxPro 對(duì)Internet的支持分為三大部分:

第一,簡(jiǎn)單的HTML的轉(zhuǎn)換。Visual FoxPro 自帶的“Web 發(fā)布”就是這類型的工具,利用HTML和DHTML的模版,支持Visual FoxPro數(shù)據(jù)的Web化,這是一種全靜態(tài)的 Web 支持。

第二,適合于企業(yè)內(nèi)部使用的 Active Document 技術(shù)。是不是希望快速、簡(jiǎn)單的把Visual FoxPro應(yīng)用程序轉(zhuǎn)變?yōu)閃eb 應(yīng)用程序,這個(gè)Active Document 技術(shù)就是最佳的選擇。它支持 App 程序運(yùn)行在IE中,它的缺點(diǎn)是:在客戶端必須安裝Visual FoxPro的運(yùn)行庫(kù)、客戶端與數(shù)據(jù)庫(kù)間依然是緊密的有狀態(tài)的關(guān)系,屬于F/S構(gòu)架——只是界面能夠運(yùn)行在IE之中了。它的開(kāi)發(fā)快速以及它依然基于傳統(tǒng)構(gòu)架,決定了這個(gè)技術(shù)只能運(yùn)行在企業(yè)內(nèi)部,一般不能在廣域網(wǎng)絡(luò)中發(fā)布。

這技術(shù)是Visual FoxPro 6提出的,當(dāng)時(shí)在 Tool 菜單里還有一個(gè)專門(mén)的菜單項(xiàng)。到了而今的Visual FoxPro 7,這個(gè)菜單項(xiàng)已經(jīng)取消了,但并不是說(shuō)Visual FoxPro 7 不支持Active Document,只是這種并不出色的技術(shù)沒(méi)有必要再放在醒目的位置了。

第三,基于COM 的 Web 應(yīng)用。

Visual FoxPro 真正能被用于Web 開(kāi)發(fā),就是通過(guò) COM 支持的。

這里您要有個(gè)認(rèn)識(shí),作為數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,Visual FoxPro 不是FronPage這樣的用于開(kāi)發(fā)Web 界面的工具(也許未來(lái)的 Visual FoxPro 會(huì)支持 Web 界面的開(kāi)發(fā))。Visual FoxPro 完全是作為 Server 運(yùn)行在網(wǎng)站的后臺(tái),為各種應(yīng)用提供服務(wù)。使用 Visual FoxPro 編寫(xiě)的 COM 組件能夠被IIS支持,壓在后臺(tái)進(jìn)行各種運(yùn)作——這就是真正意義上的Visual FoxPro 的Web應(yīng)用,也是典型的多層構(gòu)架的中間層!

這個(gè)階段,Visual FoxPro 對(duì) Web的支持有可以劃分為三個(gè)層次:

FoxISAPI。
這是最先登場(chǎng)的技術(shù),當(dāng)年 ASP 技術(shù)還沒(méi)有出現(xiàn)的時(shí)候,我們?cè)?IIS 里就可以通過(guò) ISAPI 技術(shù)實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)。

Web Server
ASP 技術(shù)出現(xiàn)了,我們知道 ASP 技術(shù)的一大特色就是支持服務(wù)器端的組件的應(yīng)用。用 Visual FoxPro 的編寫(xiě)的 COM 組件就能運(yùn)行在 IIS 里,供 ASP 調(diào)用。

Web Service
這是 Visual FoxPro 7 的新特性,也是當(dāng)前最熱門(mén)的技術(shù)。它與Web Service的最大不同就是:Web Server 組件只能通過(guò) ASP 程序調(diào)用,而Web Service可以供任何系統(tǒng)在全球范圍調(diào)用,無(wú)論客戶端的硬件平臺(tái)、軟件平臺(tái),只要它支持SOAP、支持XML就可以了。
更夸張一點(diǎn)說(shuō):只要能上網(wǎng),就可以享用 Web Service 提供的服務(wù)!

有人也許會(huì)問(wèn):我可以用VB、VC++建立對(duì)象組件時(shí),為何我要用Visual FoxPro 來(lái)建立相同的組件? 微軟對(duì)這一問(wèn)題有專門(mén)的評(píng)論,大意為:快、重復(fù)使用性、跨語(yǔ)言重復(fù)使用性?!翱臁笔侵赣肰isual FoxPro開(kāi)發(fā)的組件擷取、處理資料都極為迅速,并且Visual FoxPro能夠非常迅速的建立字符串。到底有多快,我想數(shù)據(jù)處理、存取的速度大家平時(shí)都領(lǐng)教過(guò)了,字符串生成速度我這里有個(gè)數(shù)據(jù)不妨一看,這是臺(tái)灣的一位高手做的試驗(yàn)——將1M的數(shù)據(jù)寫(xiě)入文本中,結(jié)果VC++ 6.0程序用了3.5秒、VB 6.0程序用了11秒、Java 1.1.5用了24秒、Visual FoxPro 6.0用了7秒;“重復(fù)使用性”是指Visual FoxPro具備OOP的功能;“跨語(yǔ)言重復(fù)使用性”是指Visual FoxPro編寫(xiě)的對(duì)象編譯以后成為COM、COM+對(duì)象組件,這樣就可以在其他語(yǔ)言中使用它了。

不要以為Visual FoxPro是“低端產(chǎn)品",無(wú)論從數(shù)據(jù)庫(kù)(DBF Base)品質(zhì)還是開(kāi)發(fā)環(huán)境評(píng)價(jià)Visual FoxPro,它都是一個(gè)“高端工具”。

許多人認(rèn)為Visual FoxPro只能用來(lái)開(kāi)發(fā)單用戶系統(tǒng)或是文件服務(wù)器構(gòu)架的小型網(wǎng)絡(luò)系統(tǒng)——這是謬誤——這種無(wú)知的言論在許多講C/S、三層構(gòu)架的書(shū)中都有(特別是一些VB、PB、Delphi的數(shù)據(jù)庫(kù)編程書(shū))。我可以很負(fù)責(zé)任的告訴大家完全可以用Visual FoxPro開(kāi)發(fā)C/S結(jié)構(gòu)的系統(tǒng)。這里說(shuō)的C/S構(gòu)架絕對(duì)是正宗的,不是用什么F/S構(gòu)架在糊弄大家。在C/S構(gòu)架中我們常常選擇Visual FoxPro作為客戶端開(kāi)發(fā)工具,以O(shè)racle、SQL Server等網(wǎng)絡(luò)數(shù)據(jù)庫(kù)壓在后臺(tái),使用Visual FoxPro內(nèi)置的Remote View和SPT技術(shù),這樣就可以完美地解決問(wèn)題。這里不能詳細(xì)展開(kāi),只特別介紹Visual FoxPro的本地引擎在開(kāi)發(fā)中的作用。Visual FoxPro的本地引擎特別強(qiáng)大(上文我們說(shuō)過(guò)處理百萬(wàn)條記錄不費(fèi)吹灰之力),我們?cè)谠O(shè)計(jì)系統(tǒng)時(shí)可以十分簡(jiǎn)單的將遠(yuǎn)程數(shù)據(jù)與本地?cái)?shù)據(jù)結(jié)合,很簡(jiǎn)單、很有效地控制網(wǎng)絡(luò)數(shù)據(jù)流量、提高系統(tǒng)工作效率(我看過(guò)不少VB、Delphi、PB的書(shū),他們很少在怎樣控制網(wǎng)絡(luò)數(shù)據(jù)流量、提高系統(tǒng)工作效率論述,不知是不屑一顧,還是其他什么原因)。

我認(rèn)為Visual FoxPro的本地引擎在C/S構(gòu)架下起碼有三項(xiàng)偉大的用途。其一:非經(jīng)常變動(dòng)數(shù)據(jù)的本地存儲(chǔ)。我國(guó)的郵政編碼與地區(qū)的關(guān)系是相對(duì)穩(wěn)定的數(shù)據(jù),而且數(shù)據(jù)量也不是太小,我想總有上千個(gè)記錄(我沒(méi)仔細(xì)考察過(guò)具體情況),我們把這些信息存儲(chǔ)在客戶端的計(jì)算機(jī)中,就可以在使用郵政編碼及其相關(guān)信息時(shí)從本地得到數(shù)據(jù),這樣能使高系統(tǒng)效率同時(shí)節(jié)省網(wǎng)絡(luò)資源(這是C/S開(kāi)發(fā)的重要原則),只在郵政編碼發(fā)生變化時(shí)在服務(wù)器上統(tǒng)一更新,下載更新客戶機(jī)上的數(shù)據(jù)。如果用別的軟件實(shí)現(xiàn)同樣的功能,絕對(duì)比Visual FoxPro麻煩而且效果絕對(duì)不及Visual FoxPro,這因?yàn)閂isual FoxPro的數(shù)據(jù)引擎直接支持遠(yuǎn)程數(shù)據(jù)讀取,能很好的融合本地?cái)?shù)據(jù)與遠(yuǎn)程數(shù)據(jù);其二:離線數(shù)據(jù)包。單位里總有人出差,在千萬(wàn)里路之外能不能拿著筆記本為客戶發(fā)訂單、與客戶簽合同,就像在自己的辦公室一樣?當(dāng)他回到公司時(shí)只要把筆記本連到服務(wù)器中,發(fā)送更新就行了。Visual FoxPro的離線視圖是經(jīng)濟(jì)且高效安全的方案(當(dāng)然您可以使用遠(yuǎn)程撥入或建一個(gè)Web網(wǎng)站,這些Visual FoxPro可能干)。其實(shí)離線數(shù)據(jù)包還有一個(gè)重要的功能:當(dāng)下載的數(shù)據(jù)是大量的(除非萬(wàn)不得已請(qǐng)不要這樣設(shè)計(jì)系統(tǒng)),這種情況下使用離線視圖可以數(shù)據(jù)集自動(dòng)轉(zhuǎn)化為物理表,充分利用Visual FoxPro的高速與靈活,完成后連線更新后端數(shù)據(jù)源——一切都很簡(jiǎn)單。我認(rèn)為:離線視圖絕對(duì)是Visual FoxPro在C/S系統(tǒng)中的一個(gè)賣點(diǎn),雖然ADO也支持類似的東西,但肯定不及Visual FoxPro有效率;其三:數(shù)據(jù)驅(qū)動(dòng)。您是否知道,Visual FoxPro中絕大多數(shù)文件格式實(shí)際上都是DBF文件,如DBC、SCX、FRX等,他們都可以由Visual FoxPro的本地引擎驅(qū)動(dòng)完成復(fù)雜的任務(wù)。在設(shè)計(jì)C/S結(jié)構(gòu)時(shí)如果要存儲(chǔ)用戶設(shè)置、自定義文件格式,用Visual FoxPro的本地引擎幫忙絕對(duì)比其他軟件簡(jiǎn)單,因?yàn)槟阌玫氖菗Q湯不換藥的方法,但它簡(jiǎn)單、有效率。

Visual FoxPro 開(kāi)發(fā)C/S系統(tǒng)時(shí),最與眾不同的特色就是對(duì)遠(yuǎn)程數(shù)據(jù)的操控是通過(guò)本地?cái)?shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)的,Remote View、Connection都作為本地?cái)?shù)據(jù)庫(kù)的對(duì)象被管理起來(lái),完美的銜接本地?cái)?shù)據(jù)與遠(yuǎn)程數(shù)據(jù)。這種在客戶端建立遠(yuǎn)程數(shù)據(jù)邏輯的做法,與最新的ADO.NET有相似之處!

在三層構(gòu)架中,Visual FoxPro可以充當(dāng)任意一層的任務(wù),但本人以為大中型系統(tǒng)的數(shù)據(jù)庫(kù)部分應(yīng)以網(wǎng)絡(luò)數(shù)據(jù)庫(kù)為主??蛻舳私缑嬗肰isual FoxPro也是可以的,但一般限于企業(yè)內(nèi)部,在Internet上我們通常使用IE作為客戶界面。在三層構(gòu)架中Visual FoxPro最勝任中間層的開(kāi)發(fā),它簡(jiǎn)單(開(kāi)發(fā)難度與普通的Visual FoxPro項(xiàng)目相差不大)、快速的字符串生成、支持COM技術(shù)、它支持(MTS)COM+技術(shù)、它支持XML(Visual FoxPro 7.0提供3個(gè)與XML有關(guān)的函數(shù))、它具有強(qiáng)大本地?cái)?shù)據(jù)引擎、靈活的數(shù)據(jù)處理方式、它支持多線程的服務(wù)組件的開(kāi)發(fā)。

可能有人要問(wèn):用ASP+腳本語(yǔ)言一樣可以開(kāi)發(fā)Web系統(tǒng),何必加個(gè)中間層。的確,目前在市面上與多討論Web的書(shū)都直接使用腳本語(yǔ)言來(lái)開(kāi)發(fā)整個(gè)系統(tǒng),這是十分不正確的做法,甚至有寫(xiě)書(shū)還說(shuō)硬件越來(lái)越快,因此使用腳本語(yǔ)言來(lái)開(kāi)發(fā)整個(gè)系統(tǒng)并沒(méi)有什么關(guān)系。會(huì)說(shuō)出這樣話的作者通常都是沒(méi)有實(shí)際開(kāi)發(fā)Web應(yīng)用經(jīng)驗(yàn)的人。腳本語(yǔ)言,如VBScript是一種解釋性語(yǔ)言,運(yùn)行效率很低,他們只合適作為膠水程序。開(kāi)發(fā)Web系統(tǒng)正統(tǒng)的做法是:把應(yīng)用邏輯編寫(xiě)成COM、DCOM對(duì)象,然后用少量的腳本語(yǔ)言來(lái)驅(qū)動(dòng)/使用這些對(duì)象。這樣系統(tǒng)開(kāi)發(fā)時(shí)工作量會(huì)大一些,但它符合開(kāi)發(fā)任何數(shù)據(jù)庫(kù)應(yīng)用程序的最基本的原則:分離應(yīng)用邏輯與用戶界面。這樣系統(tǒng)就會(huì)變的容易維護(hù)了——你可以經(jīng)常變換那些膠水程序來(lái)改變Web頁(yè)面,應(yīng)用邏輯變換時(shí)你又可以改變某一個(gè)邏輯對(duì)象,而不用為雜亂且關(guān)系復(fù)雜的代碼發(fā)愁。再者,由于Visual FoxPro是高效、靈活的數(shù)據(jù)處理語(yǔ)言,任何商業(yè)邏輯都可以用它來(lái)代碼化,并且您可以獲得幾十倍甚至上百倍于ASP+腳本語(yǔ)言的運(yùn)行效率,以及更為強(qiáng)健的執(zhí)行效果。

Visual FoxPro的語(yǔ)言看上去蠻難的。

人們?cè)谫潛P(yáng) Visual FoxPro 始終是褒揚(yáng)他的易學(xué)易用,我不同意這種觀點(diǎn)(我不知道他們站在什么立場(chǎng)上說(shuō)話)。我看問(wèn)題的角度是“成為一名還過(guò)得去的 Visual FoxPro 程序員”,我的結(jié)論是Visual FoxPro 作為一個(gè)開(kāi)發(fā)工具并不是好學(xué)的。這不是說(shuō)Visual FoxPro的語(yǔ)法、概念像C那么繁復(fù),而是指:即使是簡(jiǎn)單的應(yīng)用,也要掌握很多Visual FoxPro的概念、語(yǔ)法、函數(shù),可能還要較深入了解OOP——往往讓人摸不到深淺。比如,拿數(shù)據(jù)庫(kù)系統(tǒng)最重要的功能——查詢來(lái)講,Visual FoxPro就“花樣繁多”。我曾統(tǒng)計(jì)過(guò),不算“List、Browse"等交互式命令,Visual FoxPro起碼支持4條命令(Find,Seek,Locate,Select-SQL)、3個(gè)函數(shù)(Lookup(),Seek(),Indexseek()),(當(dāng)然其中有的已經(jīng)淘汰)這些命令的關(guān)鍵字、函數(shù)的參數(shù)眾多,有的要求索引, 有的可以用索引但要求優(yōu)化索引……而這在VB、Delphi中絕對(duì)就只是兩三個(gè)方法的事情。從上面的例子中如果您只看到了Visual FoxPro的繁雜,那么您就完全錯(cuò)了:在VB、Delphi實(shí)現(xiàn)查詢功能的原理與Visual FoxPro應(yīng)是一樣的,但他們封裝了許多環(huán)節(jié),而Visual FoxPro就把許多東西更低階(當(dāng)然不如VC++那么低層次,但是已經(jīng)比使用對(duì)象的語(yǔ)言難多了)的展示給我們,所以Visual FoxPro的開(kāi)發(fā)者往往比使用其他的開(kāi)發(fā)工具開(kāi)發(fā)者更會(huì)思考、更懂得的數(shù)據(jù)庫(kù)開(kāi)發(fā)的真諦,因?yàn)楣ぞ弑破人麄兂@個(gè)方向努力……

用Visual FoxPro有助于提高程序員對(duì)數(shù)據(jù)庫(kù)概念的理解。許多在Visual FoxPro程序員中不是問(wèn)題的問(wèn)題往往成為那些使用對(duì)象處理數(shù)據(jù)的程序員的噩夢(mèng)。比如在Visual FoxPro中數(shù)據(jù)緩沖、事務(wù)處理都是重要的概念(事實(shí)上要干活就必須了解這些東西),在其他開(kāi)發(fā)環(huán)境中一味強(qiáng)調(diào)方便快速往往忽視程序員的基本概念培養(yǎng),編出的東西要么效率不高、要么老出問(wèn)題。讀書(shū)人都懂得:基本概念、基本理論是命根子,這就是Visual FoxPro帶給我們的好處。

有趣的是Visual FoxPro繁、難也就到這個(gè)程度了 ,他的學(xué)習(xí)難度曲線是所有語(yǔ)言中最平穩(wěn)的——不像在有些語(yǔ)言中,基礎(chǔ)開(kāi)發(fā)十分容易,一旦深入?yún)s難度很高。在Visual FoxPro中初級(jí)應(yīng)用、中級(jí)應(yīng)用、高級(jí)應(yīng)用的難度差異很小——就是那些似曾相識(shí)的語(yǔ)句、易于理解的函數(shù)。Visual FoxPro的這種高級(jí)應(yīng)用不太難,初級(jí)應(yīng)用不十分容易的特性,對(duì)初入門(mén)者來(lái)講是無(wú)法體會(huì)其中的妙處的,這就造成了Visual FoxPro的不太友好形象;

同時(shí),Visual FoxPro的難度卻帶來(lái)了很多的好處(前文我已談了很多),Visual FoxPro比其他語(yǔ)言在數(shù)據(jù)處理上更快速、更靈活,數(shù)據(jù)處理方式更多、更完備。設(shè)想一下用Visual FoxPro開(kāi)發(fā)數(shù)據(jù)對(duì)象時(shí),我們可以使用豐富多彩的語(yǔ)句、函數(shù),實(shí)現(xiàn)十分復(fù)雜、變化多端的功能,用其他語(yǔ)言開(kāi)發(fā)數(shù)據(jù)對(duì)象,它們的功能只能是建立在已有的數(shù)據(jù)對(duì)象的功能之上(這叫繼承),變化就少了,功能就弱了,如果要實(shí)現(xiàn)Visual FoxPro的Xbase+SQL 那樣靈活、強(qiáng)大的功能恐怕要使用底層的API了——這太可怕了!

OOP不僅是指“面向?qū)ο蟆钡拈_(kāi)發(fā)環(huán)境,更是一種開(kāi)發(fā)思想、開(kāi)發(fā)技術(shù),Visual FoxPro在后者上做得更好。

我們講過(guò)Visual FoxPro完全支持OOP的開(kāi)發(fā),但有趣的是在數(shù)據(jù)處理方面,微軟實(shí)際上沒(méi)有提供什么現(xiàn)成的對(duì)象(FFC是Visual FoxPro 6.0才有的,且封裝性、適應(yīng)性都不盡如人意),這一點(diǎn)我不知是Visual FoxPro的福氣還是禍害。說(shuō)“福氣”這將逼迫程序員掌握這門(mén)并不太簡(jiǎn)單的技術(shù)(可能用“思想方法”更恰當(dāng)),而不是簡(jiǎn)單地使用對(duì)象。OOP對(duì)于中間層的開(kāi)發(fā)來(lái)講是很重要的,因?yàn)镃OM組件必須是建立在OOP思想上的,要開(kāi)發(fā)這種組件就必須掌握OOP技術(shù);講“禍害”這使Visual FoxPro變得不易于學(xué)習(xí)和使用了(就我個(gè)人而言,真正體會(huì)到“用Visual FoxPro應(yīng)會(huì)編制數(shù)據(jù)處理對(duì)象”這一問(wèn)題也是在使用了Visual FoxPro好長(zhǎng)時(shí)間之后的事情了)。事實(shí)上現(xiàn)在很多誹謗攻擊Visual FoxPro的人都沒(méi)有深刻的認(rèn)識(shí)這一問(wèn)題——他們只感到Visual FoxPro用起來(lái)不及Delphi、PB、VB容易,但他們從不想該怎樣開(kāi)發(fā)數(shù)據(jù)處理對(duì)象,到編寫(xiě)COM組件時(shí)就要他們的命了。那些“精英們”大多不懂OOP,他們只懂“點(diǎn)”操作符號(hào)——仿佛對(duì)象的使用就是OOP,他們有什么資格來(lái)批評(píng)我們呢?

Visual FoxPro的界面能力真的很差嗎?

我認(rèn)為作為數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)工具微軟為我們提供的那些內(nèi)置控件加上十幾個(gè)附送的ActiveX控件已經(jīng)夠用了。

我們討論Visual FoxPro控件應(yīng)從兩方面入手,第一就是界面美觀問(wèn)題,再就是數(shù)據(jù)處理、分析是否方便。很多人很在意的前一個(gè)問(wèn)題,我倒是不以為然——控件不多特別是美化界面的控件不多并不代表Visual FoxPro就開(kāi)發(fā)不出賞心悅目的軟件,我的感受是軟件界面的專業(yè)化程度、高級(jí)別的審美、整體的效果要比個(gè)別的界面特效重要千萬(wàn)倍,實(shí)際效果可要好上千萬(wàn)倍??纯磭?guó)外用Visual FoxPro編制的程序您就會(huì)明白這個(gè)道理了;我對(duì)Visual FoxPro的不滿在于數(shù)據(jù)處理、分析控件不全,特別是缺少了一批數(shù)據(jù)分析控件。比如沒(méi)有可以與數(shù)據(jù)捆綁的圖表控件、沒(méi)有可以列示捆綁交叉表的表格控件、沒(méi)有可以捆綁數(shù)據(jù)的數(shù)據(jù)透視表格控件……在這個(gè)問(wèn)題上Visual FoxPro確實(shí)應(yīng)該向Delphi、PB等軟件學(xué)習(xí),這是我們對(duì)未來(lái)的Visual FoxPro的期望!

Visual FoxPro與OLE DB、ADO

ADO是Windows環(huán)境下主流的數(shù)據(jù)存取的解決方案,那些以對(duì)象操作數(shù)據(jù)的語(yǔ)言基本上都使用ADO實(shí)現(xiàn)數(shù)據(jù)存取,如:VC++、VB、Delphi。在Visual FoxPro的開(kāi)發(fā)環(huán)境中好像看不到ADO的影子,是不是Visual FoxPro不支持ADO呢?ADO其實(shí)是一組COM對(duì)象,Visual FoxPro支持COM,當(dāng)然支持ADO。

我認(rèn)為:Visual FoxPro對(duì)ADO的支持只是停留在較低的水平。這并不是說(shuō)Visual FoxPro限制了什么ADO的功能(所有功能都能用),而是指:用起來(lái)不方便,不像在VB、Delphi中方便。這種不方便主要體現(xiàn)在ADO的Recordset無(wú)法與Visual FoxPro的內(nèi)置控件捆綁。其原因是:Visual FoxPro 不認(rèn)識(shí)ADO的Recordset,只能將記錄逐條讀取,而不是一下子認(rèn)得整個(gè)Recordset。這樣數(shù)據(jù)就不能被捆綁了,同時(shí)也不能對(duì)ADO直接使用Visual FoxPro強(qiáng)大的數(shù)據(jù)處理功能(ADO是用來(lái)存取數(shù)據(jù)而處理數(shù)據(jù)還要靠客戶軟件)。

就象Visual FoxPro使用ODBC連接遠(yuǎn)程數(shù)據(jù)源那樣,ADO通過(guò)OLE-DB與數(shù)據(jù)提供者對(duì)話。 (By the way: Visual FoxPro 7是OLE-DB提供者,這樣就可以 通過(guò)正宗的OLE-DB驅(qū)動(dòng)程序在其他開(kāi)發(fā)工具中使用ADO存取Visual FoxPro數(shù)據(jù)了 。)

ADO能為Visual FoxPro帶來(lái)什么?首先要注意的是:ADO與Visual FoxPro的數(shù)據(jù)引擎是毫無(wú)關(guān)系的系統(tǒng),從某種程度上講ADO的出現(xiàn)為Visual FoxPro提供了一種全新的遠(yuǎn)程數(shù)據(jù)處理方式。

ADO是多層應(yīng)用程序中數(shù)據(jù)集合傳遞的最好解決方案。如果我們用Visual FoxPro開(kāi)發(fā)了一個(gè)中間層系統(tǒng),用VB開(kāi)發(fā)了用戶界面,當(dāng)中間層要傳遞一個(gè)cursor到VB的客戶端就不可以使用Visual FoxPro的cursor或DBF,因?yàn)閂B不認(rèn)得他們。使用ADO的Recordset就可以解決問(wèn)題,因?yàn)榇蠹叶颊J(rèn)得他;Visual FoxPro 只能通過(guò)Visual FoxPro 7支持XML后才能彌補(bǔ)Visual FoxPro本地引擎在應(yīng)用程序傳遞數(shù)據(jù)集的不足。

ADO可以存取非關(guān)系型數(shù)據(jù)庫(kù)。ADO是微軟的Universal Data Access構(gòu)架的主將,它可以存取Excel等非關(guān)系型數(shù)據(jù)數(shù)據(jù)庫(kù)的數(shù)據(jù)。通過(guò)ODBC存取遠(yuǎn)程數(shù)據(jù)的Visual FoxPro就無(wú)此能力了。但是我使用了ADO存取Excel后很失望,因?yàn)檫B接必須是獨(dú)占的,所以這種功能帶給我們的幫助只是有限的!

ADO可以彌補(bǔ)Visual FoxPro在遠(yuǎn)程數(shù)據(jù)存取時(shí)的不足之處。譬如Visual FoxPro不認(rèn)得SQL Server中nText、nVarchar、nChar等數(shù)據(jù)類型,但ADO可以。

在Visual FoxPro使用ADO存在如下缺點(diǎn):

Visual FoxPro只能通過(guò)COM的方式識(shí)別ADO的Recordset,不能像表格那樣讀寫(xiě)它,這樣就出現(xiàn)了兩個(gè)問(wèn)題:Recordset無(wú)法與Visual FoxPro的內(nèi)置控件捆綁;無(wú)法直接使用Visual FoxPro強(qiáng)大的數(shù)據(jù)處理功能(ADO是用來(lái)存取數(shù)據(jù)而處理數(shù)據(jù)還要靠客戶軟件)。

Visual FoxPro中使用代碼實(shí)現(xiàn)ADO的全部功能,但代碼量大、書(shū)寫(xiě)麻煩。

對(duì)待以上不足Visual FoxPro開(kāi)發(fā)小組在Visual FoxPro 6推出不久后就發(fā)布了一個(gè)叫VFPCOM.DLL的組件,可以用它部分解決ADO的Recordset與Visual FoxPro的cursor的轉(zhuǎn)換和ADO事件的綁定 ,Visual FoxPro 更是內(nèi)置支持 COM 事件綁定。在本文的第一版中,筆者曾有這樣的希望:“Visual FoxPro 更具效率的支持ADO”?,F(xiàn)在我的看法有了一些改變,我認(rèn)為在 Visual FoxPro 處理數(shù)據(jù),無(wú)論是本地、還是遠(yuǎn)程數(shù)據(jù),無(wú)論是什么構(gòu)架的系統(tǒng),最佳的解決方案認(rèn)識(shí)內(nèi)置的數(shù)據(jù)引擎,而不是現(xiàn)在流行的ADO,現(xiàn)在 Visual FoxPro對(duì)ADO的支持程度已經(jīng)足夠了!

Visual FoxPro的數(shù)據(jù)引擎與ADO相比有什么優(yōu)勢(shì)呢?

Visual FoxPro數(shù)據(jù)引擎系統(tǒng)資源耗用小,ADO畢竟是COM組件要花用更多的資源。
作為系統(tǒng)共用組件,使用ADO可能會(huì)在不同應(yīng)用系統(tǒng)中產(chǎn)生ADO的版本問(wèn)題,這就像我們常遇見(jiàn)的ActiveX的控件版本問(wèn)題。

ADO只是數(shù)據(jù)存取組件,它沒(méi)有數(shù)據(jù)處理功能,要處理數(shù)據(jù)必須使用客戶應(yīng)用程序,如VB、Delphi。Visual FoxPro數(shù)據(jù)引擎同時(shí)支持?jǐn)?shù)據(jù)存取、數(shù)據(jù)處理,我已多次強(qiáng)調(diào)Visual FoxPro在這兩方面的偉大功能;

ADO沒(méi)有本地?cái)?shù)據(jù)庫(kù)作為強(qiáng)大的支持,有需要將遠(yuǎn)端數(shù)據(jù)暫時(shí)存放在物理文件中ADO絕對(duì)不及Visual FoxPro。Visual FoxPro的數(shù)據(jù)庫(kù)是桌面數(shù)據(jù)庫(kù)中最好的,遠(yuǎn)端數(shù)據(jù)暫存其中不僅方便,而且伸縮性強(qiáng)。

使用ADO從數(shù)據(jù)源獲得數(shù)據(jù)以后,再要對(duì)數(shù)據(jù)集合進(jìn)行分組、查詢、匯總是非常麻煩的事情,但是Visual FoxPro支持對(duì)Cursor的數(shù)據(jù)處理,我們可以使用絕大多數(shù)XBase語(yǔ)言(除了ZAP和Pack之類的表維護(hù)語(yǔ)言之外),還可以對(duì)Cursor執(zhí)行SQL語(yǔ)句——這種強(qiáng)大的威力,絕非ADO所能比擬。

開(kāi)發(fā)單機(jī)程序時(shí),絕對(duì)不要使用ADO,這樣做既沒(méi)開(kāi)發(fā)效率也沒(méi)運(yùn)行效率;開(kāi)發(fā)C/S系統(tǒng)時(shí)我們應(yīng)選用Visual FoxPro的SPT和Remote View,它們完全可以很完美的解決問(wèn)題(已經(jīng)有很多很多成功經(jīng)驗(yàn)),不需要舍近求遠(yuǎn)地使用ADO;在中間層開(kāi)發(fā)時(shí),可以考慮使用ADO,我們?yōu)樵诖朔N情況下使用ADO的開(kāi)發(fā)效率是蠻高的,因?yàn)檫@時(shí)所有的代碼都要我們用一句、一句的寫(xiě)出來(lái)(在其他開(kāi)發(fā)環(huán)境也一樣),Visual FoxPro的語(yǔ)法簡(jiǎn)單再加上Visual FoxPro 7的極為強(qiáng)大Intellisense功能(真的很快并且可以由用戶自定義),也許我們還會(huì)占些便宜的。

雖然ADO與Visual FoxPro是完全無(wú)關(guān)的系統(tǒng),但他們卻有共同的母親——FoxPro 開(kāi)發(fā)小組,原來(lái)ADO的光標(biāo)集(Cursor Engine)是他們開(kāi)發(fā)的。如果你同時(shí)了解ADO與Visual FoxPro,你會(huì)發(fā)現(xiàn)ADO的很多思路與Visual FoxPro一模一樣……我總是拿這個(gè)典故說(shuō)服那些不相信Visual FoxPro的人:最流行的ADO的光標(biāo)集是FoxPro 開(kāi)發(fā)小組寫(xiě)的,有什么理由懷疑Visual FoxPro的數(shù)據(jù)引擎——它是世界上最棒的!

Visual FoxPro是一種歷史悠久的產(chǎn)品,很多用戶是從FoxBASE到FoxPro到Visual FoxPro,這樣一步一步過(guò)來(lái)的。歷史的積淀多了,歷史的包袱也重了——許多程序員往往抓住老產(chǎn)品而忘了深入鉆研新產(chǎn)品的新特性,這是一種悲哀。

我遇到許多所謂會(huì)使用Visual FoxPro的人,還口口聲聲叫“Query Design”為“RQBE”,朋友那可是DOS時(shí)代的概念了。

很多人不仔細(xì)鉆研Visual FoxPro,只是從其他工具中看到某項(xiàng)功能,憑空想象就說(shuō):Visual FoxPro不支持的。Delphi中特別指出它有異構(gòu)數(shù)據(jù)關(guān)聯(lián)能力,比如:父表是SQL Server數(shù)據(jù),子表是Access數(shù)據(jù),要求建立關(guān)聯(lián),實(shí)現(xiàn)“一多關(guān)系”。在Delphi要求使用特別的SQL語(yǔ)法來(lái)實(shí)現(xiàn)該功能。Visual FoxPro的文檔里好像沒(méi)特別說(shuō)明這項(xiàng)功能,是不是沒(méi)有呢?如果你深刻理解Visual FoxPro的遠(yuǎn)程視圖及Cursor的用法,答案很容易得到。事實(shí)上,用Visual FoxPro能更直接、簡(jiǎn)單實(shí)現(xiàn)的實(shí)現(xiàn):建兩條“連接”、兩個(gè)“遠(yuǎn)程視圖”,對(duì)子表加索引,Set relation to,set skip to……

反過(guò)來(lái)Visual FoxPro能實(shí)現(xiàn)的功能,Delphi的BDE(Delphi的本地引擎)卻不能:Visual FoxPro的遠(yuǎn)程視圖能夠?qū)⒍鄠€(gè)表關(guān)聯(lián)后的結(jié)果集設(shè)定為“可更新”,并在數(shù)據(jù)變動(dòng)后自動(dòng)產(chǎn)生Update子句分別更新后臺(tái)數(shù)據(jù)。例如:對(duì)SQL Server中Pubs數(shù)據(jù)庫(kù)建立連接,新建遠(yuǎn)程視圖為:

CREATE SQL VIEW TEST VIEW REMOTE CONNECTION CONNECTION1 AS SELECT Publishers.pub_id, Publishers.pub_name, Titles.title_id, Titles.title, Titles.price, Authors.au_id, Authors.au_lname, Authors.au_fname, Authors.phone, Authors.address FROM dbo.publishers Publishers, dbo.titles Titles, dbo.titleauthor Titleauthor, dbo.authors Authors WHERE Titles.pub_id = Publishers.pub_id AND Titleauthor.title_id = Titles.title_id AND Authors.au_id = Titleauthor.au_id ORDER BY Publishers.pub_id

這是四個(gè)表間的關(guān)系,算是比較復(fù)雜的SQL語(yǔ)句。別擔(dān)心,這一切在Visual FoxPro只不過(guò)是用鼠標(biāo)在“視圖設(shè)計(jì)器”點(diǎn)擊幾次就行了。在您對(duì)視圖進(jìn)行“添加、刪除、修改”并發(fā)送更新時(shí), Visual FoxPro會(huì)進(jìn)行分析地智能,產(chǎn)生Update字句分別將變化更新到后端若干個(gè)表中。而Delphi的BDE只能對(duì)Xbase數(shù)據(jù)源有此的作用,對(duì)其他的數(shù)據(jù)源都無(wú)此功能。Visual FoxPro可以支持所有的ODBC數(shù)據(jù)源(只要數(shù)據(jù)源本身支持),如:Oracle、SQL Server,Access……當(dāng)然在Delphi 5.X中可以通過(guò)ADO彌補(bǔ)此缺陷,但Visual FoxPro同樣支持ADO。Visual FoxPro的程序員要有這樣的信心:Visual FoxPro為我們提供了最好的本地引擎!

古人云:欲善其事、必先利其器。所以我們不要指責(zé)工具怎么、怎么,多看看自己用好了沒(méi)有!

Visual FoxPro與其他開(kāi)發(fā)工具的比較

這其實(shí)是一個(gè)很傻的話題,選擇何種開(kāi)發(fā)工具完全是由于程序員的面臨的任務(wù)以及個(gè)人的喜好決定的。只要您選用的工具能夠勝任您從事的項(xiàng)目,只要您對(duì)開(kāi)發(fā)工具有足夠的造詣以應(yīng)付多變、復(fù)雜的工作,只要這個(gè)工具還在繼續(xù)升級(jí),您就沒(méi)有理由更換工具,更沒(méi)有必要摻和到這種無(wú)聊的討論中去。

任何工具都有其優(yōu)勢(shì)與弱勢(shì),產(chǎn)品定位更是各自不同,每個(gè)程序員都覺(jué)得自己的選擇是最好的,別人都是愚蠢的。以下的討論只是無(wú)聊的筆者發(fā)出的無(wú)聊的言論,您大可掠過(guò)不看。

談?wù)揤isual FoxPro,我們必須注意這樣一個(gè)問(wèn)題:Visual FoxPro 是干什么用的。毋庸置疑,它是一種數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)工具。我個(gè)人認(rèn)為,到目前為止在Microsoft公司的所有開(kāi)發(fā)工具中,Visual FoxPro是開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序的最佳產(chǎn)品。我們必須承認(rèn)這樣的事實(shí):從一開(kāi)始,Visual FoxPro 就是為處理數(shù)據(jù)而設(shè)計(jì)的,它運(yùn)行速度快、功能強(qiáng)大、而且非常靈活。

有很多人老喜歡拿Access與Visual FoxPro 比較,對(duì)此我總不屑一顧,且讓我們看看微軟的評(píng)論吧!微軟原話如下:
“Microsoft Access 是 Office 中的數(shù)據(jù)庫(kù),也是微軟所銷售的軟件中,使用最廣且最容易學(xué)習(xí)的數(shù)據(jù)庫(kù)工具。如果你是數(shù)據(jù)庫(kù)的新手,如果你要使用Microsoft Office 來(lái)建立應(yīng)用程序,或者你想要一個(gè)相當(dāng)便利的交互式產(chǎn)品,那么就選擇Access。Visual FoxPro 是用來(lái)建立關(guān)系型數(shù)據(jù)庫(kù)應(yīng)用程序的一種功能強(qiáng)大的RAD工具。如果你是一位以建立關(guān)系型數(shù)據(jù)庫(kù)應(yīng)用程序維生的數(shù)據(jù)庫(kù)開(kāi)發(fā)人員,而且你希望速度與功能都達(dá)到極限,那么請(qǐng)選擇Visual FoxPro。”
(這段話在今年Visual FoxPro 退出Visual Studio后,微軟又重復(fù)了一次,強(qiáng)調(diào)Visual FoxPro是專業(yè)開(kāi)發(fā)人員的開(kāi)發(fā)工具,而不是Access 那樣的普通用戶的辦公平臺(tái)。)

根據(jù)我的經(jīng)驗(yàn),Access的MDB數(shù)據(jù)庫(kù)適用于20萬(wàn)條/表的數(shù)據(jù)量的應(yīng)用(它比Visual FoxPro數(shù)據(jù)庫(kù)的唯一長(zhǎng)處是:所有的數(shù)據(jù)庫(kù)組件都在同一個(gè)MDB文件里,而Fox的數(shù)據(jù)庫(kù)可能有多個(gè)文件組成,顯得凌亂。),數(shù)據(jù)量再增加的話,不是說(shuō)Access不能處理了,而是效率不行了——查詢、索引都很慢。Visual FoxPro能處理百萬(wàn)計(jì)甚至上千萬(wàn)計(jì)的數(shù)據(jù)量,這都是有實(shí)踐根據(jù),在過(guò)去的20多年里,特別是大型網(wǎng)絡(luò)數(shù)據(jù)庫(kù)沒(méi)有平民化的年代里,業(yè)界就是依靠DBF數(shù)據(jù)表來(lái)管理數(shù)據(jù)的,毫不夸張Visual FoxPro是能夠安全、高效處理大數(shù)據(jù)量的專業(yè)工具。

有多人拿Visual FoxPro與VB、Delphi甚至是VC++做比較,這是很幼稚的,后面三者是編程語(yǔ)言,而Visual FoxPro是數(shù)據(jù)庫(kù) 系統(tǒng)的開(kāi)發(fā)工具,天生分工就不同。

我聽(tīng)說(shuō)過(guò)這樣的典故:Foxmail最初是用Visual FoxPro編寫(xiě)的(所以叫做FoxMail),后來(lái)改用Delphi編寫(xiě)。如果這是事實(shí)就很能說(shuō)明問(wèn)題,Visual FoxPro是數(shù)據(jù)庫(kù)開(kāi)發(fā)工具以它編寫(xiě)郵件客戶軟件有點(diǎn)勉為其難,即使成功了效率也不會(huì)很高,但如果是一個(gè)用Visual FoxPro寫(xiě)的管理系統(tǒng)中要求有郵件功能,Visual FoxPro則完全可以做得很好。

Visual FoxPro作為數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,它為我們提供了十分強(qiáng)健、高效的數(shù)據(jù)引擎,它容量大、速度快、靈活、健壯,所以用Visual FoxPro開(kāi)發(fā)單用戶數(shù)據(jù)庫(kù)絕對(duì)比其他所有軟件來(lái)的高效——曾經(jīng)有人嘲笑VB處理5、6萬(wàn)條記錄就趴下,但我們的Visual FoxPro處理百萬(wàn)條記錄也不覺(jué)吃力,所以Visual FoxPro的開(kāi)發(fā)人員無(wú)論在什么時(shí)候都要注意發(fā)揮Visual FoxPro的數(shù)據(jù)引擎的威力,這樣才能立于不敗之地。VC++很厲害,但真正地用好它不容易, 開(kāi)發(fā)效率也不高。如果使用VC++開(kāi)發(fā)應(yīng)用程序還象VB那樣只會(huì)使用控件,那么還是別使用VC++了(這叫掛羊頭賣狗肉),再者Visual FoxPro本身是VC++編寫(xiě)的,是歷代最優(yōu)秀的程序員智慧的結(jié)晶,為什么有了VC++還要花精力編寫(xiě)Visual FoxPro,這本身就很說(shuō)明問(wèn)題。

又有人把Power Builder請(qǐng)出來(lái)與Visual FoxPro作比較,大家都是數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)環(huán)境,好像PB比Visual FoxPro厲害。 就數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)而言,Visial FoxPro 可以開(kāi)發(fā)單用戶系統(tǒng)、網(wǎng)絡(luò)環(huán)境下的文件服務(wù)器系統(tǒng)、客戶機(jī)\服務(wù)器系統(tǒng)、Web Server、數(shù)據(jù)處理的COM組件、Web Service,可以說(shuō)除了Web界面無(wú)法開(kāi)發(fā)之外,凡是與數(shù)據(jù)庫(kù)系統(tǒng)有關(guān)的開(kāi)發(fā)領(lǐng)域Visual FoxPro都很好的支持。PB的起點(diǎn)在客戶機(jī)\服務(wù)器系統(tǒng),也能很漂亮的完成工作,此中取舍全憑個(gè)人喜好;另外,PB的成本很高。據(jù)我所知它的價(jià)格十分昂貴(有人戲稱說(shuō)PB是世界五百?gòu)?qiáng)才用的起的產(chǎn)品),而Visual FoxPro才賣幾千人民幣。當(dāng)然,這個(gè)觀點(diǎn)您可以不接受——在中國(guó)軟件是沒(méi)有價(jià)值的,每張只賣5元人民幣;還有PB的開(kāi)發(fā)方式與眾不同,用了他以后再改學(xué)別的會(huì)比較困難;最后退一萬(wàn)步講,您要變換編程工具,我也不贊成改用PB,因?yàn)镻B再好也是一個(gè)數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,從這上面講與Visual FoxPro是一個(gè)級(jí)別的東西,您想變換工具一定有更多的需求,我看用C#或Delphi會(huì)是更佳的選擇。

所有這些語(yǔ)言與Visual FoxPro相比,最大的區(qū)別就是:Visual FoxPro是程序設(shè)計(jì)語(yǔ)言與DBMS的完美結(jié)合,而Vc++、Delphi、Vb、PB都只是編程工具,而不是DBMS。Visual FoxPro的這一特性,決定了它更合適與任何類型的企事業(yè)單位,我無(wú)法想象——為了簡(jiǎn)單的查詢還要用Vc++、Delphi、Vb、PB編寫(xiě)一個(gè)Exe文件,使用Command窗口多好!

又有人把網(wǎng)絡(luò)數(shù)據(jù)庫(kù)如Oracle、SQL Server與Visual FoxPro相比較,說(shuō)了Visual FoxPro一大通的壞話,這種人其實(shí)很傻,你大可對(duì)他嗤之以鼻。大型數(shù)據(jù)庫(kù)與桌面數(shù)據(jù)庫(kù)在系統(tǒng)開(kāi)發(fā)中的作用是不一樣,兩者是相輔相成的。我們應(yīng)該把注意力放在“怎樣發(fā)揮兩者數(shù)據(jù)庫(kù)引擎最高效能的問(wèn)題上”,而不是去爭(zhēng)論孰優(yōu)孰劣。這種爭(zhēng)論就好比是評(píng)論是男人漂亮、還是女人美麗那樣——毫無(wú)意義。

Visual FoxPro從Visual Studio中分離出來(lái)了

2001年2月26日,微軟宣布將Visual FoxPro 7從Visual Studio 中分離出來(lái),這是一個(gè)好消息還是壞消息呢?我們來(lái)分析一下:

我們失去了什么

我們先來(lái)觀察,Visual FoxPro不成為.Net語(yǔ)言,在技術(shù)上損失的是:不能開(kāi)發(fā)基于.Net的Web應(yīng)用程序。

Visual Studio.Net 是一種擅長(zhǎng)于開(kāi)發(fā)Web應(yīng)用程序的工具,過(guò)去與現(xiàn)在微軟霸占著"桌面應(yīng)用程序"應(yīng)用市場(chǎng),現(xiàn)在微軟要吞噬現(xiàn)在由其他公司控制的大型網(wǎng)絡(luò)應(yīng)用市場(chǎng),于是推出了.Net構(gòu)架,Visual Studio.Net就是開(kāi)發(fā)基于.Net的應(yīng)用程序的RAD(快速開(kāi)發(fā)環(huán)境)。

筆者認(rèn)為:起碼在可知的一兩年內(nèi),我們這些用Visual FoxPro寫(xiě)程序的人不會(huì)有用Visual FoxPro開(kāi)發(fā)大型Web應(yīng)用需求,客觀上絕大多數(shù)企業(yè)也不會(huì)有自建一個(gè)電子商務(wù)網(wǎng)站的需求,我們并不會(huì)因?yàn)閂isual FoxPro不是.Net語(yǔ)言而失去我們的市場(chǎng)--普通的企業(yè)級(jí)(單用戶構(gòu)架、File Server構(gòu)架、(兩層、三層)客戶機(jī)\服務(wù)器構(gòu)架)的應(yīng)用。等.Net真正熱起來(lái),那將是幾年后的事情了!

當(dāng)然作為.Net語(yǔ)言也可以開(kāi)發(fā)桌面應(yīng)用程序,Visual FoxPro成為.Net語(yǔ)言不是更好嗎?筆者的看法是:不一定。一位網(wǎng)友說(shuō):VB.Net的語(yǔ)法像VC++又像JAVA,已經(jīng)完全不像BASIC語(yǔ)法了,等於是要重新學(xué)習(xí)另一套語(yǔ)言了,有這種感覺(jué)的VB程序員很多,聽(tīng)說(shuō)國(guó)外有很多VB程序員還"憂心忡忡"的。連微軟也承認(rèn):VB 6與VB.Net是差別很大的語(yǔ)言。

假設(shè)VB變化的只是語(yǔ)法特色(這已經(jīng)夠厲害的),那么如果Visual FoxPro現(xiàn)在成為.Net語(yǔ)言,其標(biāo)志性功能的損失一定比VB更多!我們認(rèn)為:這其中最不能讓大家容忍的就是:Visual FoxPro的數(shù)據(jù)引擎和數(shù)據(jù)處理手段將損失殆盡,說(shuō)實(shí)話我們中多數(shù)人使用Visual FoxPro就是看中了它在數(shù)據(jù)處理上的無(wú)與倫比優(yōu)勢(shì)。.Net語(yǔ)言使用公共運(yùn)行庫(kù)(Common Runtime Language),數(shù)據(jù)庫(kù)方面的功能是通過(guò)外掛ADO等組件完成的。在技術(shù)不成熟的現(xiàn)在,讓Visual FoxPro運(yùn)行在CLR上,勢(shì)必只有三種選擇:取消Visual FoxPro的數(shù)據(jù)處理組件,讓它使用組件處理數(shù)據(jù);把Visual FoxPro的數(shù)據(jù)引擎加入公共運(yùn)行庫(kù);Visual FoxPro的數(shù)據(jù)引擎做成一個(gè)組件??梢?jiàn)這三種選擇沒(méi)有一種是合理的,即使成了,那么Visual FoxPro也就成為了一個(gè)四不像的東西。

Visual FoxPro與.Net

Visual FoxPro 能夠很好的支持XML、Web Service、COM。通過(guò)它們,Visual FoxPro就能與.Net整合在一起,并能開(kāi)發(fā).Net中最最熱門(mén)的話題:Web Services。

客觀上,有利于Visual FoxPro的發(fā)展

Visual FoxPro作為Visual Studio的一員并不能很好的發(fā)展"Fox的事業(yè)",這個(gè)觀點(diǎn)是各國(guó)狐友的普遍共識(shí)。作為Visual Studio的一員,Visual FoxPro更多的像其他Visual Studio產(chǎn)品看齊,忽視自身特色的發(fā)展,忽視用戶的需求;產(chǎn)品升級(jí)、服務(wù)包的提供周期變長(zhǎng)(要等其他產(chǎn)品的完工),如果Visual FoxPro 7不分離出來(lái),發(fā)布期起碼要晚半年。將Visual FoxPro從Visual Studio.Net中分離出來(lái),最起碼以上兩個(gè)問(wèn)題會(huì)有很好的改觀,特別是Visual FoxPro會(huì)更重視用戶的需求。

獨(dú)立面對(duì)挑戰(zhàn)

Visual FoxPro從Visual Studio.Net中分離出來(lái)最大的壞處是:必須獨(dú)自面對(duì)市場(chǎng)。說(shuō)白了就是:能不能賣的好?如果Visual FoxPro 7.0的生意還不錯(cuò),那么Visual FoxPro就會(huì)發(fā)展的很好--這是很簡(jiǎn)單的道理。

在微軟所有的開(kāi)發(fā)環(huán)境中,Visual FoxPro是唯一內(nèi)嵌數(shù)據(jù)引擎的——VC、VB都必須外掛數(shù)據(jù)處理引擎,如:DAO、ADO等,當(dāng)然VC可以使用底層API調(diào)用來(lái)完成數(shù)據(jù)庫(kù)處理方面的任務(wù)——這就是Visual FoxPro的特色--為數(shù)據(jù)處理而生,但是如果現(xiàn)在盲目的把Visual FoxPro并入Visual Studio.Net的話,Visual FoxPro的這一特色必然不能保存,這對(duì)微軟、對(duì)用戶都是損失。VB、VC則沒(méi)有這個(gè)問(wèn)題--反正它們不內(nèi)置數(shù)據(jù)引擎,只要.Net可以調(diào)用數(shù)據(jù)處理組件就可以了!

Visual FoxPro 7 的特性

前面已經(jīng)提到多次,Visual FoxPro 7 已經(jīng)在2001年5月中旬正式發(fā)布的,6月份在美國(guó)上市?,F(xiàn)在不少網(wǎng)友已經(jīng)得到了Visual FoxPro 7的英語(yǔ)正式版,使用之后,產(chǎn)生了種種評(píng)判。在美國(guó)人們認(rèn)為,Visual FoxPro 7是繼 Visual FoxPro 3以后 Fox 發(fā)展史上最具有“革命意義”的版本,評(píng)價(jià)是很高的;而在國(guó)內(nèi),不少嘗鮮者感嘆:這是微軟不好意思說(shuō)SP的產(chǎn)品,簡(jiǎn)直就是Visual FoxPro 6+SP6……兩種評(píng)價(jià)相差這么大,誰(shuí)是誰(shuí)非呢?

筆者在2000年底就得到了它的Bata 1版,2001年7月得到了英語(yǔ)正式版。初次見(jiàn)面確有失望之處——界面改觀太小了——除了幾個(gè)窗口可以停放、菜單上多了幾個(gè)圖標(biāo)之外,幾乎與Visual FoxPro 6沒(méi)有區(qū)別,最無(wú)法容忍的是可視化控件一個(gè)也沒(méi)有增加……

我耐著性子讀著幫助了解Visual FoxPro 7的新特性,慢慢的我有了這樣的感受:有了Visual FoxPro 7我決不用Visual FoxPro 6,這也是我對(duì)Visual FoxPro 7的評(píng)判,雖然它不完美,有的地方不盡如人意,我還是覺(jué)得給它打個(gè)80分總是應(yīng)該的。接下來(lái)筆者就談?wù)勈褂玫母惺埽?br>
巨好的開(kāi)發(fā)環(huán)境,這主要體現(xiàn)在六個(gè)方面:

IntelliSense(智能感知輸入提示)、Object Browse、Document View、Task List(任務(wù)列表)、最近使用過(guò)的文件記錄、窗口停放。

IntelliSense。我以前常常羨慕VB程序員,他們?cè)赩B 5時(shí)就擁有了IntelliSense工具,于是他們不必要記憶大量的命令、函數(shù)、在對(duì)外來(lái)的ActiveX、COM編程時(shí)也能輕易的得到對(duì)象的方法、屬性、事件。

在Visual FoxPro里,如果說(shuō)記憶Visual FoxPro本身的東西還沒(méi)有什么困難的話,對(duì)ActiveX、COM得屬性、方法、常量就頭疼了?,F(xiàn)在Visual FoxPro 7支持IntelliSense了,并且提供了強(qiáng)大的用戶定義功能,在Visual FoxPro里這是一個(gè)可組態(tài)的工具;現(xiàn)在Visual FoxPro 7不僅支持對(duì)內(nèi)部對(duì)象、命令、函數(shù)的智能輸入導(dǎo)航,更支持對(duì)ActiveX、COM的智能輸入導(dǎo)航,令人興奮的是:Visual FoxPro的IntelliSense還支持最新的Web Service。完全可以自豪的說(shuō):Visual FoxPro的IntelliSense是最棒的,是可以由用戶定義的。

Object Browse。與IntelliSense一樣,在其他開(kāi)發(fā)環(huán)境中早就有了,但并沒(méi)有因此降低我對(duì)它的興趣。首先,對(duì)COM對(duì)象、ActiveX的觀察工具確實(shí)很有用;最重要的是:Visual FoxPro 7的Object Browse與Visual FoxPro開(kāi)發(fā)環(huán)境緊密結(jié)合在一起--可以很簡(jiǎn)單的從Object Browse中拖逸COM對(duì)象接口到程序中,很簡(jiǎn)單的就可以“實(shí)作”COM對(duì)象的接口。

Document View。這是一個(gè)程序編輯的輔助工具,它可以列出文件中所有的過(guò)程、方法、函數(shù)、宏定義、頭文件,幫助程序員在大量代碼中快速導(dǎo)航。

Task List(任務(wù)列表)是一項(xiàng)貼心設(shè)計(jì),它的功能有點(diǎn)像“書(shū)簽”。但比“書(shū)簽”強(qiáng)大的地方在于:一旦關(guān)閉文件“書(shū)簽”就釋放了,而Task List 不會(huì)。任何時(shí)候點(diǎn)擊Task List 項(xiàng)目就可以快速打開(kāi)相關(guān)文件,導(dǎo)航到相關(guān)的地點(diǎn)。

就像Word那樣,Visual FoxPro 會(huì)記憶用戶最近使用過(guò)文件,這樣就能減少用戶查找文件的時(shí)間。

窗口停放。顯示器越來(lái)越大、分辨率越來(lái)越高,程序員的桌面空間越來(lái)越小——開(kāi)發(fā)環(huán)境對(duì)內(nèi)部工具窗體的管理很要緊——合理組合,提供更大工作空間。在我用過(guò)的開(kāi)發(fā)工具中,我最喜歡Visual FoxPro的環(huán)境配置,不滿意的是:命令窗口、數(shù)據(jù)工作期窗口、屬性窗口的凌亂。現(xiàn)在好了——Visual FoxPro 7支持了工具窗口停放,達(dá)到了節(jié)約空間的目的。

Visual FoxPro 7 對(duì)開(kāi)發(fā)環(huán)境的改善有細(xì)微之處的變化、更有大部頭的作品。它吸收了各種開(kāi)發(fā)環(huán)境的優(yōu)點(diǎn),融入了Fox自己的特色,值得稱道。

數(shù)據(jù)庫(kù)事件

Visual FoxPro 7 最亮麗的特色是60個(gè)左右的數(shù)據(jù)庫(kù)事件,這是自Visual FoxPro 3以來(lái)一次最大的對(duì)數(shù)據(jù)庫(kù)引擎的改善。這些事件對(duì)管理整個(gè)數(shù)據(jù)庫(kù)有很重大的意義,我們可以把維護(hù)數(shù)據(jù)庫(kù)的代碼寫(xiě)在事件中,只要有相應(yīng)的操作就會(huì)觸發(fā),這樣就網(wǎng)羅了所有的相關(guān)動(dòng)作,而不是像以前那樣寫(xiě)在應(yīng)用程序中!數(shù)據(jù)庫(kù)的事件應(yīng)用面可能很廣,發(fā)揮它的作用還得靠大家的智慧!

XML與Web Service

Visual FoxPro 7 支持 XML 文檔與 Fox 光標(biāo)的轉(zhuǎn)換,真是一件令人興奮的事情,以前我們開(kāi)發(fā)COM應(yīng)用程序時(shí)總為數(shù)據(jù)集合傳遞感到頭疼——本人的解決方案是——模仿ADO的做法,讓客戶程序以循環(huán)的方式得到記錄集;當(dāng)COM組件要得到記錄集時(shí),好像就更麻煩了……現(xiàn)在好了,業(yè)界新標(biāo)準(zhǔn)——XML可以文本(字符串)的方式傳遞數(shù)據(jù)集合,真是一件美事!

Visual FoxPro 7 支持XML,同時(shí)對(duì)SOAP也有內(nèi)置的支持,這樣就使得Visual FoxPro 7成為.NET構(gòu)架下的工具了,我們可以使用Visual FoxPro7輕松的開(kāi)發(fā)、發(fā)布Web Service,這樣我們的應(yīng)用程序就可以在任何時(shí)間、任何地點(diǎn)被任何支持Internet的設(shè)備調(diào)用,為它們提供服務(wù)。

Web Service可是當(dāng)前業(yè)界最最熱門(mén)的話題,Visual FoxPro是微軟公司推出的第一個(gè)能開(kāi)發(fā)Web Service的工具。支持 Web Service,使得Visual FoxPro 程序員具備了開(kāi)發(fā)新型分布式應(yīng)用程序的能力。

COM以及COM+

COM組件開(kāi)發(fā)的感覺(jué)特爽,不僅是開(kāi)發(fā)效率的提高,更是COM組件運(yùn)行的效果明顯改善。Visual FoxPro 是從5.0開(kāi)始支持COM組件的開(kāi)發(fā),6.0版本開(kāi)始走向成熟,6.0的SP3以后支持多線程組件的開(kāi)發(fā),7.0版本中開(kāi)發(fā)COM組件明顯比6.0版本運(yùn)行效果好,可以說(shuō)是成熟、完美的技術(shù)了。

我以為Visual FoxPro 7對(duì)COM的支持可以分為兩個(gè)部分:Visual FoxPro充當(dāng)COM的客戶程序、Visual FoxPro作為COM服務(wù)程序。

Visual FoxPro 7 支持COM組件的“Interface”實(shí)作,支持早期綁定。這都是偉大的革新,我們知道COM本身不支持“繼承”,所以我們無(wú)法寫(xiě)出基于某個(gè)COM組件的“子類”,但我們可以通過(guò)“實(shí)作”COM組件的“Interface”,來(lái)實(shí)現(xiàn)多重“繼承”……

同時(shí)用Visual FoxPro 7編寫(xiě)的COM組件,比以往任何一個(gè)版本的Fox都可靠,并且完全支持Windows 2000的COM+規(guī)范。微軟在宣傳Visual FoxPro 7時(shí)指出:Visual FoxPro的COM組件可以被用作工業(yè)現(xiàn)場(chǎng)的無(wú)界面數(shù)據(jù)處理,可見(jiàn)其穩(wěn)定性。

Install Shield Express For Visual FoxPro

Install Shield 是主流的安裝程序制作軟件,在Visual FoxPro 7 里微軟就用 Install Shield Express For Visual FoxPro 限制功能版代替了原先的安裝向?qū)?。更可貴的是,這個(gè)版本的Install Shield提供了中文語(yǔ)言包,也就是說(shuō)可以生成中文界面的安裝程序了。有了Install Shield ,我們就能做出最合乎潮流的安裝程序。

新特性還有不少,您就自己看吧!還可以參看筆者撰寫(xiě)的《Visual FoxPro 7漫談》一文。

軟件的升級(jí)對(duì)我們用戶是否有好處,主要是看他為您解決了多少難題、減輕了多少痛苦。Visual FoxPro 7對(duì)于高級(jí)用戶可能更有吸引力,當(dāng)然普通用戶也一定會(huì)對(duì)它的超級(jí)開(kāi)發(fā)環(huán)境有興趣。

Visual FoxPro 7 SP1

2002年1月16日,微軟發(fā)布了Visual FoxPro 7的SP1。這是一個(gè)徹底的補(bǔ)丁包——幾乎沒(méi)有推出任何新特性。

加裝SP1能夠改善Visual FoxPro 7對(duì)XML的支持,根據(jù)筆者測(cè)試,再不安裝SP1的時(shí)候,XMLTOCURSOR()函數(shù)無(wú)法正確解析中文字符,而安裝了SP1以后,這個(gè)問(wèn)題就解決了!

我們的 Visual FoxPro 8

當(dāng)我們還在討論Visual FoxPro 7的時(shí)候,Visual FoxPro 8已經(jīng)像我們走來(lái)了!

Visual FoxPro 8的產(chǎn)品代號(hào)是"Toledo" ,是有FoxPro社區(qū)選出來(lái)的。

已經(jīng)看到的Visual FoxPro 8 的新特性

2001年9月初,在美國(guó)舉行的“VFP DevCon 2001” 會(huì)議中,微軟Fox小組成員召集了名為“Visual FoxPro 7.0 and Beyond”的主題演講,Calvin Hsia 為到會(huì)的開(kāi)發(fā)人員演示了幾個(gè)已經(jīng)完成的Visual FoxPro 8的新特性,雖然都是些不大的改進(jìn)。筆者個(gè)人覺(jué)得2003年Visual FoxPro 8將正式發(fā)行,但至于那是他叫不叫Visual FoxPro 8我就不知道了,也許微軟會(huì)為它改個(gè)名字……

支持自增長(zhǎng)字段。
用一個(gè)屬性實(shí)現(xiàn),表格控件當(dāng)前行的突出色彩現(xiàn)實(shí),并且在表格失去光標(biāo)時(shí),依然高亮度顯示當(dāng)前行。
頁(yè)框控件的得頁(yè)標(biāo)頭支持上、下、左、右四個(gè)方位的放置。
控件的ToolTip支持多行顯示。
所有控件支持Windows XP的界面風(fēng)格。

微軟對(duì)Visual FoxPro 8的定位

在FoxPro Advisor雜志里,有一篇名為《Memo from Microsoft》 的文章,登載了微軟Visual FoxPro 產(chǎn)品經(jīng)理 Ken Levy 對(duì)2002年 Visual FoxPro 發(fā)展的計(jì)劃,其中專門(mén)提到了Visual FoxPro 8 的產(chǎn)品定位,原文是:

The main top-down goals for Toledo are to provide a better rich client, improve distributed Web client features, improve developer productivity, and increase discoverability for ease of use. You can see that the product direction focuses on features VFP developers have requested.

Visual FoxPro 8 將在客戶端開(kāi)發(fā)上做重大的改進(jìn)、加強(qiáng),這與當(dāng)年微軟對(duì) Visual FoxPro 5、6 的定位截然不同——強(qiáng)調(diào)Visual FoxPro 在Visual Studio中的作用,強(qiáng)調(diào)Visual FoxPro開(kāi)發(fā)中間層應(yīng)用、COM組件?,F(xiàn)在Visual FoxPro 離開(kāi)了Visual Studio,產(chǎn)品重新定位,順應(yīng)開(kāi)發(fā)者的需求,提出了 Rich Client(胖客戶端)定位!

還有就是Visual FoxPro 8可能可以開(kāi)發(fā)Web Form了,也就是所謂的 distributed Web client features。

Visual FoxPro 8 不會(huì)是.Net語(yǔ)言

Ken Levy 還表示,Visual FoxPro 8將堅(jiān)持現(xiàn)有的體系構(gòu)架,而不會(huì)運(yùn)行在.NET common language runtime (CLR) engine 上,成為.Net語(yǔ)言。

我對(duì)Visual FoxPro 8 的期望

以下只是筆者一家之言。

遠(yuǎn)程數(shù)據(jù)訪問(wèn)

Fox歷史上的每一次重要升級(jí)都與數(shù)據(jù)引擎有關(guān),比如2.0時(shí)加入了內(nèi)置的SQL語(yǔ)句和Rushmore技術(shù);3.0時(shí)提出了完整的數(shù)據(jù)庫(kù)概念,加入了遠(yuǎn)程數(shù)據(jù)處理的技術(shù);7.0推出了數(shù)據(jù)庫(kù)事件的概念。筆者以為,Visual FoxPro 8可能在遠(yuǎn)程數(shù)據(jù)的處理上有改進(jìn),我們知道現(xiàn)在的Visual FoxPro是通過(guò)ODBC對(duì)遠(yuǎn)程數(shù)據(jù)實(shí)現(xiàn)訪問(wèn)的,ADO主要使用OLE DB來(lái)訪問(wèn)遠(yuǎn)程數(shù)據(jù),PB這樣的軟件更是有底層通道訪問(wèn)各種主流數(shù)據(jù)庫(kù);最新的ADO.NET中,微軟更增加了對(duì)SQL Server 7.0及2000的直接(底層)訪問(wèn),當(dāng)然對(duì)其它數(shù)據(jù)庫(kù)仍然采用OLE DB來(lái)訪問(wèn)?,F(xiàn)在我們?cè)赩isual FoxPro中,要想通過(guò)OLE-DB訪問(wèn)遠(yuǎn)程數(shù)據(jù)必須使用ADO組件,但從實(shí)際應(yīng)用來(lái)看ADO并非是Fox訪問(wèn)遠(yuǎn)程數(shù)據(jù)的主流方法,所以Visual FoxPro 8 應(yīng)該會(huì)在訪問(wèn)遠(yuǎn)程數(shù)據(jù)方面提出更加具備效率的方法:或是對(duì)SQL Server的底層通道,或是使用OLE DB連接到遠(yuǎn)程數(shù)據(jù)……(哈哈,這時(shí)我去年寫(xiě)的,今年已經(jīng)從微軟得到證實(shí):Fox 小組正在改進(jìn)Visual FoxPro與SQL Server的通訊??磥?lái),我的感覺(jué)蠻準(zhǔn)的?。?br>
無(wú)論訪問(wèn)怎么通道變化,對(duì)用戶是感覺(jué)不到的,就像現(xiàn)在用戶感覺(jué)不到我正在通過(guò)ODBC連接SQL Server的數(shù)據(jù)一樣,只是效果更好。 (注:ODBC仍然是絕對(duì)主流、穩(wěn)定的遠(yuǎn)程數(shù)據(jù)訪問(wèn)方式,只是速度略微慢于OLE DB;但它的兼容性絕對(duì)好于OLE DB下的ADO。所以未來(lái)的幾年中ODBC仍然是值得信賴的遠(yuǎn)程數(shù)據(jù)訪問(wèn)的解決方案,特別是Visual FoxPro用戶)。

當(dāng)然,隨著Fox用戶越來(lái)越多的使用SQL Server作為后臺(tái)數(shù)據(jù)庫(kù),Visual FoxPro 8 會(huì)在加強(qiáng)開(kāi)發(fā)環(huán)境,例如:數(shù)據(jù)字典,用戶可以方便的查看、維護(hù)數(shù)據(jù)源的表、視圖、存儲(chǔ)過(guò)程、觸發(fā)器等對(duì)象,以提高開(kāi)發(fā)效率。

報(bào)表工具

Visual FoxPro 8將會(huì)對(duì)報(bào)表工具進(jìn)行大幅度的改進(jìn),首先是將報(bào)表最為一個(gè)對(duì)象處理,是報(bào)表變得很容易訪問(wèn)、控制;再就是提升報(bào)表的性能,例如多細(xì)節(jié)帶區(qū)報(bào)表……;報(bào)表預(yù)覽更自由,預(yù)覽窗口將不再是模式窗口,由于窗口可以是任意指定的表單……;報(bào)表顯示的數(shù)據(jù)可以與報(bào)表一起保存,這樣報(bào)表就可以作為一份歷史文檔……

當(dāng)然,微軟也有可能將Crystal Report內(nèi)置到Visual FoxPro里去,但我堅(jiān)信:Visual FoxPro 8一定會(huì)在報(bào)表問(wèn)題上給我們一個(gè)答復(fù)!

調(diào)用API更方便

我覺(jué)得直接調(diào)用API不是最佳的編程方法,但有時(shí)沒(méi)有辦法,只得調(diào)用。Visual FoxPro 8會(huì)支持“結(jié)構(gòu)”這樣的數(shù)據(jù)類型,可視控件都會(huì)帶有句柄屬性,這樣就可以在Visual FoxPro中簡(jiǎn)便的使用API的各項(xiàng)功能,不像現(xiàn)在明明是很常見(jiàn)的API調(diào)用,在Visual FoxPro中卻很麻煩……

界面的改進(jìn)

我直言不諱:Visual FoxPro的界面效果簡(jiǎn)直是微軟的恥辱!如果Visual FoxPro 8在這方面會(huì)為我們帶來(lái)一些清新空氣的話,這里有兩種可能:我想微軟會(huì)在現(xiàn)有的基礎(chǔ)上升級(jí)整個(gè)界面以及內(nèi)置的可視化控件,使他們符合Window的發(fā)展潮流,更規(guī)范、更流行;也可能Visual FoxPro 8將加入.Net系統(tǒng),繼承那個(gè)公共運(yùn)行庫(kù)提供的美好的界面。筆者以為:如果微軟準(zhǔn)備改善Visual FoxPro難看的界面,采取第一種方案的可能更大。(哈哈,我有猜得差不多?。?br>
以上的猜想(更是美好的愿望)在加上編譯加密的愿望可能是所有用戶對(duì)微軟的期望,就讓我們看看,微軟會(huì)為我們帶來(lái)什么吧!

選擇Visual FoxPro

筆者是一名程序員,不是搞行政的、做推銷的,說(shuō)話辦事總講個(gè)實(shí)在、一就是一、虛夸是不喜歡的。說(shuō)心里話,Visual FoxPro在它的應(yīng)用領(lǐng)域既不像那些大吹大擂的人說(shuō)的那樣神奇、世界第一,更不像社會(huì)上那些一知半解、不懂裝懂的人講的那樣不濟(jì),我的觀點(diǎn)是用好Visual FoxPro足以與任何當(dāng)前流行的開(kāi)發(fā)工具抗衡,其中關(guān)鍵是:您是不是高手,您是不是把Visual FoxPro用在了它合適的領(lǐng)域。

我們?yōu)槭裁催x擇Visual FoxPro作為我們的開(kāi)發(fā)工具,因?yàn)樗麑?duì)我們有用,別的工具對(duì)我們來(lái)說(shuō)用的沒(méi)有它的得心應(yīng)手,用了Visual FoxPro我們能夠開(kāi)發(fā)出經(jīng)得起比較、經(jīng)得起市場(chǎng)風(fēng)浪、經(jīng)得起生產(chǎn)實(shí)踐考驗(yàn)的系統(tǒng),這對(duì)我們來(lái)說(shuō)就足夠了!??!

在本文的即將結(jié)束之際,筆者想讓大家看看用亞馬遜網(wǎng)站(www.amazon.com)上Visual FoxPro 7的一段英文介紹,雖然有廣告色彩,這段文字卻真實(shí)、全面的概括了 Visual FoxPro 的特色、用途:

Microsoft Visual FoxPro 7.0 enables you to build high-performance desktop, client/server, and Web database applications with its database development system. Employ its powerful data engine to manage large volumes of data, its object-oriented programming to reuse components across applications, and its built-in XML support to quickly manipulate data. Visual FoxPro 7.0 provides the tools and powerful data engine developers need to manage large volumes of data, whether they are organizing tables of information, running queries, or building full-featured database applications for end users. It helps developers achieve maximum productivity through a powerful development environment and easy-to-use visual design tools, and provides the flexibility to build all types of database applications, and to build and consume COM+ components and Web Services.

Make applications accessible to third-party tools, such as screen readers, voice-recognition devices, and automated test harnesses. You can also make Visual FoxPro data easily accessible to non-Visual FoxPro-based clients. Build interoperable applications and components through the ability to represent Visual FoxPro data as XML and to import XML data into Visual FoxPro tables. Control user actions with code that executes when databases are opened, closed, or modified. You will reduce coding time by obtaining powerful, extensible language assistance as you type. View and quickly navigate to procedures, functions, and methods in source code, dock common tools such as command, data session, and debug windows. You can create setups for your custom applications using a special version of the popular InstallShield Express developed exclusively for Visual FoxPro. The enhanced code editor reduces coding time with support for bookmarks and shortcuts, find capabilities, and case conversion.

最后,我想告訴大家一個(gè)好消息:2001年9月24日,微軟的CEO Steve Ballmer 發(fā)表了關(guān)于 Visual FoxPro 7.0的講話。他除了介紹Visial FoxPro 7的新特性之外,還代表微軟承諾:微軟將繼續(xù)推動(dòng)Visual FoxPro的發(fā)展,為全球開(kāi)發(fā)人員提供更好的支持!

原文如下:

Hi, I‘m Steve Ballmer from Microsoft, and it‘s my great pleasure to be able to talk to you about a newly released version 7 of Visual FoxPro. Visual FoxPro 7 is a great tool for building database solutions of all sizes. From multi-tiered database applications, to data-intensive COM components, and XML Web services.

I hope you‘ve heard by now about .NET, Microsoft‘s platform for next generation XML Web services. Visual FoxPro 7‘s support for XML standards, such as SOAP and WSDL, make it easy to create .NET Web services in the same environment you know and love today.

Along with full support for WindowsXP, Visual FoxPro 7‘s XML support allows integration with .NET Enterprise Servers such as SQL Server 2000 and our BizTalk Server. And XML support in OfficeXP makes it easier than ever for Visual FoxPro 7 developers to import and export spreadsheets. Microsoft is committing to improve Visual FoxPro and continue to serve the needs of FoxPro developers worldwide.

The developer community is core of us. We value the bet you‘re making on us. The time and energy you put into building great Visual FoxPro applications for Windows, and we won‘t let you down.

We‘re committed to continually improving our tools to match your evolving demands as application builders. We think we‘ve got exactly the right line up with Visual FoxPro and Visual Studio .NET, allowing you to continue to innovate and do incredible things for the customers we all serve.

I hope you agree with us that Visual FoxPro 7 is an exciting release. And I hope you join me in supporting Ken Levy and the rest of the Fox team here at Microsoft as we build a bigger, and better, and a more successful FoxPro developer community. Thanks a lot.

因此,我們的看法是:如果你想開(kāi)發(fā)出色的應(yīng)用程序并想保護(hù)你的投資,那么選用Visual FoxPro準(zhǔn)沒(méi)錯(cuò)。

 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Visual Foxpro漫談(二)
數(shù)據(jù)導(dǎo)入:VFP(visual foxpro)表文件導(dǎo)入SQL
VFP與SQL Server的連接
VFP的優(yōu)劣勢(shì)
總復(fù)習(xí)
用Visual FoxPro建立一張表的新手教程
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服