isual Basic 已經經歷了很多次的改進。然而從它誕生以來,我就一直喜歡它的一點是:就它的核心而言,你仍然可以象1991年一樣的編寫你的程序。當然,和那時相比它的軟件包已經有了很大的增強,但是這些改進一般是補充性的,并沒有模糊作為編程工具本身具有的目的,這個目的就是:使Visual Basic能更簡單快捷地用于設計、編寫和調試出優秀的面向對象的應用程序。
當前使用的Visual Basic 6.0版本引入WebClasses作為一種簡化手段,用于配置健壯的面向網絡的應用程序。事實上,WebClasses提供了大量的途徑可以通過常見的工具把程序移植到網絡上。(關于Visual Basic 6.0在網絡下的可伸縮性的詳盡討論可以參見Ted Pattison的”Advanced Basics column”( Microsoft Internet Developer于1999年十月出版發行)
我最近有機會了解到了下一個版本的Visual Basic計劃采取的一些新的改進。其中主要的改進是在存儲容量方面,開發者可以使用的存儲容量擴大了三倍。下一個版本的Visual Basic計劃將采用Visual Studio®環境中叫Web Forms的特性。Web Forms代表著一種全新的組件化的網絡解決方案。Web services將成為一種新的基于XML的方案,它通過標準的網絡協議發布中間層的事件處理功能。同時,Visual Basic 語言將包括一些開發者長期以來一直要求的結構,這使得Visual Basic符合那些C++和Java使用者所熟悉的面向對象的編程習慣。<
在下一個版本的Visual Basic的測試版中,這些改進將會被公布。在這里我會給出一些代碼片斷,但不是完整的方案。那么現在還有什么好擔心的呢?很簡單,只要你決心利用這些新的功能,你現在就可以通過這些特定的方法來設計你的程序,得到最好的實踐練習,從而順利地幫助你過渡到下一個版本的Visual Basic。即使你不這么做,只要你按照我在本文末尾所提出的原則去組織你將來的程序,你也不會有什么損失的。
Visual Studio Web FormsVisual Basic的下一個版本將是Visual Studio開發環境的一部分,很可能為網絡開發者引入Web Form這個新的概念。引進Web Form概念的目的是為了擴展Visual Basic的隨機存取功能,從而使Visual Basic可以應用于影響日益廣泛的網絡程序的編寫。使用Visual Studio中的任何一種語言的開發者都可以共享這種Visual Studio Web Forms。
一個Web Forms頁包括兩部分:實現Web Forms頁可視界面的一個HTML文件和處理Web Forms頁事件的源文件。既然目前有三分之一基于Visual Basic環境的開發是面向網絡,Microsoft計劃進一步增強這方面的功能。在下一個版本的Visual Basic中,你可以象現在使用Visual Basic生成表單一樣設計Web Forms。你將擁有一個Web控件工具箱。你可以直接把控件拖放到HTML編輯器中使用,只需要設置一下它們的特性,編寫一些適當的代碼即可。(見Figure 1)。總而言之,你可以象你使用Visual Basic生成表單一樣來做這些工作。你會擁有完全符合IntelliSense®、WYSIWYG格式的表單設計和編譯過的代碼。所以只要你知道如何使用Visual Basic編寫應用程序,Web Forms就可以讓你成為一個網絡開發者而不用絲毫改變你的工作方式。

Figure 1Building a Web Form in Four Steps
Web Forms 在服務器上運行,只把HTML格式的表單傳給用戶。正如Active Server Page (ASP)一樣,它既不是特定的瀏覽器,當然也不是基于Web Form的應用程序;但整個過程也是在服務器上運行。事實上,你正在運行一個程序,它為遠程用戶生成HTML3.2格式的接口。跟ASP網頁不同,這些代碼是編譯運行而不是解釋的,所以運行速度有明顯的提高。
設計Web Forms的目的是為了同時獲得ASP 和WebClass兩者最好的特性。你可以使用Visual Studio家族中的任一種語言來生成Web Forms。所以,你可以使用你所掌握的知識來編寫高效的、面向服務器的網絡應用程序。
p>Web servicesWeb services是Visual Studio開發工具系統采取的第二大改進。就核心而言,一個Web services就是一個通過標準的網絡協議發布的中間層的事件處理函數。既然它們使用HTTP作為傳送機制(見Figure 2),所以可以通過防火墻進行通信。只要合適地分配URL,你可以簡單地在一個網絡應用程序中構造多種Web services。在程序運行時,所有這些內部構件之間的調用都會自動打包,通過XML接口進行調用。開發者可以在任何平臺上、使用任何語言編寫和使用Web services。如果你需要保密,你可以使用Secure Socket Layer (SSL)或標準校檢技術。

Figure 2Web services Architecture
如果你對這些聽起來開始覺得有點熟悉了,那是一個很好的開始。用于組件之間傳送數據的機制是SOAP,即簡單對象許可協議。Don Box在2000年三月出版的MSDN™ Magazine中詳細的介紹了SOAP。
所有這些新的特性都是為了讓網絡程序開發者可以利用已存在的、可再次使用的Web services進行組合,從而可以更快的編寫他們的程序,而不用每次都重頭來編寫它們。這將帶來程序代碼提供者和程序開發者的新時代。
使用下一個版本的Visual Basic,你很快就可以把一個具體項目中的函數以Web service的形式發布和實現。你也許很熟悉把一個Visual Basic 的類定義為public的過程。在下一個版本的Visual Basic中將會有一個新的標志,暫時叫作webpublic。這意味著程序將作為Web service發布。它不僅僅可以通過COM接口為需要它的當地項目所用,而且可以為任何引用了它的URL地址的網絡程序服務。正如你可以把引用加入到一個新項目中的公共對象中一樣,你也可以把引用加到網絡程序中,然后象使用當地程序一樣使用它。
當然,運行機制是有些不同的。Visual Basic能夠通過COM接口對當地對象解析引用。當你加入一個網絡服務的引用到你的應用程序中時,遠程對象將自動生成接口的定義,并使用SOAP協議發送到Visual Studio開發環境中來。雖然這些將以XML形式產生,但你不用自己做任何連接的工 isual Basic將為你自動處理它。在接收到接口定義以后,你就可以使用IntelliSense,如同你已經編寫了引用該對象的代碼一樣。
這有一個簡單的例子。在某些場合下,你也許想編寫這個叫Seahawks的函數,它可能和下面這些代碼有點類似:
Public Function Seahawks(ByVal opponent As String) As String
Seahawks = "lose"
End Function
如果你構造的項目中包括了這個函數,Visual Basic將自動生成關于這個函數的XML格式的描述,并把它發布到網上。
$#@60;?xml version=’1.0’ ?$#@62;
$#@60;methods href=’http://julian/Football/Teams’$#@62;
$#@60;method name=’Seahawks’ href=’Seahawks’$#@62;
$#@60;request$#@62;
$#@60;param dt=’string’$#@62;opponent$#@60;/param$#@62;
$#@60;/request$#@62;
$#@60;response dt=’string’/$#@62;
$#@60;/method$#@62;
$#@60;/methods$#@62;
這個XML文件將用于描述Seahawks函數。如果你使用的是Visual Studio開發環境,你就可以把任何已經發布的Web service直接拖放到應用程序中,創建一個新類。如果你想調用Internet網上任何地方的Web service,你只需要創建包含Web service的類的一個實例,然后就可以調用它的已發布的方法。
當Seahawks函數被調用時,它會通過XML信息包自動通信。如果你使用的是Microsoft® Internet Explorer 5.0(包含了XML支持),你可以在你的瀏覽器中試運行該函數。你也可以如下一樣使用URL地址調用該函數:
http://julian/webservice1/component1.methods/Seahawks?opponent=Miami
它將返回如下XML格式的數據:
$#@60;?xml version="1.0" ?$#@62;
$#@60;Response$#@62;lose$#@60;/Response$#@62;
為了方便Web services的開發,Visual Basic將引入一個新的對象類型,即Web Service。你可以象現在創建一個當地的DLL文件一樣簡單地設計和發布你的Web Service到遠程服務。