Visual FoxPro 只能局限于桌面應用程式的開發嗎?
技術在進步,軟體技術的應用不斷在拓寬,Internet 已經是眾多開發工具競相支援的應用領域。Visual FoxPro 從版本 5 開始不斷擴充對Internet的支持,到最新的Visual FoxPro 7 更是增加了對Web Service的支持。我們可以把Visual FoxPro 對Internet的支持分為三大部分:
第一,簡單的HTML的轉換。Visual FoxPro 自帶的“Web 發佈”就是這類型的工具,利用HTML和DHTML的模版,支援Visual FoxPro資料的Web化,這是一種全靜態的 Web 支援。
第二,適合於企業內部使用的 Active Document 技術。是不是希望快速、簡單的把Visual FoxPro應用程式轉變為Web 應用程式,這個Active Document 技術就是最佳的選擇。它支援 App 程式運行在IE中,它的缺點是:在用戶端必須安裝Visual FoxPro的運行庫、用戶端與資料庫間依然是緊密的有狀態的關係,屬於F/S構架——只是介面能夠運行在IE之中了。它的開發快速以及它依然基於傳統構架,決定了這個技術只能運行在企業內部,一般不能在廣域網路絡中發佈。
這技術是Visual FoxPro 6提出的,當時在Tool功能表裡還有一個專門的功能表項目。到了而今的Visual FoxPro 7,這個功能表項目已經取消了,但並不是說Visual FoxPro 7不支持Active Document,只是這種並不出色的技術沒有必要再放在醒目的位置了。
第三,基於COM 的 Web 應用。
Visual FoxPro真正能被用於Web開發,就是通過 COM 支持的。
這裡您要有個認識,作為資料庫開發工具,Visual FoxPro 不是FronPage這樣的用於開發Web 介面的工具(也許未來的 Visual FoxPro 會支援 Web 介面的開發)。Visual FoxPro 完全是作為 Server 運行在網站的後臺,為各種應用提供服務。使用 Visual FoxPro 編寫的 COM 元件能夠被IIS支援,壓在後臺進行各種運作——這就是真正意義上的Visual FoxPro 的Web應用,也是典型的多層構架的中間層!
這個階段,Visual FoxPro對Web的支持有可以劃分為三個層次:
FoxISAPI
這是最先登場的技術,當年ASP技術還沒有出現的時候,我們在IIS裡就可以通過ISAPI技術實現動態網頁開發。
Web Server
ASP技術出現了,我們知道ASP技術的一大特色就是支援伺服器端的組件的應用。用Visual FoxPro的編寫的COM組件就能運行在IIS裡,供ASP調用。
Web Service
這是Visual FoxPro 7的新特性,也是當前最熱門的技術。它與Web Service的最大不同就是:Web Server 元件只能通過ASP程式調用,而Web Service可以供任何系統在全球範圍調用,無論用戶端的硬體平臺、軟體平臺,只要它支援SOAP、支援XML就可以了。更誇張一點說:只要能上網,就可以享用 Web Service 提供的服務!
有人也許會問:我可以用VB、VC++建立物件元件時,為何我要用Visual FoxPro 來建立相同的組件? 微軟對這一問題有專門的評論,大意為:快、重複使用性、跨語言重複使用性。“快”是指用Visual FoxPro開發的元件擷取、處理資料都極為迅速,並且Visual FoxPro能夠非常迅速的建立字串。到底有多快,我想資料處理、存取的速度大家平時都領教過了,字串生成速度我這裡有個資料不妨一看,這是臺灣的一位高手做的試驗——將1M的資料寫入文本中,結果VC++ 6.0程式用了3.5秒、VB 6.0程式用了11秒、Java 1.1.5用了24秒、Visual FoxPro 6.0用了7秒;“重複使用性”是指Visual FoxPro具備OOP的功能;“跨語言重複使用性”是指Visual FoxPro編寫的對象編譯以後成為COM、COM+物件元件,這樣就可以在其他語言中使用它了。
不要以為Visual FoxPro是“低端產品",無論從資料庫(DBF Base)品質還是開發環境評價Visual FoxPro,它都是一個“高端工具”。
許多人認為Visual FoxPro只能用來開發單使用者系統或是檔案伺服器構架的小型網路系統——這是謬誤——這種無知的言論在許多講C/S、三層構架的書中都有(特別是一些VB、PB、Delphi的資料庫程式設計書)。我可以很負責任的告訴大家完全可以用Visual FoxPro開發C/S結構的系統。這裡說的C/S構架絕對是正宗的,不是用什麼F/S構架在糊弄大家。在C/S構架中我們常常選擇Visual FoxPro作為用戶端開發工具,以Oracle、SQL Server等網路資料庫壓在後臺,使用Visual FoxPro內置的Remote View和SPT技術,這樣就可以完美地解決問題。這裡不能詳細展開,只特別介紹Visual FoxPro的本地引擎在開發中的作用。Visual FoxPro的本地引擎特別強大(上文我們說過處理百萬條記錄不費吹灰之力),我們在設計系統時可以十分簡單的將遠端資料與本地資料結合,很簡單、很有效地控制網路資料流程量、提高系統工作效率(我看過不少VB、Delphi、PB的書,他們很少在怎樣控制網路資料流程量、提高系統工作效率論述,不知是不屑一顧,還是其他什麼原因)。
我認為Visual FoxPro的本地引擎在C/S構架下起碼有三項偉大的用途。其一:非經常變動資料的本機存放區。我國的郵遞區號與地區的關係是相對穩定的資料,而且資料量也不是太小,我想總有上千個記錄(我沒仔細考察過具體情況),我們把這些資訊存儲在用戶端的電腦中,就可以在使用郵遞區號及其相關資訊時從本地得到資料,這樣能使高系統效率同時節省網路資源(這是C/S開發的重要原則),只在郵遞區號發生變化時在伺服器上統一更新,下載更新客戶機上的資料。如果用別的軟體實現同樣的功能,絕對比Visual FoxPro麻煩而且效果絕對不及Visual FoxPro,這因為Visual FoxPro的資料引擎直接支援遠端資料讀取,能很好的融合本地資料與遠端資料;其二:離線數據包。單位裡總有人出差,在千萬裡路之外能不能拿著筆記本為客戶發訂單、與客戶簽合同,就像在自己的辦公室一樣?當他回到公司時只要把筆記本連到伺服器中,發送更新就行了。Visual FoxPro的離線視圖是經濟且高效安全的方案(當然您可以使用遠端撥入或建一個Web網站,這些Visual FoxPro可能幹)。其實離線資料包還有一個重要的功能:當下載的資料是大量的(除非萬不得已請不要這樣設計系統),這種情況下使用離線視圖可以資料集自動轉化為物理表,充分利用Visual FoxPro的高速與靈活,完成後連線更新後端資料來源——一切都很簡單。我認為:離線視圖絕對是Visual FoxPro在C/S系統中的一個賣點,雖然ADO也支援類似的東西,但肯定不及Visual FoxPro有效率;其三:資料驅動。您是否知道,Visual FoxPro中絕大多數檔案格式實際上都是DBF檔,如DBC、SCX、FRX等,他們都可以由Visual FoxPro的本地引擎驅動完成複雜的任務。在設計C/S結構時如果要存儲使用者設置、自訂檔案格式,用Visual FoxPro的本地引擎幫忙絕對比其他軟體簡單,因為你用的是換湯不換藥的方法,但它簡單、有效率。
Visual FoxPro 開發C/S系統時,最與眾不同的特色就是對遠端資料的操控是通過本地資料庫來實現的,Remote View、Connection都作為本地資料庫的物件被管理起來,完美的銜接本地資料與遠端資料。這種在用戶端建立遠端資料邏輯的做法,與最新的有相似之處!
在三層構架中,Visual FoxPro可以充當任意一層的任務,但本人以為大中型系統的資料庫部分應以網路資料庫為主。用戶端介面用Visual FoxPro也是可以的,但一般限於企業內部,在Internet上我們通常使用IE作為客戶介面。在三層構架中Visual FoxPro最勝任中間層的開發,它簡單(開發難度與普通的Visual FoxPro專案相差不大)、快速的字串生成、支援COM技術、它支援(MTS)COM+技術、它支援XML(Visual FoxPro 7.0提供3個與XML有關的函數)、它具有強大本地資料引擎、靈活的資料處理方式、它支援多執行緒的服務元件的開發。
可能有人要問:用ASP+指令碼語言一樣可以開發Web系統,何必加個中間層。的確,目前在市面上與多討論Web的書都直接使用指令碼語言來開發整個系統,這是十分不正確的做法,甚至有寫書還說硬體越來越快,因此使用指令碼語言來開發整個系統並沒有什麼關係。會說出這樣話的作者通常都是沒有實際開發Web應用經驗的人。指令碼語言,如VBScript是一種解釋性語言,運行效率很低,他們只合適作為膠水程式。開發Web系統正統的做法是:把應用邏輯編寫成COM、DCOM物件,然後用少量的指令碼語言來驅動/使用這些物件。這樣系統開發時工作量會大一些,但它符合開發任何資料庫應用程式的最基本的原則:分離應用邏輯與使用者介面。這樣系統就會變的容易維護了——你可以經常變換那些膠水程式來改變Web頁面,應用邏輯變換時你又可以改變某一個邏輯物件,而不用為雜亂且關係複雜的代碼發愁。再者,由於Visual FoxPro是高效、靈活的資料處理語言,任何商業邏輯都可以用它來代碼化,並且您可以獲得幾十倍甚至上百倍於ASP+指令碼語言的運行效率,以及更為強健的執行效果。
Visual FoxPro 的語言看上去蠻難的。
人們在讚揚Visual FoxPro始終是褒揚他的易學易用,我不同意這種觀點(我不知道他們站在什麼立場上說話)。我看問題的角度是“成為一名還過得去的 Visual FoxPro 程式師”,我的結論是Visual FoxPro 作為一個開發工具並不是好學的。這不是說Visual FoxPro的語法、概念像C那麼繁複,而是指:即使是簡單的應用,也要掌握很多Visual FoxPro的概念、語法、函數,可能還要較深入瞭解OOP——往往讓人摸不到深淺。比如,拿資料庫系統最重要的功能——查詢來講,Visual FoxPro就“花樣繁多”。我曾統計過,不算“List、Browse”等互動式命令,Visual FoxPro起碼支援4條命令(Find,Seek,Locate,Select-SQL)、3個函數(Lookup(),Seek(),Indexseek()),(當然其中有的已經淘汰)這些命令的關鍵字、函數的參數眾多,有的要求索引, 有的可以用索引但要求優化索引……而這在VB、Delphi中絕對就只是兩三個方法的事情。從上面的例子中如果您只看到了Visual FoxPro的繁雜,那麼您就完全錯了:在VB、Delphi實現查詢功能的原理與Visual FoxPro應是一樣的,但他們封裝了許多環節,而Visual FoxPro就把許多東西更低階(當然不如VC++那麼低層次,但是已經比使用物件的語言難多了)的展示給我們,所以Visual FoxPro的開發者往往比使用其他的開發工具開發者更會思考、更懂得的資料庫開發的真諦,因為工具逼迫他們朝這個方向努力……
用Visual FoxPro有助於提高程式師對資料庫概念的理解。許多在Visual FoxPro程式師中不是問題的問題往往成為那些使用物件處理資料的程式師的噩夢。比如在Visual FoxPro中資料緩衝、交易處理都是重要的概念(事實上要幹活就必須瞭解這些東西),在其他開發環境中一味強調方便快速往往忽視程式師的基本概念培養,編出的東西要麼效率不高、要麼老出問題。讀書人都懂得:基本概念、基本理論是命根子,這就是Visual FoxPro帶給我們的好處。
有趣的是Visual FoxPro繁、難也就到這個程度了 ,他的學習難度曲線是所有語言中最平穩的——不像在有些語言中,基礎開發十分容易,一旦深入卻難度很高。在Visual FoxPro中初級應用、中級應用、高級應用的難度差異很小——就是那些似曾相識的語句、易於理解的函數。Visual FoxPro的這種高級應用不太難,初級應用不十分容易的特性,對初入門者來講是無法體會其中的妙處的,這就造成了Visual FoxPro的不太友好形象;
同時,Visual FoxPro的難度卻帶來了很多的好處(前文我已談了很多),Visual FoxPro比其他語言在資料處理上更快速、更靈活,資料處理方式更多、更完備。設想一下用Visual FoxPro開發資料物件時,我們可以使用豐富多彩的語句、函數,實現十分複雜、變化多端的功能,用其他語言開發資料物件,它們的功能只能是建立在已有的資料物件的功能之上(這叫繼承),變化就少了,功能就弱了。如果要實現Visual FoxPro的Xbase+SQL 那樣靈活、強大的功能恐怕要使用底層的API了——這太可怕了!
OOP不僅是指“物件導向”的開發環境,更是一種開發思想、開發技術,Visual FoxPro 在後者上做得更好。
我們講過Visual FoxPro完全支援OOP的開發,但有趣的是在資料處理方面,微軟實際上沒有提供什麼現成的物件(FFC是Visual FoxPro 6.0才有的,且封裝性、適應性都不盡如人意),這一點我不知是Visual FoxPro的福氣還是禍害。說“福氣”這將逼迫程式師掌握這門並不太簡單的技術(可能用“思想方法”更恰當),而不是簡單地使用物件。OOP對於中間層的開發來講是很重要的,因為COM元件必須是建立在OOP思想上的,要開發這種元件就必須掌握OOP技術;講“禍害”這使Visual FoxPro變得不易於學習和使用了(就我個人而言,真正體會到“用Visual FoxPro應會編制資料處理物件”這一問題也是在使用了Visual FoxPro好長時間之後的事情了)。事實上現在很多誹謗攻擊Visual FoxPro的人都沒有深刻的認識這一問題——他們只感到Visual FoxPro用起來不及Delphi、PB、VB容易,但他們從不想該怎樣開發資料處理物件,到編寫COM元件時就要他們的命了。那些“精英們”大多不懂OOP,他們只懂“點”操作符號——仿佛對象的使用就是OOP,他們有什麼資格來批評我們呢?
Visual FoxPro的介面能力真的很差嗎?
我認為作為資料庫系統的開發工具微軟為我們提供的那些內置控制項加上十幾個附送的ActiveX控制項已經夠用了。
我們討論Visual FoxPro控制項應從兩方面入手,第一就是介面美觀問題,再就是資料處理、分析是否方便。很多人很在意的前一個問題,我倒是不以為然——控制項不多特別是美化介面的控制項不多並不代表Visual FoxPro就開發不出賞心悅目的軟體,我的感受是軟體介面的專業化程度、高級別的審美、整體的效果要比個別的介面特效重要千萬倍,實際效果可要好上千萬倍。看看國外用Visual FoxPro編制的程式您就會明白這個道理了;我對Visual FoxPro的不滿在於資料處理、分析控制項不全,特別是缺少了一批資料分析控制項。比如沒有可以與資料捆綁的圖表控制項、沒有可以列示捆綁交叉表的表格控制項、沒有可以捆綁資料的樞紐分析表格控制項……在這個問題上Visual FoxPro確實應該向Delphi、PB等軟體學習,這是我們對未來的Visual FoxPro的期望!
Visual FoxPro與OLE DB、ADO
ADO是Windows環境下主流的資料存取的解決方案,那些以物件運算元據的語言基本上都使用ADO實現資料存取,如:VC++、VB、Delphi。在Visual FoxPro的開發環境中好像看不到ADO的影子,是不是Visual FoxPro不支持ADO呢?ADO其實是一組COM物件,Visual FoxPro支援COM,當然支持ADO。
我認為:Visual FoxPro對ADO的支持只是停留在較低的水準。這並不是說Visual FoxPro限制了什麼ADO的功能(所有功能都能用),而是指:用起來不方便,不像在VB、Delphi中方便。這種不方便主要體現在ADO的Recordset無法與Visual FoxPro的內置控制項捆綁。其原因是:Visual FoxPro 不認識ADO的Recordset,只能將記錄逐條讀取,而不是一下子認得整個Recordset。這樣資料就不能被捆綁了,同時也不能對ADO直接使用Visual FoxPro強大的資料處理功能(ADO是用來存取資料而處理資料還要靠客戶軟體)。
就象Visual FoxPro使用ODBC連接遠端資料來源那樣,ADO通過OLE-DB與資料提供者對話。 (By the way: Visual FoxPro 7是OLE-DB提供者,這樣就可以 通過正宗的OLE-DB驅動程式在其他開發工具中使用ADO存取Visual FoxPro資料了。)
ADO能為Visual FoxPro帶來什麼?首先要注意的是:ADO與Visual FoxPro的資料引擎是毫無關係的系統,從某種程度上講ADO的出現為Visual FoxPro提供了一種全新的遠端資料處理方式。
ADO是多層應用程式中資料集合傳遞的最好解決方案。如果我們用Visual FoxPro開發了一個中間層系統,用VB開發了使用者介面,當中間層要傳遞一個cursor到VB的用戶端就不可以使用Visual FoxPro的cursor或DBF,因為VB不認得他們。使用ADO的Recordset就可以解決問題,因為大家都認得他;Visual FoxPro 只能通過Visual FoxPro 7支持XML後才能彌補Visual FoxPro本地引擎在應用程式傳遞資料集的不足。
ADO可以存取非關係型數據庫。ADO是微軟的Universal Data Access構架的主將,它可以存取Excel等非關聯式資料資料庫的資料。通過ODBC存取遠端資料的Visual FoxPro就無此能力了。但是我使用了ADO存取Excel後很失望,因為連接必須是獨佔的,所以這種功能帶給我們的幫助只是有限的!
ADO可以彌補Visual FoxPro在遠端資料存取時的不足之處。譬如Visual FoxPro不認得SQL Server中nText、nVarchar、nChar等資料類型,但ADO可以。
在Visual FoxPro使用ADO存在如下缺點:
Visual FoxPro只能通過COM的方式識別ADO的Recordset,不能像表格那樣讀寫它,這樣就出現了兩個問題:Recordset無法與Visual FoxPro的內置控制項捆綁;無法直接使用Visual FoxPro強大的資料處理功能(ADO是用來存取資料而處理資料還要靠客戶軟體)。
Visual FoxPro中使用代碼實現ADO的全部功能,但代碼量大、書寫麻煩。
對待以上不足Visual FoxPro開發小組在Visual FoxPro 6推出不久後就發佈了一個叫VFPCOM.DLL的元件,可以用它部分解決ADO的Recordset與Visual FoxPro的cursor的轉換和ADO事件的綁定,Visual FoxPro 更是內置支持COM事件綁定。在本文的第一版中,筆者曾有這樣的希望:“Visual FoxPro 更具效率的支援ADO”。現在我的看法有了一些改變,我認為在 Visual FoxPro 處理資料,無論是本地、還是遠端資料,無論是什麼構架的系統,最佳的解決方案認識內置的資料引擎,而不是現在流行的ADO,現在 Visual FoxPro對ADO的支持程度已經足夠了!
Visual FoxPro的資料引擎與ADO相比有什麼優勢呢?
Visual FoxPro資料引擎系統資源耗用小,ADO畢竟是COM組件要花用更多的資源。
作為系統共用元件,使用ADO可能會在不同應用系統中產生ADO的版本問題,這就像我們常遇見的ActiveX的控制項版本問題。
ADO只是資料存取元件,它沒有資料處理功能,要處理資料必須使用客戶應用程式,如VB、Delphi。Visual FoxPro資料引擎同時支援資料存取、資料處理,我已多次強調Visual FoxPro在這兩方面的偉大功能;
ADO沒有本地資料庫作為強大的支援,有需要將遠端資料暫時存放在物理檔中ADO絕對不及Visual FoxPro。Visual FoxPro的資料庫是桌面資料庫中最好的,遠端資料暫存其中不僅方便,而且伸縮性強。
使用ADO從資料來源獲得資料以後,再要對資料集合進行分組、查詢、匯總是非常麻煩的事情,但是Visual FoxPro支援對Cursor的資料處理,我們可以使用絕大多數XBase語言(除了ZAP和Pack之類的表維護語言之外),還可以對Cursor執行SQL語句——這種強大的威力,絕非ADO所能比擬。
開發單機程式時,絕對不要使用ADO,這樣做既沒開發效率也沒運行效率;開發C/S系統時我們應選用Visual FoxPro的SPT和Remote View,它們完全可以很完美的解決問題(已經有很多很多成功經驗),不需要捨近求遠地使用ADO;在中間層開發時,可以考慮使用ADO,我們為在此種情況下使用ADO的開發效率是蠻高的,因為這時所有的代碼都要我們用一句、一句的寫出來(在其他開發環境也一樣),Visual FoxPro的語法簡單再加上Visual FoxPro 7的極為強大Intellisense功能(真的很快並且可以由用戶自訂),也許我們還會占些便宜的。
雖然ADO與Visual FoxPro是完全無關的系統,但他們卻有共同的母親——FoxPro 開發小組,原來ADO的游標集(Cursor Engine)是他們開發的。如果你同時瞭解ADO與Visual FoxPro,你會發現ADO的很多思路與Visual FoxPro一模一樣……我總是拿這個典故說服那些不相信Visual FoxPro的人:最流行的ADO的游標集是FoxPro 開發小組寫的,有什麼理由懷疑Visual FoxPro的資料引擎——它是世界上最棒的!
Visual FoxPro是一種歷史悠久的產品,很多使用者是從FoxBASE到FoxPro到Visual FoxPro,這樣一步一步過來的。歷史的積澱多了,歷史的包袱也重了——許多程式師往往抓住老產品而忘了深入鑽研新產品的新特性,這是一種悲哀。
我遇到許多所謂會使用Visual FoxPro的人,還口口聲聲叫“Query Design”為“RQBE”,朋友那可是DOS時代的概念了。
很多人不仔細鑽研Visual FoxPro,只是從其他工具中看到某項功能,憑空想像就說:Visual FoxPro不支持的。Delphi中特別指出它有異構資料關聯能力,比如:父表是SQL Server資料,子表是Access資料,要求建立關聯,實現“一多關係”。在Delphi要求使用特別的SQL語法來實現該功能。Visual FoxPro的文檔裡好像沒特別說明這項功能,是不是沒有呢?如果你深刻理解Visual FoxPro的遠端視圖及Cursor的用法,答案很容易得到。事實上,用Visual FoxPro能更直接、簡單實現的實現:建兩條“連接”、兩個“遠端視圖”,對子表加索引,Set relation to,set skip to……
反過來Visual FoxPro能實現的功能,Delphi的BDE(Delphi的本地引擎)卻不能:Visual FoxPro的遠端視圖能夠將多個表關聯後的結果集設定為“可更新”,並在資料變動後自動產生Update子句分別更新後臺資料。例如:對SQL Server中Pubs資料庫建立連接,新建遠端視圖為:
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
這是四個表間的關係,算是比較複雜的SQL語句。別擔心,這一切在Visual FoxPro只不過是用滑鼠在“視圖設計器”點擊幾次就行了。在您對視圖進行“添加、刪除、修改”並發送更新時, Visual FoxPro會進行分析地智慧,產生Update字句分別將變化更新到後端若干個表中。而Delphi的BDE只能對Xbase資料來源有此的作用,對其他的資料來源都無此功能。Visual FoxPro可以支援所有的ODBC資料來源(只要資料來源本身支援),如:Oracle、SQL Server,Access……當然在Delphi 5.X中可以通過ADO彌補此缺陷,但Visual FoxPro同樣支持ADO。Visual FoxPro的程式師要有這樣的信心:Visual FoxPro為我們提供了最好的本地引擎!
古人雲:欲善其事、必先利其器。所以我們不要指責工具怎麼、怎麼,多看看自己用好了沒有!
Visual FoxPro與其他開發工具的比較
這其實是一個很傻的話題,選擇何種開發工具完全是由於程式師的面臨的任務以及個人的喜好決定的。只要您選用的工具能夠勝任您從事的專案,只要您對開發工具有足夠的造詣以應付多變、複雜的工作,只要這個工具還在繼續升級,您就沒有理由更換工具,更沒有必要摻和到這種無聊的討論中去。
任何工具都有其優勢與弱勢,產品定位更是各自不同,每個程式師都覺得自己的選擇是最好的,別人都是愚蠢的。以下的討論只是無聊的筆者發出的無聊的言論,您大可掠過不看。
談論Visual FoxPro,我們必須注意這樣一個問題:Visual FoxPro 是幹什麼用的。毋庸置疑,它是一種資料庫系統的開發工具。我個人認為,到目前為止在Microsoft公司的所有開發工具中,Visual FoxPro是開發資料庫應用程式的最佳產品。我們必須承認這樣的事實:從一開始,Visual FoxPro 就是為處理資料而設計的,它運行速度快、功能強大、而且非常靈活。
有很多人老喜歡拿Access與Visual FoxPro 比較,對此我總不屑一顧,且讓我們看看微軟的評論吧!微軟原話如下:“Microsoft Access 是 Office 中的資料庫,也是微軟所銷售的軟體中,使用最廣且最容易學習的資料庫工具。如果你是資料庫的新手,如果你要使用Microsoft Office來建立應用程式,或者你想要一個相當便利的互動式產品,那麼就選擇Access。Visual FoxPro 是用來建立關係型數據庫應用程式的一種功能強大的RAD工具。如果你是一位元以建立關係型數據庫應用程式維生的資料庫開發人員,而且你希望速度與功能都達到極限,那麼請選擇Visual FoxPro。”(這段話在今年Visual FoxPro 退出Visual Studio後,微軟又重複了一次,強調Visual FoxPro是專業開發人員的開發工具,而不是Access 那樣的普通用戶的辦公平臺。)
根據我的經驗,Access的MDB資料庫適用于20萬條/表的資料量的應用(它比Visual FoxPro資料庫的唯一長處是:所有的資料庫元件都在同一個MDB檔裡,而Fox的資料庫可能有多個檔組成,顯得淩亂。),資料量再增加的話,不是說Access不能處理了,而是效率不行了——查詢、索引都很慢。Visual FoxPro能處理百萬計甚至上千萬計的資料量,這都是有實踐根據,在過去的20多年裡,特別是大型網路資料庫沒有平民化的年代裡,業界就是依靠DBF資料表來管理資料的,毫不誇張Visual FoxPro是能夠安全、高效處理大資料量的專業工具。
有很多人拿Visual FoxPro與VB、Delphi甚至是VC++做比較,這是很幼稚的,後面三者是程式設計語言,而Visual FoxPro是資料庫系統的開發工具,天生分工就不同。
我聽說過這樣的典故:Foxmail最初是用Visual FoxPro編寫的(所以叫做FoxMail),後來改用Delphi編寫。如果這是事實就很能說明問題,Visual FoxPro是資料庫開發工具以它編寫郵件客戶軟體有點勉為其難,即使成功了效率也不會很高,但如果是一個用Visual FoxPro寫的管理系統中要求有郵件功能,Visual FoxPro則完全可以做得很好。
Visual FoxPro作為資料庫開發工具,它為我們提供了十分強健、高效的資料引擎,它容量大、速度快、靈活、健壯,所以用Visual FoxPro開發單使用者資料庫絕對比其他所有軟體來的高效——曾經有人嘲笑VB處理5、6萬條記錄就趴下,但我們的Visual FoxPro處理百萬條記錄也不覺吃力,所以Visual FoxPro的開發人員無論在什麼時候都要注意發揮Visual FoxPro的資料引擎的威力,這樣才能立於不敗之地。VC++很厲害,但真正地用好它不容易, 開發效率也不高。如果使用VC++開發應用程式還象VB那樣只會使用控制項,那麼還是別使用VC++了(這叫掛羊頭賣狗肉),再者Visual FoxPro本身是VC++編寫的,是歷代最優秀的程式師智慧的結晶,為什麼有了VC++還要花精力編寫Visual FoxPro,這本身就很說明問題。
又有人把Power Builder請出來與Visual FoxPro作比較,大家都是資料庫應用程式開發環境,好像PB比Visual FoxPro厲害。就資料庫系統的開發而言,Visial FoxPro可以開發單使用者系統、網路環境下的檔案伺服器系統、客戶機\伺服器系統、Web Server、資料處理的COM元件、Web Service,可以說除了Web介面無法開發之外,凡是與資料庫系統有關的開發領域Visual FoxPro都很好的支持。PB的起點在客戶機\伺服器系統,也能很漂亮的完成工作,此中取捨全憑個人喜好;另外,PB的成本很高。據我所知它的價格十分昂貴(有人戲稱說PB是世界五百強才用的起的產品),而Visual FoxPro才賣幾千人民幣。當然,這個觀點您可以不接受——在中國軟體是沒有價值的,每張只賣5元人民幣;還有PB的開發方式與眾不同,用了他以後再改學別的會比較困難;最後退一萬步講,您要變換程式設計工具,我也不贊成改用PB,因為PB再好也是一個資料庫開發工具,從這上面講與Visual FoxPro是一個級別的東西,您想變換工具一定有更多的需求,我看用C#或Delphi會是更佳的選擇。
所有這些語言與Visual FoxPro相比,最大的區別就是:Visual FoxPro是程式設計語言與DBMS的完美結合,而Vc++、Delphi、Vb、PB都只是程式設計工具,而不是DBMS。Visual FoxPro的這一特性,決定了它更合適與任何類型的企事業單位,我無法想像——為了簡單的查詢還要用Vc++、Delphi、Vb、PB編寫一個Exe檔,使用Command視窗多好!
又有人把網路資料庫如Oracle、SQL Server與Visual FoxPro相比較,說了Visual FoxPro一大通的壞話,這種人其實很傻,你大可對他嗤之以鼻。大型資料庫與桌面資料庫在系統開發中的作用是不一樣,兩者是相輔相成的。我們應該把注意力放在“怎樣發揮兩者資料庫引擎最高效能的問題上”,而不是去爭論孰優孰劣。這種爭論就好比是評論是男人漂亮、還是女人美麗那樣——毫無意義。
Visual FoxPro 從Visual Studio 中分離出來了
2001年2月26日,微軟宣佈將Visual FoxPro 7從Visual Studio 中分離出來,這是一個好消息還是壞消息呢?我們來分析一下:
我們失去了什麼
我們先來觀察,Visual FoxPro不成為.Net語言,在技術上損失的是:不能開發基於.Net的Web應用程式。
Visual 是一種擅長于開發Web應用程式的工具,過去與現在微軟霸佔著"桌面應用程式"應用市場,現在微軟要吞噬現在由其他公司控制的大型網路應用市場,於是推出了.Net構架,Visual 就是開發基於.Net的應用程式的RAD(快速開發環境)。
筆者認為:起碼在可知的一兩年內,我們這些用Visual FoxPro寫程式的人不會有用Visual FoxPro開發大型Web應用需求,客觀上絕大多數企業也不會有自建一個電子商務網站的需求,我們並不會因為Visual FoxPro不是.Net語言而失去我們的市場——普通的企業級(單用戶構架、File Server構架、(兩層、三層)客戶機\伺服器構架)的應用。等.Net真正熱起來,那將是幾年後的事情了!
當然作為.Net語言也可以開發桌面應用程式,Visual FoxPro成為.Net語言不是更好嗎?筆者的看法是:不一定。一位網友說:的語法像VC++又像JAVA,已經完全不像BASIC語法了,等於是要重新學習另一套語言了,有這種感覺的VB程式師很多,聽說國外有很多VB程式師還“憂心忡忡”的。連微軟也承認:VB 6是差別很大的語言。
假設VB變化的只是語法特色(這已經夠厲害的),那麼如果Visual FoxPro現在成為.Net語言,其標誌性功能的損失一定比VB更多!我們認為:這其中最不能讓大家容忍的就是:Visual FoxPro的資料引擎和資料處理手段將損失殆盡,說實話我們中多數人使用Visual FoxPro就是看中了它在資料處理上的無與倫比優勢。.Net語言使用公共運行庫(Common Runtime Language),資料庫方面的功能是通過外掛ADO等元件完成的。在技術不成熟的現在,讓Visual FoxPro運行在CLR上,勢必只有三種選擇:取消Visual FoxPro的資料處理元件,讓它使用元件處理資料;把Visual FoxPro的資料引擎加入公共運行庫;Visual FoxPro的資料引擎做成一個元件。可見這三種選擇沒有一種是合理的,即使成了,那麼Visual FoxPro也就成為了一個四不像的東西。
Visual FoxPro
Visual FoxPro 能夠很好的支持XML、Web Service、COM。通過它們,Visual FoxPro就能整合在一起,並能開中最最熱門的話題:Web Services。
客觀上,有利於Visual FoxPro 的發展
Visual FoxPro作為Visual Studio的一員並不能很好的發展“Fox的事業”,這個觀點是各國狐友的普遍共識。作為Visual Studio的一員,Visual FoxPro更多的像其他Visual Studio產品看齊,忽視自身特色的發展,忽視用戶的需求;產品升級、服務包的提供週期變長(要等其他產品的完工),如果Visual FoxPro 7不分離出來,發佈期起碼要晚半年。將Visual FoxPro從Visual 中分離出來,最起碼以上兩個問題會有很好的改觀,特別是Visual FoxPro會更重視用戶的需求。
獨立面對挑戰
Visual FoxPro從Visual 中分離出來最大的壞處是:必須獨自面對市場。說白了就是:能不能賣的好?如果Visual FoxPro 7.0的生意還不錯,那麼Visual FoxPro就會發展的很好--這是很簡單的道理。
在微軟所有的開發環境中,Visual FoxPro是唯一內嵌資料引擎的——VC、VB都必須外掛資料處理引擎,如:DAO、ADO等,當然VC可以使用底層API調用來完成資料庫處理方面的任務——這就是Visual FoxPro的特色--為資料處理而生,但是如果現在盲目的把Visual FoxPro併入Visual 的話,Visual FoxPro的這一特色必然不能保存,這對微軟、對用戶都是損失。VB、VC則沒有這個問題--反正它們不內置資料引擎,只要.Net可以調用資料處理元件就可以了!
Visual FoxPro 7 的特性
前面已經提到多次,Visual FoxPro 7 已經在2001年5月中旬正式發佈的,6月份在美國上市。現在不少網友已經得到了Visual FoxPro 7的英語正式版,使用之後,產生了種種評判。在美國人們認為,Visual FoxPro 7是繼 Visual FoxPro 3以後 Fox 發展史上最具有“革命意義”的版本,評價是很高的;而在國內,不少嘗鮮者感歎:這是微軟不好意思說SP的產品,簡直就是Visual FoxPro 6+SP6……兩種評價相差這麼大,誰是誰非呢?
筆者在2000年底就得到了它的Bata 1版,2001年7月得到了英語正式版。初次見面確有失望之處——介面改觀太小了——除了幾個視窗可以停放、功能表上多了幾個圖示之外,幾乎與Visual FoxPro 6沒有區別,最無法容忍的是視覺化控制項一個也沒有增加……
我耐著性子讀著幫助瞭解Visual FoxPro 7的新特性,慢慢的我有了這樣的感受:有了Visual FoxPro 7我決不用Visual FoxPro 6,這也是我對Visual FoxPro 7的評判,雖然它不完美,有的地方不盡如人意,我還是覺得給它打個80分總是應該的。接下來筆者就談談使用的感受:
巨好的開發環境,這主要體現在六個方面:
IntelliSense(智慧感知輸入提示)、Object Browse、Document View、Task List(任務列表)、最近使用過的檔記錄、視窗停放。
IntelliSense。我以前常常羡慕VB程式師,他們在VB 5時就擁有了IntelliSense工具,於是他們不必要記憶大量的命令、函數、在對外來的ActiveX、COM程式設計時也能輕易的得到物件的方法、屬性、事件。
在Visual FoxPro裡,如果說記憶Visual FoxPro本身的東西還沒有什麼困難的話,對ActiveX、COM得屬性、方法、常量就頭疼了。現在Visual FoxPro 7支援IntelliSense了,並且提供了強大的用戶定義功能,在Visual FoxPro裡這是一個可組態的工具;現在Visual FoxPro 7不僅支援對內建物件、命令、函數的智慧輸入導航,更支援對ActiveX、COM的智慧輸入導航,令人興奮的是:Visual FoxPro的IntelliSense還支持最新的Web Service。完全可以自豪的說:Visual FoxPro的IntelliSense是最棒的,是可以由用戶定義的。
Object Browse。與IntelliSense一樣,在其他開發環境中早就有了,但並沒有因此降低我對它的興趣。首先,對COM物件、ActiveX的觀察工具確實很有用;最重要的是:Visual FoxPro 7的Object Browse與Visual FoxPro開發環境緊密結合在一起--可以很簡單的從Object Browse中拖逸COM物件介面到程式中,很簡單的就可以“實作”COM物件的介面。
Document View。這是一個程式編輯的輔助工具,它可以列出檔中所有的過程、方法、函數、巨集定義、標頭檔,説明程式師在大量代碼中快速導航。
Task List(任務列表)是一項貼心設計,它的功能有點像“書簽”。但比“書簽”強大的地方在於:一旦關閉檔“書簽”就釋放了,而Task List 不會。任何時候點擊Task List 專案就可以快速打開相關檔,導航到相關的地點。
就像Word那樣,Visual FoxPro會記憶用戶最近使用過檔,這樣就能減少用戶查找檔的時間。
窗口停放。顯示器越來越大、解析度越來越高,程式師的桌面空間越來越小——開發環境對內部工具表單的管理很要緊——合理組合,提供更大工作空間。在我用過的開發工具中,我最喜歡Visual FoxPro的環境配置,不滿意的是:命令視窗、資料工作期視窗、屬性視窗的淩亂。現在好了——Visual FoxPro 7支援了工具視窗停放,達到了節約空間的目的。
Visual FoxPro 7 對開發環境的改善有細微之處的變化、更有大部頭的作品。它吸收了各種開發環境的優點,融入了Fox自己的特色,值得稱道。
資料庫事件
Visual FoxPro 7 最亮麗的特色是60個左右的資料庫事件,這是自Visual FoxPro 3以來一次最大的對資料庫引擎的改善。這些事件對管理整個資料庫有很重大的意義,我們可以把維護資料庫的代碼寫在事件中,只要有相應的操作就會觸發,這樣就網羅了所有的相關動作,而不是像以前那樣寫在應用程式中!資料庫的事件應用面可能很廣,發揮它的作用還得靠大家的智慧!
XML與Web Service
Visual FoxPro 7支持XML文檔與Fox游標的轉換,真是一件令人興奮的事情,以前我們開發COM應用程式時總為資料集合傳遞感到頭疼——本人的解決方案是——模仿ADO的做法,讓客戶程式以迴圈的方式得到記錄集;當COM元件要得到記錄集時,好像就更麻煩了……現在好了,業界新標準——XML可以文本(字串)的方式傳遞資料集合,真是一件美事!
Visual FoxPro 7 支持XML,同時對SOAP也有內置的支持,這樣就使得Visual FoxPro 7成為.NET構架下的工具了,我們可以使用Visual FoxPro7輕鬆的開發、發佈Web Service,這樣我們的應用程式就可以在任何時間、任何地點被任何支援Internet的設備調用,為它們提供服務。
Web Service可是當前業界最最熱門的話題,Visual FoxPro是微軟公司推出的第一個能開發Web Service的工具。支援 Web Service,使得Visual FoxPro 程式師具備了開發新型分散式應用程式的能力。
COM以及COM+
COM元件開發的感覺特爽,不僅是開發效率的提高,更是COM元件運行的效果明顯改善。Visual FoxPro 是從5.0開始支援COM元件的開發,6.0版本開始走向成熟,6.0的SP3以後支援多執行緒元件的開發,7.0版本中開發COM元件明顯比6.0版本運行效果好,可以說是成熟、完美的技術了。
我以為Visual FoxPro 7對COM的支援可以分為兩個部分:Visual FoxPro充當COM的客戶程式、Visual FoxPro作為COM服務程式。
Visual FoxPro 7 支援COM組件的“Interface”實作,支持早期繫結。這都是偉大的革新,我們知道COM本身不支持“繼承”,所以我們無法寫出基於某個COM元件的“子類”,但我們可以通過“實作”COM元件的“Interface”,來實現多重“繼承”……
同時用Visual FoxPro 7編寫的COM元件,比以往任何一個版本的Fox都可靠,並且完全支援Windows 2000的COM+規範。微軟在宣傳Visual FoxPro 7時指出:Visual FoxPro的COM元件可以被用作工業現場的無介面資料處理,可見其穩定性。
Install Shield Express For Visual FoxPro
Install Shield 是主流的安裝程式製作軟體,在Visual FoxPro 7 裡微軟就用 Install Shield Express For Visual FoxPro 限制功能版代替了原先的安裝嚮導。更可貴的是,這個版本的Install Shield提供了中文語言包,也就是說可以生成中文介面的安裝程式了。有了Install Shield ,我們就能做出最合乎潮流的安裝程式。
新特性還有不少,您就自己看吧!還可以參看筆者撰寫的《Visual FoxPro 7漫談》一文。
軟體的升級對我們使用者是否有好處,主要是看他為您解決了多少難題、減輕了多少痛苦。Visual FoxPro 7對於高級用戶可能更有吸引力,當然普通用戶也一定會對它的超級開發環境有興趣。
Visual FoxPro 7 SP1
2002年1月16日,微軟發佈了Visual FoxPro 7的SP1。這是一個徹底的補丁包——幾乎沒有推出任何新特性。
加裝SP1能夠改善Visual FoxPro 7對XML的支援,根據筆者測試,再不安裝SP1的時候,XMLTOCURSOR()函數無法正確解析中文字元,而安裝了SP1以後,這個問題就解決了!
我們的 Visual FoxPro 8
當我們還在討論Visual FoxPro 7的時候,Visual FoxPro 8已經向我們走來了!
Visual FoxPro 8的產品代號是“Toledo”,是由FoxPro社區選出來的。
已經看到的Visual FoxPro 8 的新特性
2001年9月初,在美國舉行的“VFP DevCon 2001” 會議中,微軟Fox小組成員召集了名為“Visual FoxPro 7.0 and Beyond”的主題演講,Calvin Hsia 為到會的開發人員演示了幾個已經完成的Visual FoxPro 8的新特性,雖然都是些不大的改進。筆者個人覺得2003年Visual FoxPro 8將正式發行,但至於那是他叫不叫Visual FoxPro 8我就不知道了,也許微軟會為它改個名字……
支持自增長欄位。
用一個屬性實現,表格控制項當前行的突出色彩現實,並且在表格失去游標時,依然高亮度顯示當前行。
頁框控制項的得頁標頭支持上、下、左、右四個方位的放置。
控制項的ToolTip支援多行顯示。
所有控制項支援Windows XP的介面風格。
微軟對Visual FoxPro 8的定位
在 FoxPro Advisor 雜誌裡,有一篇名為《Memo from Microsoft》 的文章,登載了微軟Visual FoxPro 產品經理 Ken Levy 對2002年 Visual FoxPro 發展的計畫,其中專門提到了Visual FoxPro 8 的產品定位,原文是:
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 將在用戶端開發上做重大的改進、加強,這與當年微軟對 Visual FoxPro 5、6 的定位截然不同——強調Visual FoxPro 在Visual Studio中的作用,強調Visual FoxPro開發中間層應用、COM元件。現在Visual FoxPro 離開了Visual Studio,產品重新定位,順應開發者的需求,提出了 Rich Client(胖用戶端)定位!
還有就是Visual FoxPro 8可能可以開發Web Form了,也就是所謂的 distributed Web client features。
Visual FoxPro 8 不會是.Net語言
Ken Levy 還表示,Visual FoxPro 8將堅持現有的體系構架,而不會運行在.NET common language runtime (CLR) engine 上,成為.Net語言。
我對Visual FoxPro 8 的期望
以下只是筆者一家之言。
遠端資料訪問
Fox歷史上的每一次重要升級都與資料引擎有關,比如2.0時加入了內置的SQL語句和Rushmore技術;3.0時提出了完整的資料庫概念,加入了遠端資料處理的技術;7.0推出了資料庫事件的概念。筆者以為,Visual FoxPro 8可能在遠端資料的處理上有改進,我們知道現在的Visual FoxPro是通過ODBC對遠端資料實現訪問的,ADO主要使用OLE DB來訪問遠端資料,PB這樣的軟體更是有底層通道訪問各種主流資料庫;最新的中,微軟更增加了對SQL Server 7.0及2000的直接(底層)訪問,當然對其它資料庫仍然採用OLE DB來訪問。現在我們在Visual FoxPro中,要想通過OLE-DB訪問遠端資料必須使用ADO元件,但從實際應用來看ADO並非是Fox訪問遠端資料的主流方法,所以Visual FoxPro 8 應該會在訪問遠端資料方面提出更加具備效率的方法:或是對SQL Server的底層通道,或是使用OLE DB連接到遠端資料……(哈哈,這時我去年寫的,今年已經從微軟得到證實:Fox 小組正在改進Visual FoxPro與SQL Server的通訊。看來,我的感覺蠻准的!)
無論訪問怎麼通道變化,對用戶是感覺不到的,就像現在用戶感覺不到我正在通過ODBC連接SQL Server的資料一樣,只是效果更好。(注:ODBC仍然是絕對主流、穩定的遠端資料訪問方式,只是速度略微慢於OLE DB;但它的相容性絕對好於OLE DB下的ADO。所以未來的幾年中ODBC仍然是值得信賴的遠端資料訪問的解決方案,特別是Visual FoxPro用戶)。
當然,隨著Fox用戶越來越多的使用SQL Server作為後臺資料庫,Visual FoxPro 8 會在加強開發環境,例如:資料字典,使用者可以方便的查看、維護資料來源的表、視圖、存儲過程、觸發器等物件,以提高開發效率。
報表工具
Visual FoxPro 8將會對報表工具進行大幅度的改進,首先是將報表最為一個物件處理,是報表變得很容易訪問、控制;再就是提升報表的性能,例如多細節帶區報表……;報表預覽更自由,預覽視窗將不再是強制回應視窗,由於視窗可以是任意指定的表單……;報表顯示的資料可以與報表一起保存,這樣報表就可以作為一份歷史文檔……
當然,微軟也有可能將Crystal Report內置到Visual FoxPro裡去,但我堅信:Visual FoxPro 8一定會在報表問題上給我們一個答覆!
調用API更方便
我覺得直接調用API不是最佳的程式設計方法,但有時沒有辦法,只得調用。Visual FoxPro 8會支援“結構”這樣的資料類型,可視控制項都會帶有控制碼屬性,這樣就可以在Visual FoxPro中簡便的使用API的各項功能,不像現在明明是很常見的API調用,在Visual FoxPro中卻很麻煩……
介面的改進
我直言不諱:Visual FoxPro的介面效果簡直是微軟的恥辱!如果Visual FoxPro 8在這方面會為我們帶來一些清新空氣的話,這裡有兩種可能:我想微軟會在現有的基礎上升級整個介面以及內置的視覺化控制項,使他們符合Window的發展潮流,更規範、更流行;也可能Visual FoxPro 8將加入.Net系統,繼承那個公共運行庫提供的美好的介面。筆者以為:如果微軟準備改善Visual FoxPro難看的介面,採取第一種方案的可能更大。(哈哈,我有猜得差不多!)
以上的猜想(更是美好的願望)在加上編譯加密的願望可能是所有用戶對微軟的期望,就讓我們看看,微軟會為我們帶來什麼吧!
選擇Visual FoxPro
筆者是一名程式師,不是搞行政的、做推銷的,說話辦事總講個實在、一就是一、虛誇是不喜歡的。說心裡話,Visual FoxPro在它的應用領域既不像那些大吹大擂的人說的那樣神奇、世界第一,更不像社會上那些一知半解、不懂裝懂的人講的那樣不濟,我的觀點是用好Visual FoxPro足以與任何當前流行的開發工具抗衡,其中關鍵是:您是不是高手,您是不是把Visual FoxPro用在了它合適的領域。
我們為什麼選擇Visual FoxPro作為我們的開發工具,因為他對我們有用,別的工具對我們來說用的沒有它的得心應手,用了Visual FoxPro我們能夠開發出經得起比較、經得起市場風浪、經得起生產實踐考驗的系統,這對我們來說就足夠了!!!
在本文的即將結束之際,筆者想讓大家看看用亞馬遜網站(www.)上Visual FoxPro 7的一段英文介紹,雖然有廣告色彩,這段文字卻真實、全面的概括了 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.
最後,我想告訴大家一個好消息:2001年9月24日,微軟的CEO Steve Ballmer 發表了關於 Visual FoxPro 7.0的講話。他除了介紹Visial FoxPro 7的新特性之外,還代表微軟承諾:微軟將繼續推動Visual FoxPro的發展,為全球開發人員提供更好的支援!
原文如下:
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.
因此,我們的看法是:如果你想開發出色的應用程式並想保護你的投資,那麼選用Visual FoxPro准沒錯。