麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

VisualBasic的未來

2019-11-18 17:52:13
字體:
來源:轉載
供稿:網友
VisualBasic的未來
一個版本中將出現的WebForms(Web表單),Webservices(Web服務)和語言的改進

本文讀者是已經熟悉了VisualBasic的用戶。

概述:下一個版本的MicrosoftVisualBasic主要有以下三方面的改進:WebForms、Webservices和面向對象的語法方面的改進。WebForms使得經驗豐富的VisualBasic用戶可以象現在編寫單機程序一樣簡單地開發網絡應用程序。通過SOAP接口,Webservices讓你在可以聯網的任何地方配置你所設計的組件。另外,幾個在面向對象的語言方面的關鍵性的改進使得VisualBasic的代碼象C 一樣具有靈活性,這幾方面的改進包括繼承性、多態性和重載。有關這方面的內容可以參考SteveBallmer的“VBITSkeynoteonthenextgenerationofVisualBasic”

isualBasic已經經歷了很多次的改進。然而從它誕生以來,我就一直喜歡它的一點是:就它的核心而言,你仍然可以象1991年一樣的編寫你的程序。當然,和那時相比它的軟件包已經有了很大的增強,但是這些改進一般是補充性的,并沒有模糊作為編程工具本身具有的目的,這個目的就是:使VisualBasic能更簡單快捷地用于設計、編寫和調試出優秀的面向對象的應用程序。

當前使用的VisualBasic6.0版本引入WebClasses作為一種簡化手段,用于配置健壯的面向網絡的應用程序。事實上,WebClasses提供了大量的途徑可以通過常見的工具把程序移植到網絡上。(關于VisualBasic6.0在網絡下的可伸縮性的詳盡討論可以參見TedPattison的”AdvancedBasicscolumn”(MicrosoftInternetDeveloper于1999年十月出版發行)

我最近有機會了解到了下一個版本的VisualBasic計劃采取的一些新的改進。其中主要的改進是在存儲容量方面,開發者可以使用的存儲容量擴大了三倍。下一個版本的VisualBasic計劃將采用VisualStudio®環境中叫WebForms的特性。WebForms代表著一種全新的組件化的網絡解決方案。Webservices將成為一種新的基于xml的方案,它通過標準的網絡協議發布中間層的事件處理功能。同時,VisualBasic語言將包括一些開發者長期以來一直要求的結構,這使得VisualBasic符合那些C 和java使用者所熟悉的面向對象的編程習慣。

在下一個版本的VisualBasic的測試版中,這些改進將會被公布。在這里我會給出一些代碼片斷,但不是完整的方案。那么現在還有什么好擔心的呢?很簡單,只要你決心利用這些新的功能,你現在就可以通過這些特定的方法來設計你的程序,得到最好的實踐練習,從而順利地幫助你過渡到下一個版本的VisualBasic。即使你不這么做,只要你按照我在本文末尾所提出的原則去組織你將來的程序,你也不會有什么損失的。

VisualStudioWebForms
VisualBasic的下一個版本將是VisualStudio開發環境的一部分,很可能為網絡開發者引入WebForm這個新的概念。引進WebForm概念的目的是為了擴展VisualBasic的隨機存取功能,從而使VisualBasic可以應用于影響日益廣泛的網絡程序的編寫。使用VisualStudio中的任何一種語言的開發者都可以共享這種VisualStudioWebForms。

一個WebForms頁包括兩部分:實現WebForms頁可視界面的一個HTML文件和處理WebForms頁事件的源文件。既然目前有三分之一基于VisualBasic環境的開發是面向網絡,Microsoft計劃進一步增強這方面的功能。在下一個版本的VisualBasic中,你可以象現在使用VisualBasic生成表單一樣設計WebForms。你將擁有一個Web控件工具箱。你可以直接把控件拖放到HTML編輯器中使用,只需要設置一下它們的特性,編寫一些適當的代碼即可。(見Figure1)??偠灾?,你可以象你使用VisualBasic生成表單一樣來做這些工作。你會擁有完全符合IntelliSense®、WYSIWYG格式的表單設計和編譯過的代碼。所以只要你知道如何使用VisualBasic編寫應用程序,WebForms就可以讓你成為一個網絡開發者而不用絲毫改變你的工作方式。

Figure1BuildingaWebForminFourSteps

WebForms在服務器上運行,只把HTML格式的表單傳給用戶。正如ActiveServerPage(asp)一樣,它既不是特定的瀏覽器,當然也不是基于WebForm的應用程序;但整個過程也是在服務器上運行。事實上,你正在運行一個程序,它為遠程用戶生成HTML3.2格式的接口。跟ASP網頁不同,這些代碼是編譯運行而不是解釋的,所以運行速度有明顯的提高。

設計WebForms的目的是為了同時獲得ASP和WebClass兩者最好的特性。你可以使用VisualStudio家族中的任一種語言來生成WebForms。所以,你可以使用你所掌握的知識來編寫高效的、面向服務器的網絡應用程序。

Webservices
Webservices是VisualStudio開發工具系統采取的第二大改進。就核心而言,一個Webservices就是一個通過標準的網絡協議發布的中間層的事件處理函數。既然它們使用HTTP作為傳送機制(見Figure2),所以可以通過防火墻進行通信。只要合適地分配URL,你可以簡單地在一個網絡應用程序中構造多種Webservices。在程序運行時,所有這些內部構件之間的調用都會自動打包,通過XML接口進行調用。開發者可以在任何平臺上、使用任何語言編寫和使用Webservices。如果你需要保密,你可以使用SecureSocketLayer(SSL)或標準校檢技術。



Figure2WebservicesArchitecture

如果你對這些聽起來開始覺得有點熟悉了,那是一個很好的開始。用于組件之間傳送數據的機制是SOAP,即簡單對象許可協議。DonBox在2000年三月出版的MSDN™Magazine中詳細的介紹了SOAP。

所有這些新的特性都是為了讓網絡程序開發者可以利用已存在的、可再次使用的Webservices進行組合,從而可以更快的編寫他們的程序,而不用每次都重頭來編寫它們。這將帶來程序代碼提供者和程序開發者的新時代。

使用下一個版本的VisualBasic,你很快就可以把一個具體項目中的函數以Webservice的形式發布和實現。你也許很熟悉把一個VisualBasic的類定義為public的過程。在下一個版本的VisualBasic中將會有一個新的標志,暫時叫作webpublic。這意味著程序將作為Webservice發布。它不僅僅可以通過COM接口為需要它的當地項目所用,而且可以為任何引用了它的URL地址的網絡程序服務。正如你可以把引用加入到一個新項目中的公共對象中一樣,你也可以把引用加到網絡程序中,然后象使用當地程序一樣使用它。

當然,運行機制是有些不同的。VisualBasic能夠通過COM接口對當地對象解析引用。當你加入一個網絡服務的引用到你的應用程序中時,遠程對象將自動生成接口的定義,并使用SOAP協議發送到VisualStudio開發環境中來。雖然這些將以XML形式產生,但你不用自己做任何連接的工作。VisualBasic將為你自動處理它。在接收到接口定義以后,你就可以使用IntelliSense,如同你已經編寫了引用該對象的代碼一樣。

這有一個簡單的例子。在某些場合下,你也許想編寫這個叫Seahawks的函數,它可能和下面這些代碼有點類似:

PublicFunctionSeahawks(ByValopponentAsString)AsString

Seahawks="lose"
EndFunction

如果你構造的項目中包括了這個函數,VisualBasic將自動生成關于這個函數的XML格式的描述,并把它發布到網上。

<?xmlversion='1.0'?>

<methodshref='http://julian/Football/Teams'>
<methodname='Seahawks'href='Seahawks'>
<request>
<paramdt='string'>opponent</param>
</request>
<responsedt='string'/>
</method>
</methods>

這個XML文件將用于描述Seahawks函數。如果你使用的是VisualStudio開發環境,你就可以把任何已經發布的Webservice直接拖放到應用程序中,創建一個新類。如果你想調用Internet網上任何地方的Webservice,你只需要創建包含Webservice的類的一個實例,然后就可以調用它的已發布的方法。

當Seahawks函數被調用時,它會通過XML信息包自動通信。如果你使用的是Microsoft®InternetExplorer5.0(包含了XML支持),你可以在你的瀏覽器中試運行該函數。你也可以如下一樣使用URL地址調用該函數:

http://julian/webservice1/component1.methods/Seahawks?opponent=Miami

它將返回如下XML格式的數據:

<?xmlversion="1.0"?>
<Response>lose</Response>

為了方便Webservices的開發,VisualBasic將引入一個新的對象類型,即WebService。你可以象現在創建一個當地的DLL文件一樣簡單地設計和發布你的WebService到遠程服務。

語言上的改進

長期以來,在喜歡VisualBasic的程序開發者和喜歡另外一些更“復雜”的語言的程序員之間的關系一直都很緊張。我不止一次的為我所最愛的編程語言反駁諸如”玩具語言”之類的控訴,他們認為VisualBasic缺乏OOP的特征。

好,那么猜猜發生了什么?下一個版本的VisualBasic將最終結束他們的抱怨。Microsoft計劃加入面向對象編程的三大特性:繼承性、多態性和重載。這還不是所有!另外一些結構,包括結構化的錯誤處理和瀏覽也將被引入VisualBasic語言。

繼承性的特性允許你設計一個基類,然后編寫一些派生類,它們繼承基類的功能,這樣做可以節約時間,并提高程序的可重用性。例如,你編寫了一個名叫BaseClass的基類,它有一個函數:

FunctionGetCustomerName()
'Dosomestuff
EndFunction

現在你想再寫一個類,它可以象調用本身的函數一樣調用基類的GetCustomerName函數。過去的方法是什么呢?這在過去沒有辦法。然而,現在的新的方法只需在新的類的上面插入如下簡單的一行語句:

InheritsBaseClass
FunctionGetCustomerID()
'Dosomestuff
EndFunction

編寫兩個或更多的名字相同但具有不同標識符的函數,這就是重載。在某種程度上,VisualBasic在函數調用時對內部類型的轉換以及屬性的設置中已經實現了重載。比較以下兩行有效的VisualBasic代碼:

Text1.Text="7"
Text1.Text=7

在這兩個調用中,Text1中的text都將被設為字符串“7”。這就是重載調用,因為VisualBasic知道如何處理輸入的不同的數據類型。它把它們作為變量處理,并自動進行轉化。當你調用一些參數類型有明確定義的函數時,VisualBasic也會作同樣的轉化。下面的兩個函數調用:

a=SetVal("This")
a=SetVal(7)

都可以正確調用以下函數:

FunctionSetVal(xAsString)
Form1.Text1.Text=x
EndFunction

既然VisualBasic已經可以傳送多種不同的變量類型,為什么還需要重載功能呢?這是因為雖然目前單獨的一個函數已經可以處理多種數據類型,它不能根據傳入的不同的數據類型產生不同的動作。相反的,比較以下兩個函數:

FunctionGetCustomerID(custnameasstring)AsInteger

'LookupcustomerIDbasedoncustomername
EndFunction

FunctionGetCustomerID(purchaslong)AsInteger
'LookupcustomerIDbasedonpurchaSEOrder
EndFunction

通過重載,你可以根據輸入的數據類型來實現函數。這對于下一個版本的VisualBasic是很重要的,因為它具有一個新的特性――缺省數據類型保護。一般來說變量的自動轉換是有利的,但可以想到有時也會給你帶來麻煩。例如在前面的SetVal的例子中,如果你要傳送的是字符7而不是字符串“7”,那會發生什么情況呢?下一個版本的VisualBasic將會自動捕獲這個錯誤。(如果你的代碼是基于VisualBasic以前的無類型識別的功能,這個特性會被禁用)

最后,多態性是對已定義的類的再定義過程。例如,你想寫一個BaseClass類的派生類,但你想重新改寫GetCustomerName函數。在下一個版本的VisualBasic中,你可以用類似以下這種新方法來實現這種類的定義:(注意:最終的語法取決于正式的版本)

InheritsBaseClass
FunctionGetOrders()
OverridesFunctionGetOrders()
•••
EndFunction

更多的語法特性

下一個版本的VisualBasic可能不僅僅只有我以上提到的那些有關面向對象方面的改進。對于scalability和可重用性而言,還有一些線程生成、錯誤處理和許多長期以來一直被期待著的新的改進。

目前,VisualBasic支持apartment-threaded模型。雖然這種模型為應用程序的開發提供了真正的高效率,但它還不夠理想。下一個版本的VisualBasic將在這方面有所改進。它采用freethreaded模型,這在編寫scalable的網絡應用程序時將很有用處。VisualBasic還將包括一些語法結構,你可以用來產生多線程。典型的線程發生操作如下所示:

sett=NewThread(NewThreadstart
(AddressOf(BaseClass.Function1))

從這個例子中,可以看到下一個版本的VisualBasic有AddressOf結構,用它來返回函數的地址。你不再被迫跳過那些需要函數指針的API函數了!如果你需要返回調用,你可以利用它來做到這一點。

計劃中的另一項改進是結構化的出錯處理。不久以前,VisualBasic還要求你在代碼中插入大量的OnError聲明。多年以來,我一直對插入如此多的GOTO語句感到不安。這些語句一再告誡我不要再使用它們!現在讓我們來面對這個問題――我們需要一種出錯處理機制。

下一個版本的VisualBasic采用集中處理出錯的方式。VisualBasic將象那些“高尚的”語言一樣支持try...catch...finally結構。你可以在你的代碼的頂端放置一個包含有出錯處理的子程序。這里是實現出錯處理的一個例子:

SubSafeWrite()
Try
Open"Testfile"
•••
Write#1
Catch
Kill"Testfile"
Finally
Close#1
EndTry
EndSub

還有一些其他方面令人激動的改進,現在的VisualBasic的使用者將會逐漸熟悉它們。在下一個版本的VisualBasic中,你可以在變量聲明的同時對變量進行初始化:

Dimaasinteger=10

你也可以在一個表達式中建立和初始化一個新的對象。你也可以通過類來共享變量。最后,但不僅僅如此,繼承的概念擴展到了項目的用戶界面的基礎。關于VisualBasic的一個具有代表性的觀點是它很難在相同的基礎上創建多種不同的表單。(在聯合開發的環境中,通常有這種要求)。在下一個版本的VisualBasic中,你可以通過模板類型來實現。

多年以來,人們一直期待著這些改進,這是為什么呢?讓我們來看看。VisualBasic的通信(在這方面我已經從事了將近十二年)變得越來越復雜,遠遠超過1991年的第一版。VisualBasic早期最初用于小型的便攜式的工具樣機的快速設計和開發。結果,VisualBasic獲得了“玩具語言”的名聲(在我看來,這是意料之外的)。現在它顯然不再是玩具了,再這么說的人就是出于一種盲目的偏見了?,F在各個領域都有大量的基于VisualBasic的軟件包。VisualBasic正在發展著。去年,在中心研究所,我和一個軟件開發者進行了交談,他使用Web-Class編寫的程序每星期接受上百萬次的點擊。

下一個版本的VisualBasic所發生的變化是令人驚喜的。如果你想獲得它們所帶來的那些好處,那就使用它們。如果你不想,你可以理直氣壯的使用你目前仍然使用的。然而,了解在象VisualBasic這種比C 和Java容易使用的多的語言中,也可以實現C 和Java所實現的功能,是有好處的。

未來的發展趨勢

這種預覽式的介紹你留下了什么樣的印象呢?這個問題問得很好,但是你可以找到問題的答案。在過去的一年中,可以明顯的看到ASP開發的變化,這些開發程序常常由一些易讀的ASP腳本組成,在這些腳本的基礎上運行整個程序。由于ASP是對整個腳本代碼進行解釋執行的,在對各組件進行組裝時,人們逐漸發現這種技術的固有的局限性。我聽到越來越多的開發者說,他們要把他們的事件處理函數從腳本代碼中完全脫離出來,放在更快捷的編譯方式的模型下實現,這些模型用C++或VisualBasic編寫,通過COM接口進行組裝。

對于你所能想到的各種理由,VisualBasic都是能夠滿足的。使用VisualBasic來設計組件實際上并不比使用VBScript或JScript®困難多少。你可以編寫執行起來更快的代碼,并且很容易就能達到你的要求。當下一個版本的VisualBasic發布后,你可以使用VisualBasic來生成面向網絡的對象,這種對象和ASP兼容??傊?,走組件組合的路線不管是現在還是將來都會被認為是最好的選擇。

正如我前面時候提到的那樣,使用VisualBasic(和WebClasses)編寫的面向Internet的應用程序已經有很廣泛的基礎。問題是,大部分的基于WebClasses的應用程序并沒有經過很好的設計。它們沒有很好地區分應用程序的不同的層次,把中間層的過程和基于DHTML的用戶界面混淆了。

下一個版本的VisualBasic將引入WebClasses,它是經過精心挑選后確定的網絡開發的工具。因為它更具有scalable、更強大、而且是真正的language-agnostic。它在VisualStudio的所有的工具中起作用。如果你注意多層開發的一些基本規則,你可以很容易地完成這個轉變。特別要注意,把中間層過程和顯示層過程分開。強烈推薦在做這些工作時,參考Windows®DNA2000的體系結構。核心的事件處理功能必需在中間層完成,你可以使用各種你所喜歡的編譯語言編寫的用于實現這些功能的各個組件。然后,這些組件組裝在一個ASP腳本文件中,這樣各組件就可以協同工作了。如果你把大部分的邏輯運算放在事件對象中而不是腳本中的話,那就是最理想的了。它不僅對將來向Webservices轉變是一個好的主意,它也是一種值得效仿的實踐。->


上一篇:怎樣用VB寫多線程

下一篇:關于VBScript與

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级黄色免费观看 | 亚洲免费视频一区二区 | 日韩av电影免费看 | 日韩在线播放第一页 | 成人午夜激情视频 | 伊人一二三四区 | 狠狠操夜夜爱 | 99精品视频一区二区 | 亚洲男人天堂 | 亚洲午夜国产 | 手机av在线电影 | 蜜桃av鲁一鲁一鲁一鲁 | av电影网站在线观看 | 国产精品午夜性视频 | 综合毛片 | 精品中文视频 | 中国hdxxxx护士爽在线观看 | 国产成人精品一区二区视频免费 | 亚洲最大的成人网 | 久久区二区 | 欧美日韩国产成人在线观看 | 日本xxxx视频| 日本成人二区 | 亚洲二区不卡 | 在线观看一二区 | 久草在线视频看看 | 天天色人人爱 | 欧美www | av手机免费在线观看 | 国产精品刺激对白麻豆99 | 福利在线免费视频 | 97久色 | 亚洲成人综合网站 | xnxx 日本19| 三人弄娇妻高潮3p视频 | 精品国产一区二区三区四 | 二区国产| 久久视讯 | 91精品久久久久久久久 | 久久精品欧美一区二区三区不卡 | 国产精品欧美日韩一区二区 |