全面剖析VB.NET(1)
2024-07-10 13:00:34
供稿:網(wǎng)友
前言
大約到2001年的第4季度,visual basic的下一個版本visual basic.net將會正式發(fā)行。新版的visual basic.net擁有許多vb開發(fā)者以前只能夢想的新功能和新特色。同時,成長和發(fā)展也意味著付出一定的代價,新的visual basic.net中有許多東西需要重新學(xué)習(xí),一些細(xì)微的變化很可能帶來出乎意料的麻煩。
microsoft .net平臺所包含的內(nèi)容非常廣泛。本文將去粗存精,對vb.net作一個全景式的介紹,看看它到底是什么,有些什么用處,以及如何使用。特別地,本文將分析vb.net集成開發(fā)環(huán)境的變化,面向?qū)ο蠊δ埽讓芋w系的變化,眾多的語法改進(jìn),對應(yīng)用部署和封裝支持方面的增強(qiáng)等。
一、集成開發(fā)環(huán)境
第一次啟動vb.net時,你首先注意到的不會是visual basic優(yōu)秀的面向?qū)ο笾С郑鴳?yīng)該是它的ide(集成開發(fā)環(huán)境,integrated development environment)。vs.net的ide給人以非常熟悉的感覺,因?yàn)樵O(shè)計這個ide的工作組以前就設(shè)計過vb的ide,vs.net ide的改進(jìn)建立在設(shè)計vb ide的經(jīng)驗(yàn)之上。
圖a:點(diǎn)擊放大
對于ide的改進(jìn)并不停留在表面上。所有.net語言都使用相同的ide,ide內(nèi)提供的新工具非常全面和強(qiáng)大。例如,所有的設(shè)計窗口都可以自動隱藏(就象windows任務(wù)條一樣),從而顯著地減少了混亂的感覺。
啟動vb.net時,“vs home page”是我們看到的第一個界面。home page中顯示了最近修改的工程,并提供了打開現(xiàn)有工程、創(chuàng)建新工程的選項(如圖a所示)。所有這些選項都以html鏈接形式顯示。注意這并不是什么模擬出來的效果,home page的布局事實(shí)上就是由dhtml編寫而成。由于這個原因,用戶可以定制home page顯示其他對自己有用的選項、信息以及html鏈接。
new project對話框中提供了用任意一種語言創(chuàng)建工程的選項,如圖b所示,注意圖中左邊樹形列表中列出了好幾種語言。如果系統(tǒng)中已經(jīng)安裝了支持vs.net的第三方語言,microsoft或許還會在這個列表中包含這些語言。
圖b:點(diǎn)擊放大
圖b中,樹形列表中的vb節(jié)點(diǎn)處于打開狀態(tài),右邊的一些圖標(biāo)顯示了創(chuàng)建新工程的幾個選項。注意這里出現(xiàn)了一些新的選項,如web service、web control library、class library。最后一個選項顯示出:在vb.net中,多個相關(guān)的類可以合并放入單個模塊文件之中,而不是象vb6那樣把每個類單獨(dú)放入一個文件。
激活winforms工程時的ide與傳統(tǒng)vb ide最為相似。圖c顯示了兩者最主要的區(qū)別。
圖c:點(diǎn)擊放大
▲ 隱藏工具框。默認(rèn)情況下,工具框大多數(shù)時候都是隱藏的,點(diǎn)擊它的標(biāo)題可以把它“拉出來”(圖d顯示了一個已經(jīng)擴(kuò)展的工具框。如有必要,可以設(shè)置工具框使其總是顯示在屏幕上)。對于vb開發(fā)者來說,這里最大的變化在于工具框中的控件現(xiàn)在改為垂直排列,每個圖標(biāo)都加上了文字說明,而不象vb6那樣只有一個圖標(biāo)。
圖d:點(diǎn)擊放大
▲ 卡式子窗口(tabbed child window)。vs.net利用位于屏幕上方的卡式子窗口布局取代了原來的mdi子窗口布局。卡包括:home page,窗體布局窗口,代碼窗口,幫助屏幕。
▲ 任務(wù)列表(task list)。task list是一個重要的改進(jìn),它幫助開發(fā)者跟蹤所有待完成的任務(wù)。代碼生成器、編譯器會在task list中自動加上一些內(nèi)容。手工添加任務(wù)項目可以按照如下方式進(jìn)行:找到代碼中需要修改的地方,然后插入一行以“todo:”開頭的注釋,此后該任務(wù)就會自動出現(xiàn)在任務(wù)列表中。點(diǎn)擊task list中的某個任務(wù),代碼編輯器中就會出現(xiàn)完成該任務(wù)的位置。這種快速定義任務(wù)、返回任務(wù)的機(jī)制將極大地提高開發(fā)效率。
▲ 方案資源管理器(solution explore)。它替代了原來的工程資源管理器(project explorer),與visual interdev中的資源管理器非常相似。和interdev中的資源管理器一樣,solution explorer顯示了工程所用到的各種資源,包括用其他語言編寫的代碼模塊、各種非代碼的資源。其中references是solution explorer中一種全新的資源形式,references管理著命名空間,類似于vb6中的組件引用。
▲ 屬性框(properties)。properties框與vb6中的屬性框非常相似,但它現(xiàn)在支持更多的布局方式(顯示方式)。
▲ 窗體布局工具條(form layout)。在vb6中,在窗體上排列控件的任務(wù)通過一個名為“form editor”的工具條完成。改進(jìn)后的新工具條提供更多的功能,而且在winforms類型的工程中默認(rèn)打開。
圖e:點(diǎn)擊放大
除了上面六處改進(jìn)之外,vb.net的代碼編輯器還有一個重要的新功能:在代碼編輯窗口中,點(diǎn)擊代碼行左邊的加號或者減號可以擴(kuò)展或者折疊代碼塊,如圖e所示。這個功能原本為隱藏可視化設(shè)計器自動生成的代碼而設(shè)計,但它也可以用于隱藏與當(dāng)前任務(wù)無關(guān)的代碼。
web forms工程的設(shè)計環(huán)境也和原來vb6的設(shè)計環(huán)境略有不同,如圖f所示。在表單布局窗口的下面只顯示了兩個卡,分別為design和html。這兩個卡的功能和visual interdev中同一位置的卡相似。design窗口用來編輯窗體的外觀,html窗口用于查看dhtml代碼。
圖f:點(diǎn)擊放大
vb.net另外一個引人注目的變化是它的窗體引擎。microsoft放棄了原來的窗體引擎,現(xiàn)在它給我們提供的是windows forms窗體引擎。所有基于clr的語言都使用windows forms引擎,與vb 6的窗體引擎相比,windows forms有著許多突出的優(yōu)點(diǎn)。例如,windows forms支持創(chuàng)建那些自動改變組件大小的窗體,允許把控件錨定到窗體的特定位置。也就是說,完成這些特殊任務(wù)時再也不需要第三方的工具了。windows forms還有一些有趣的技術(shù),比如創(chuàng)建透明窗體等。
以前,vb隱藏了窗體構(gòu)造過程中的所有細(xì)節(jié)。我們在ide中設(shè)計窗體,然后把代碼加入到initialize事件,但對這兩者之間的處理過程卻無法進(jìn)行任何控制。現(xiàn)在,窗體成了類,類里面包含了構(gòu)造窗體的全部代碼。大多數(shù)程序員都不會去看這種描述窗口構(gòu)造細(xì)節(jié)的代碼,如果說有某種操作一定會破壞應(yīng)用,這個操作就是搞亂這里的代碼。另一方面,由于這些代碼允許用戶深入控制vb.net構(gòu)造窗體的幕后細(xì)節(jié),有經(jīng)驗(yàn)的用戶能夠利用這些代碼實(shí)現(xiàn)各種高級功能。如果你不想看到這些代碼,你可以不看,因?yàn)樾碌拇a編輯器有擴(kuò)展和折疊代碼區(qū)域的功能,描述窗體構(gòu)造過程細(xì)節(jié)的代碼默認(rèn)處于折疊狀態(tài)。代碼編輯器還有其他一些新的實(shí)用功能,比如自動縮進(jìn)、內(nèi)建的行號顯示功能等。