下一個版本的Visual Basic可能不僅僅只有我以上提到的那些有關面向對象方面的改進。對于scalability和可重用性而言,還有一些線程生成、錯誤處理和許多長期以來一直被期待著的新的改進。
目前,Visual Basic支持apartment-threaded模型。雖然這種模型為應用程序的開發提供了真正的高效率,但它還不夠理想。下一個版本的Visual Basic將在這方面有所改進。它采用freethreaded模型,這在編寫scalable的網絡應用程序時將很有用處。Visual Basic還將包括一些語法結構,你可以用來產生多線程。典型的線程發生操作如下所示:
set t = New Thread(New Threadstart
(AddressOf(BaseClass.Function1))
從這個例子中,可以看到下一個版本的Visual Basic有AddressOf結構,用它來返回函數的地址。你不再被迫跳過那些需要函數指針的API函數了!如果你需要返回調用,你可以利用它來做到這一點。
計劃中的另一項改進是結構化的出錯處理。不久以前,Visual Basic還要求你在代碼中插入大量的On Error聲明。多年以來,我一直對插入如此多的GOTO語句感到不安。這些語句一再告誡我不要再使用它們!現在讓我們來面對這個問題??我們需要一種出錯處理機制。
下一個版本的Visual Basic采用集中處理出錯的方式。Visual Basic將象那些“高尚的”語言一樣支持 try...catch...finally結構。你可以在你的代碼的頂端放置一個包含有出錯處理的子程序。這里是實現出錯處理的一個例子:
Sub SafeWrite()
Try
Open "Testfile"
•••
Write #1
Catch
Kill "Testfile"
Finally
Close #1
End Try
End Sub
還有一些其他方面令人激動的改進,現在的Visual Basic的使用者將會逐漸熟悉它們。在下一個版本的Visual Basic中,你可以在變量聲明的同時對變量進行初始化:
Dim a as integer = 10
你也可以在一個表達式中建立和初始化一個新的對象。你也可以通過類來共享變量。最后,但不僅僅如此,繼承的概念擴展到了項目的用戶界面的基礎。關于Visual Basic的一個具有代表性的觀點是它很難在相同的基礎上創建多種不同的表單。(在聯合開發的環境中,通常有這種要求)。在下一個版本 isual Basic中,你可以通過模板類型來實現。
多年以來,人們一直期待著這些改進,這是為什么呢?讓我們來看看。Visual Basic的通信(在這方面我已經從事了將近十二年)變得越來越復雜,遠遠超過1991年的第一版。Visual Basic早期最初用于小型的便攜式的工具樣機的快速設計和開發。結果,Visual Basic獲得了“玩具語言”的名聲(在我看來,這是意料之外的)。現在它顯然不再是玩具了,再這么說的人就是出于一種盲目的偏見了。現在各個領域都有大量的基于Visual Basic的軟件包。Visual Basic 正在發展著。去年,在中心研究所,我和一個軟件開發者進行了交談,他使用Web-Class編寫的程序每星期接受上百萬次的點擊。
下一個版本的Visual Basic所發生的變化是令人驚喜的。如果你想獲得它們所帶來的那些好處,那就使用它們。如果你不想,你可以理直氣壯的使用你目前仍然使用的。然而,了解在象Visual Basic這種比C++和Java容易使用的多的語言中,也可以實現C++和Java所實現的功能,是有好處的。
未來的發展趨勢
這種預覽式的介紹你留下了什么樣的印象呢?這個問題問得很好,但是你可以找到問題的答案。在過去的一年中,可以明顯的看到ASP開發的變化,這些開發程序常常由一些易讀的ASP腳本組成,在這些腳本的基礎上運行整個程序。由于ASP是對整個腳本代碼進行解釋執行的,在對各組件進行組裝時,人們逐漸發現這種技術的固有的局限性。我聽到越來越多的開發者說,他們要把他們的事件處理函數從腳本代碼中完全脫離出來,放在更快捷的編譯方式的模型下實現,這些模型用C++或Visual Basic編寫,通過COM接口進行組裝。
對于你所能想到的各種理由,Visual Basic都是能夠滿足的。使用Visual Basic來設計組件實際上并不比使用VBScript或JScript®困難多少。你可以編寫執行起來更快的代碼,并且很容易就能達到你的要求。當下一個版本的Visual Basic發布后,你可以使用Visual Basic來生成面向網絡的對象,這種對象和ASP兼容。總之,走組件組合的路線不管是現在還是將來都會被認為是最好的選擇。
正如我前面時候提到的那樣,使用Visual Basic(和WebClasses)編寫的面向Internet的應用程序已經有很廣泛的基礎。問題是,大部分的基于WebClasses的應用程序并沒有經過很好的設計。它們沒有很好地區分應用程序的不同的層次,把中間層的過程和基于DHTML的用戶界面混淆了。
下一個版本的Visual Basic將引入WebClasses,它是經過精心挑選后確定的網絡開發的工具。因為它更具有scalable、更強大、而且是真正的language-agnostic。它在Visual Studio的所有的工具中起作用。如果你注意多層開發的一些基本規則,你可以很容易地完成這個轉變。特別要注意,把中間層過程和顯示層過程分開。強烈推薦在做這些工作時,參考Windows® DNA 2000的體系結構。核心的事件處理功能必需在中間層完成,你可以使用各種你所喜歡的編譯語言編寫的用于實現這些功能的各個組件。然后,這些組件組裝在一個ASP腳本文件中,這樣各組件就可以協同工作了。如果你把大部分的邏輯運算放在事件對象中而不是腳本中的話,那就是最理想的了。它不僅對將來向Web services轉變是一個好的主意,它也是一種值得效仿的實踐。
For related articles see:
http://msdn.microsoft.com/vstudio/nextgen/
http://msdn.microsoft.com/msdnmag/issues/0300/soap/soap.asp
Background information:
http://msdn.microsoft.com/vbasic/
http://msdn.microsoft.com/isapi/gomscom.asp?TARGET=/dna/
http://msdn.microsoft.com/xml/default.asp
http://msdn.microsoft.com/isapi/msdnlib.idc?theURL=/library/books/advnvb5/ch08_23.htm