VB.NET有很多值得學(xué)習(xí)的地方,這里我們主要介紹VB.NET Web Forms,包括介紹Web Forms是全新的ASP.NET(不再是ASP+)等方面。
盡管在Visual Basic 6中也有一些有關(guān)互聯(lián)網(wǎng)功能的組件,例如WebClasses、Winsock和 WebBrowser控制,但也僅此而已,它再也沒有其他更令人激動的功能了。尤其是WebClasses,更象是后來添上去的,簡直可以說是沒有一點用處。
但在VB.NET中,網(wǎng)絡(luò)功能則扮演著重要的角色。首先,VB.NET中有Web Services,它將是DCOM的取代者。其次,還有VB.NET Web Forms。Web Forms可以使用戶無需使用古老的ASP或者CGI就能有效地建立全交互的互聯(lián)網(wǎng)網(wǎng)站。(僅僅是理論上是如此,我并不希望你真的這樣作。)
VB.NET Web Forms理論
在介紹Web Forms的具體細(xì)節(jié)之前,讓我們先抽出一點時間來介紹一些理論方面的基礎(chǔ)知識。
那么我們現(xiàn)在使用的互聯(lián)網(wǎng)開發(fā)工具有什么不足之處呢?對于任何比較重要的開發(fā)活動,一般都需要用到ASP,但我必須說明的是,我并不喜歡它。首先,它會使我們所編寫的代碼顯得凌亂。我們必須將表示層(實際的HTML代碼)與ASP代碼混在一塊兒。我們應(yīng)該將所有代碼都隱藏在窗體的后面,盡管有幾種方法能夠解決這一問題,但并不是十分理想。其次,必須浪費時間對所有使用老式計算機(jī)的用戶提供支持,如果這些用戶的瀏覽器不支持javascript,我們就需要發(fā)現(xiàn)這一問題,并通過修改網(wǎng)頁,滿足用戶的需求。
此外,還存在狀態(tài)管理問題。如果有人登錄了網(wǎng)站,而我們希望知道有關(guān)它的基本情況,就需要使用Session對象。當(dāng)有多臺機(jī)器需要訪問Session對象時,網(wǎng)站的負(fù)荷就會很大,這時我們又會遇上麻煩。
令人不可思議的是,VB.NET Web Forms將能夠使所有這些問題迎刃而解。Web Forms是全新的ASP.NET(不再是ASP+),它們可以使用我們在VB.NET中有效地創(chuàng)建交互式互聯(lián)網(wǎng)網(wǎng)頁,而且這一工作還非常地輕松。
我們只要簡單地在VB.NET中創(chuàng)建一個Web Form即可。這一過程與設(shè)計一個WebClass有點類似,但令人遺憾的是,我們只能在FrontPage中設(shè)計好網(wǎng)頁,然后把生成的HTML代碼傳送給VB.NET Web Forms。
提示:盡管可以將在FrontPage中生成的HTML代碼傳送給VB.NET中的Web Form,但這與事實有一定的出入。在我的多次試驗中,似乎在網(wǎng)頁比較簡單時沒有什么問題,但如果網(wǎng)頁的輸出變得復(fù)雜時,就會出錯。在以后的版本中這一問題應(yīng)該得到修正。
因此,我們可以通過Web Form創(chuàng)建基本的網(wǎng)頁,然后在VB.NET中添加交互性元素━━例如文字框或提交按鈕,此外,還可以在其中添加不需要進(jìn)行獨立下載的更高級的HTML功能━━Web Controls。這樣設(shè)計出來的網(wǎng)頁可以兼容所有的瀏覽器。
提示:VB.NET中捆綁有許多Web Controls,例如,我們在稍后會使用到的Calendar控制。在設(shè)計出網(wǎng)頁和添加上交互性元素后,還需要再添加一些代碼使得二者能夠更好地融合在一塊兒。也就是說,我們在Web Form上有了一個文本框和按鈕,但還需要編寫一段代碼,獲得在文本框中輸入的數(shù)據(jù)并在標(biāo)簽中顯示它,或者把它添加到數(shù)據(jù)庫中、或者在一個用戶列表中進(jìn)行校驗,然后把用戶定期導(dǎo)向到成員區(qū)中。
這里的關(guān)健問題是我們可以將整個網(wǎng)頁和對象當(dāng)作一個對象來處理。你再也無需象在原來的ASP中那樣請求一些窗體字段,而只需象在Windows Form中那樣調(diào)用對象即可。在把ASP.NET與ASP進(jìn)行比較后,我們再來看看我在上面提出的問題,并找出如何解決它們的辦法。首先,是HTML、ASP代碼混用的問題。在VB.NET中不會遇到這一問題,HTML網(wǎng)頁與所使用的代碼是完全分離的,在Web Form上只有一行代碼與所使用的代碼模塊有關(guān),其他的工作有互聯(lián)網(wǎng)服務(wù)器來完成。
提示:象ASP文件有.ASP后綴那樣,Web Forms有一個.ASPX后綴。當(dāng)互聯(lián)網(wǎng)服務(wù)器向用戶提交這一網(wǎng)頁時,.NET Framework首先自動地對它進(jìn)行處理,例如,Web Controls被轉(zhuǎn)換為HTML代碼,編譯代碼等,我們在后面會更詳細(xì)地談到這一問題。使用原來的ASP,我們必須在檢查用戶的瀏覽器并對內(nèi)容進(jìn)行適當(dāng)?shù)男薷氖顾募嫒菪愿梅矫婊ㄙM一定的時間。在VB.NET中,它可以為我們完成所有的處理,.NET Framework只能產(chǎn)生可以被目標(biāo)瀏覽器所識別的HTML代碼。
那么狀態(tài)管理如何呢?對于大多數(shù)的ASP開發(fā)人員而言,這都是個難以處理的問題。在ASP.NET中,狀態(tài)是被存儲在發(fā)給用戶的網(wǎng)頁中的(以一種隱藏字段的方式。)。在下次再發(fā)送該網(wǎng)頁時,就可以讀取和使用其中的數(shù)據(jù)。
提示之一:我們可以把ASP.NET中的狀態(tài)管理認(rèn)為與使用Property Bags類似,它會自動地在Property Bags中添加信息,例如文本框信息。此外,我們還可以自己添加相關(guān)的信息,然后再使用它們。
提示之二:測試表明,與傳統(tǒng)的ASP中的Session對象相比,使用這種狀態(tài)管理的方法在性能上有較大的提升。
提示之三:安全仍然是個問題,數(shù)據(jù)編碼的標(biāo)準(zhǔn)化程度非常高,如果在實際的操作中需要真正有效的安全,還需要根據(jù)具體的情況,將狀態(tài)管理與現(xiàn)有的數(shù)據(jù)庫口令記錄等類似的東西結(jié)合起來。
好了,這就是ASP.NET,它是一種嶄新的工具,它所提供的功能是ASP開發(fā)人員所夢寐以求的。如果你使用Visual Basic作為開發(fā)工具,并希望涉足互聯(lián)網(wǎng)應(yīng)用開發(fā),這將是一個理想的機(jī)會。
【編輯推薦】