Visual Basic.NET基本入門系列二
VB.NET中有很多值得學(xué)習(xí)的地方,我們不能一一給大家介紹,這里主要就表單和新IDE面孔、創(chuàng)建編譯的服務(wù)器端代碼和Web服務(wù)策略詳細(xì)說明。
表單和新IDE面孔
Visual Basic.NET 的面向?qū)ο蠊δ芎軅ゴ?,但第一次啟?dòng) VB.NET 時(shí)還注意不到它??赡苣阕⒁獾降牡谝患率撬?IDE。IDE看起來可能很熟悉,建立VS.NET IDE的團(tuán)隊(duì)以前的工作是開發(fā)VB的IDE,對(duì)IDE的增強(qiáng)借鑒了VB IDE的經(jīng)驗(yàn)。
同時(shí),IDE的改變遠(yuǎn)比外表顯示的深刻。所有.NET語言使用相同的IDE,并且IDE中的新工具功能強(qiáng)大又易于理解。你能把任何一個(gè)設(shè)計(jì)窗口設(shè)置為自動(dòng)隱藏 (就像你能自動(dòng)隱藏Windows任務(wù)欄那樣),這樣就大大地減少了混亂。主工作區(qū)域是一系列選項(xiàng)卡,這意味著IDE不再同時(shí)顯式多個(gè)表單和代碼模塊。當(dāng)打開對(duì)象的源代碼時(shí),IDE在它的主工作區(qū)域?yàn)楣ぷ鞯膶?duì)象添加一個(gè)新的選項(xiàng)卡。
IDE還包括一個(gè)叫作任務(wù)表(Task List)的新窗口。它的內(nèi)容由IDE創(chuàng)建的項(xiàng)目組成。例如,如果在試圖編譯一個(gè)工程時(shí)收到一個(gè)錯(cuò)誤,VB在任務(wù)表里創(chuàng)建一個(gè)項(xiàng)目來解釋這個(gè)錯(cuò)誤。
你能直接向任務(wù)表里添加項(xiàng)目,或者通過在代碼里以 "TODO:"開始一個(gè)注釋行,你可以在代碼位置和任務(wù)之間建立聯(lián)系。我喜歡Microsoft實(shí)現(xiàn)任務(wù)表的方式;在程序出爐前,都需要完成些什么?估計(jì)它能幫我省掉很多時(shí)間和麻煩。看到它時(shí),你最容易產(chǎn)生的一個(gè)想法就是:以前怎么就沒人想到它呢?
你能注意到的另一個(gè)變化就是:VB.NET的表單。Microsoft廢棄了舊的表單引擎而使用Windows Form代替它。所有基于 CLR的語言都使用Windows Form引擎。相對(duì)于VB6的表單引擎,它有幾個(gè)重要的改進(jìn)。
例如,Windows Form讓你能創(chuàng)建能自動(dòng)調(diào)整組件尺寸的表單,并允許將控件錨定在表單里的特定位置。換句話說,不再需要使用第三方控件就能完成這些特殊任務(wù)。Windows Form還允許表演像透明表單這樣的很酷的技術(shù)。
過去,VB隱藏了建立表單的所有魔術(shù)。你使用IDE設(shè)計(jì)表單并把代碼添加到Initialize事件上,但你沒有手段來控制這兩點(diǎn)之間的過程。現(xiàn)在,表單就是一個(gè)類,它包含用來建立表單所有的代碼。我把這些代碼稱為肥料代碼,因?yàn)榇蠖鄶?shù)開發(fā)者希望遠(yuǎn)遠(yuǎn)離開它們,越遠(yuǎn)越好。要想可靠地弄壞你的程序,沒有比折騰這些代碼更好的辦法了。另一方面,技術(shù)嫻熟的用戶可以通過這些代碼做很多很酷的事,因?yàn)樗屇隳茏叩絍B.NET表單的幕后。要是你不想看到這些代碼你也能不看,因?yàn)樾麓a編輯器有展開和折疊代碼區(qū)的功能,并且這些肥料代碼是默認(rèn)折疊的。代碼編輯器還有幾個(gè)很酷的新功能。例如,現(xiàn)在它自動(dòng)為你縮排所有代碼(而且還干得不錯(cuò)),它還有內(nèi)置的顯示行號(hào)功能。
創(chuàng)建編譯的服務(wù)器端代碼
除了新的Windows Form引擎,.NET還包括一個(gè)為創(chuàng)建Web表單而特別設(shè)計(jì)的表單引擎。這些被稱為Web Form的表單很聰明,就像VB讓你能很容易地為傳統(tǒng)Windows桌面應(yīng)用程序創(chuàng)建表單一樣,它們讓你能方便地為Web創(chuàng)建表單。Web Form是 ASP.NET里的技術(shù),讓你能使用熟悉的RAD工具創(chuàng)建帶有代碼的表單。創(chuàng)建的ASP.NET代碼編譯并駐留在服務(wù)器上,并在那里被執(zhí)行,然后以HTML方式發(fā)送給任何一個(gè)支持HTML 3.2的瀏覽器。
底層結(jié)構(gòu)捕獲客戶端上的事件數(shù)據(jù),并把它發(fā)送給服務(wù)器。這意味著可以使用各種用戶界面工具,可以利用現(xiàn)有的表單設(shè)計(jì)技巧,而且應(yīng)用程序界面是不依賴瀏覽器的。如果可以放棄不依賴瀏覽器,你還有另一個(gè)選擇來利用Internet Explorer 某些功能特有的優(yōu)勢。Web Form使支持Web的應(yīng)用程序能更容易地創(chuàng)建更好、更豐富多彩的用戶界面。
Web服務(wù)策略
VB.NET里的另外一個(gè)重要的面向Web的功能是:Web服務(wù)。Microsoft的市場部門把Web服務(wù)列為采用.NET的幾大理由之一。實(shí)際上,Web服務(wù)的本質(zhì)就是使用標(biāo)準(zhǔn)協(xié)議的、由Web服務(wù)器提供的、類似于COM的對(duì)象。注意在技術(shù)上它們并不是COM對(duì)象,但和COM對(duì)象的表現(xiàn)方式很相像。Microsoft希望看到所有的公司使用Web服務(wù),并且未來的應(yīng)用程序可以簡單地“粘”在不同的Web服務(wù)上,就像現(xiàn)在可以使用Visual Basic for Applications (VBA)建立基于Office和支持VBA的程序的解決方案一樣。
在PDC上,對(duì)于它希望開發(fā)者如何“粘”在這些服務(wù)上,Microsoft提供的一個(gè)演示程序給出了很好的例子。在這個(gè)演示程序里,一個(gè)假想的診所通過Web服務(wù)提供預(yù)約系統(tǒng),演示了你可以怎樣使用智能電話通過Web進(jìn)行預(yù)約。Visual Basic.NET 甚至?xí)试S你查詢服務(wù)器,并獲得關(guān)于服務(wù)器能支持的所有Web服務(wù)的相關(guān)數(shù)據(jù)。通過IntelliSense dropdown這個(gè)絕對(duì)有用的工具,程序員可以訪問Web服務(wù)。Web服務(wù)是Microsoft雄心勃勃的戰(zhàn)略,但只有時(shí)間才能檢驗(yàn)它是否能成功地被廣泛接納。
Microsoft試圖消除與包裝和分發(fā)應(yīng)用程序相關(guān)的問題,包括令人恐懼的DLL。所有.NET應(yīng)用程序被封裝為元件。元件包含著數(shù)據(jù)以描述它運(yùn)行所需的東西。這些數(shù)據(jù)被稱為貨單,包括很多信息,例如:元件身份(名稱、版本等等);一個(gè)列出了所有文件之間的依賴關(guān)系的表,以及它們的位置和版本;包括DLL相關(guān)數(shù)據(jù)的外部依賴關(guān)系信息;還有其它元件需要而開發(fā)者沒有創(chuàng)建的資源。元件是自說明的(通過它們的貨單),所以.NET應(yīng)用程序不需要修改注冊(cè)表才能工作。換句話說,你不再需要注冊(cè)表組件。在最好的情況下,即客戶機(jī)里已經(jīng)有了.NET運(yùn)行庫時(shí),分發(fā)一個(gè)復(fù)雜的應(yīng)用程序可能只是把一個(gè)文件夾復(fù)制到目標(biāo)機(jī)器上這么簡單的事。元件的另一個(gè)好處是:你可以讓不同的應(yīng)用程序使用同一個(gè)DLL的不同版本,并且協(xié)調(diào)地運(yùn)行在一臺(tái)機(jī)器上。如果所有這些都可以像計(jì)劃中那樣工作,有關(guān)DLL的地獄和版本的噩夢(mèng)就將成為往事。
正確之路
Microsoft徹底更新了它的技術(shù),而不僅僅是核心語言。例如,在Visual Studio.NET里同時(shí)提供了ADO.NET,這是有特殊優(yōu)點(diǎn)的下一代ActiveX Data Objects (ADO) 版本。它的一個(gè)靈活改變是:ADO.NET用Extensible Markup Language (XML)作為在組件之間傳遞數(shù)據(jù)集的格式。這意味著接收組件不一定必須是ADO.NET組件,同時(shí)接收組件可以接受任何XML 格式的數(shù)據(jù)集。談到XML,它支撐著VS.NET中的任何東西,從配置文件到遠(yuǎn)端過程調(diào)用。ADO.NET在處理斷開的數(shù)據(jù)集時(shí)比 ADO的性能要好,并且具有更好的伸縮性。
Visual Basic.NET對(duì)我們都很熟悉的VB做了重要的改變。C++革命性地跳躍到.NET后有了一個(gè)新名字:C#,而Visual Basic的名字沒變。然而,如果你把VB.NET當(dāng)作語法相似的一門新語言而不是簡單的“升級(jí)”,可能掌握起來就要容易一些。本文給你一個(gè)起點(diǎn),但吸收掌握各種知識(shí),并對(duì)未來做出有根據(jù)的決定是一個(gè)艱苦的過程,它只是這個(gè)過程的一條起跑線。
我不知道.NET會(huì)有多么成功,它的很多地方吸引我,但有些地方并非如此。這個(gè)工具做了大量承諾,它夸耀很多功能能使 VB開發(fā)者更簡單地創(chuàng)建更有伸縮性的高端應(yīng)用程序。
最后,它的成功將取決于開發(fā)者能多好地將它應(yīng)用于現(xiàn)實(shí)世界??v觀Microsoft在PDC和Beta 1版本之間的性能和穩(wěn)定性上所跨過的這一步,我堅(jiān)定地認(rèn)為:Microsoft走對(duì)了路!
【編輯推薦】