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