細(xì)說(shuō).Net開(kāi)發(fā)中的Visual Basic.Net(3)_.Net教程
推薦:怎么在ASP.NET中使用SmtpMail發(fā)送郵件在ASP中,就可以通過(guò)調(diào)用CDONTS組件發(fā)送簡(jiǎn)單郵件,在ASP.NET中,自然也可以。不同的是,.Net Framework中,將這一組件封裝到了System.Web.Mail命名空間中。 一個(gè)典型的郵件發(fā)送程序如下: <%@ Import Namespace=System.Web.Mail %> <script runat=server
Microsoft說(shuō)它力圖使語(yǔ)言保持清晰并使之現(xiàn)代化—大部分情況下它做得不錯(cuò)—但這個(gè)作用域問(wèn)題和其它幾個(gè)問(wèn)題令人感到困惑。例如,While...Wend 很早以前就應(yīng)該消失了,因?yàn)?Do...Loop 完成同樣的功能。然而,Microsoft 不僅沒(méi)能去掉 While...Wend,還把它改成了 While...End While 來(lái)給自己找了更多的麻煩。真奇怪!
我最不喜歡的改變是:Microsoft改變了你已經(jīng)使用的數(shù)據(jù)類型含義。在 .NET 里,Integer 現(xiàn)在是 32 位,而 Long 變成了 64 位。我心存恐懼地想:開(kāi)發(fā)者 (包括我自己) 會(huì)多么頻繁地使用錯(cuò)誤的變量啊。那個(gè)API到底是接受一個(gè)16位的 Integer還是32位的?老天!我希望Microsoft重新考慮這個(gè)決定并使用新的變量類型,比如Int32和Long64。無(wú)論遷移到 VB.NET的移植工具是多么的好,它也不能改變開(kāi)發(fā)者的記憶。為什么要逼著我們?cè)賹W(xué)一遍普通的數(shù)據(jù)類型呢?
最后,最需要的一個(gè)改變是:VB.NET引入了 Option Strict 關(guān)鍵字,你可以使用它來(lái)代替 Option Explicit。Option Strict 結(jié)束了萬(wàn)惡的類型強(qiáng)制(tm),通過(guò)它VB樂(lè)于讓你把一個(gè)數(shù)值賦值給一個(gè)字符串,然后像犯罪一樣做另一個(gè)操作。設(shè)置 Option Strict 告訴 Visual Basic.NET 不要為你做任何類型強(qiáng)制。注意 VB.NET 并不是徹底的控制狂,它允許類型向下轉(zhuǎn)換,但不允許向上。例如,不使用像 sngvariable = CSng(dblvariable) 這樣的語(yǔ)句進(jìn)行顯式類型轉(zhuǎn)換,你就不能把聲明為 Single 的變量賦值給聲明為 Double 的變量。因?yàn)檫@有丟失數(shù)據(jù)的風(fēng)險(xiǎn)。然而,你能不使用顯式類型轉(zhuǎn)換就把聲明為 Double 的變量賦值給聲明為 Single 的變量,因?yàn)檫@并沒(méi)有丟失數(shù)據(jù)的危險(xiǎn)。使用 Option Strict 能幫助開(kāi)發(fā)者減少很多類型錯(cuò)誤,包括那些很難調(diào)錯(cuò)的。但有一個(gè)附加的缺陷:在工程里使用了 Option Strict 后,就不能進(jìn)行 后編聯(lián)了。
表單和新IDE面孔
Visual Basic.NET 的面向?qū)ο蠊δ芎軅ゴ�,但第一次啟�?dòng) VB.NET 時(shí)還注意不到它�?赡苣阕⒁獾降牡谝患率撬� IDE。IDE看起來(lái)可能很熟悉,建立VS.NET IDE的團(tuán)隊(duì)以前的工作是開(kāi)發(fā)VB的IDE,對(duì)IDE的增強(qiáng)借鑒了VB IDE的經(jīng)驗(yàn)。
同時(shí),IDE的改變遠(yuǎn)比外表顯示的深刻。所有.NET語(yǔ)言使用相同的IDE,并且IDE中的新工具功能強(qiáng)大又易于理解。你能把任何一個(gè)設(shè)計(jì)窗口設(shè)置為自動(dòng)隱藏 (就像你能自動(dòng)隱藏Windows任務(wù)欄那樣),這樣就大大地減少了混亂。主工作區(qū)域是一系列選項(xiàng)卡,這意味著IDE不再同時(shí)顯式多個(gè)表單和代碼模塊。當(dāng)打開(kāi)對(duì)象的源代碼時(shí),IDE在它的主工作區(qū)域?yàn)楣ぷ鞯膶?duì)象添加一個(gè)新的選項(xiàng)卡。
IDE還包括一個(gè)叫作任務(wù)表(Task List)的新窗口。它的內(nèi)容由IDE創(chuàng)建的項(xiàng)目組成。例如,如果在試圖編譯一個(gè)工程時(shí)收到一個(gè)錯(cuò)誤,VB在任務(wù)表里創(chuàng)建一個(gè)項(xiàng)目來(lái)解釋這個(gè)錯(cuò)誤。你能直接向任務(wù)表里添加項(xiàng)目,或者通過(guò)在代碼里以 "TODO:"開(kāi)始一個(gè)注釋行,你可以在代碼位置和任務(wù)之間建立聯(lián)系。我喜歡Microsoft實(shí)現(xiàn)任務(wù)表的方式;在程序出爐前,都需要完成些什么?估計(jì)它能幫我省掉很多時(shí)間和麻煩�?吹剿鼤r(shí),你最容易產(chǎn)生的一個(gè)想法就是:以前怎么就沒(méi)人想到它呢?
你能注意到的另一個(gè)變化就是:VB.NET的表單。Microsoft廢棄了舊的表單引擎而使用Windows Form代替它。所有基于 CLR的語(yǔ)言都使用Windows Form引擎。相對(duì)于VB6的表單引擎,它有幾個(gè)重要的改進(jìn)。例如,Windows Form讓你能創(chuàng)建能自動(dòng)調(diào)整組件尺寸的表單,并允許將控件錨定在表單里的特定位置。換句話說(shuō),不再需要使用第三方控件就能完成這些特殊任務(wù)。Windows Form還允許表演像透明表單這樣的很酷的技術(shù)。
過(guò)去,VB隱藏了建立表單的所有魔術(shù)。你使用IDE設(shè)計(jì)表單并把代碼添加到Initialize事件上,但你沒(méi)有手段來(lái)控制這兩點(diǎn)之間的過(guò)程。現(xiàn)在,表單就是一個(gè)類,它包含用來(lái)建立表單所有的代碼。我把這些代碼稱為肥料代碼,因?yàn)榇蠖鄶?shù)開(kāi)發(fā)者希望遠(yuǎn)遠(yuǎn)離開(kāi)它們,越遠(yuǎn)越好。要想可靠地弄壞你的程序,沒(méi)有比折騰這些代碼更好的辦法了。另一方面,技術(shù)嫻熟的用戶可以通過(guò)這些代碼做很多很酷的事,因?yàn)樗屇隳茏叩絍B.NET表單的幕后。要是你不想看到這些代碼你也能不看,因?yàn)樾麓a編輯器有展開(kāi)和折疊代碼區(qū)的功能,并且這些肥料代碼是默認(rèn)折疊的。代碼編輯器還有幾個(gè)很酷的新功能。例如,現(xiàn)在它自動(dòng)為你縮排所有代碼(而且還干得不錯(cuò)),它還有內(nèi)置的顯示行號(hào)功能。
創(chuàng)建編譯的服務(wù)器端代碼
除了新的Windows Form引擎,.NET還包括一個(gè)為創(chuàng)建Web表單而特別設(shè)計(jì)的表單引擎。這些被稱為Web Form的表單很聰明,就像VB讓你能很容易地為傳統(tǒng)Windows桌面應(yīng)用程序創(chuàng)建表單一樣,它們讓你能方便地為Web創(chuàng)建表單。Web Form是 ASP.NET里的技術(shù),讓你能使用熟悉的RAD工具創(chuàng)建帶有代碼的表單。創(chuàng)建的ASP.NET代碼編譯并駐留在服務(wù)器上,并在那里被執(zhí)行,然后以HTML方式發(fā)送給任何一個(gè)支持HTML 3.2的瀏覽器。
底層結(jié)構(gòu)捕獲客戶端上的事件數(shù)據(jù),并把它發(fā)送給服務(wù)器。這意味著可以使用各種用戶界面工具,可以利用現(xiàn)有的表單設(shè)計(jì)技巧,而且應(yīng)用程序界面是不依賴瀏覽器的。如果可以放棄不依賴瀏覽器,你還有另一個(gè)選擇來(lái)利用Internet Explorer 某些功能特有的優(yōu)勢(shì)。Web Form使支持Web的應(yīng)用程序能更容易地創(chuàng)建更好、更豐富多彩的用戶界面。
Web服務(wù)策略
VB.NET里的另外一個(gè)重要的面向Web的功能是:Web服務(wù)。Microsoft的市場(chǎng)部門把Web服務(wù)列為采用.NET的幾大理由之一。實(shí)際上,Web服務(wù)的本質(zhì)就是使用標(biāo)準(zhǔn)協(xié)議的、由Web服務(wù)器提供的、類似于COM的對(duì)象。注意在技術(shù)上它們并不是COM對(duì)象,但和COM對(duì)象的表現(xiàn)方式很相像。Microsoft希望看到所有的公司使用Web服務(wù),并且未來(lái)的應(yīng)用程序可以簡(jiǎn)單地“粘”在不同的Web服務(wù)上,就像現(xiàn)在可以使用Visual Basic for Applications (VBA)建立基于Office和支持VBA的程序的解決方案一樣。
在PDC上,對(duì)于它希望開(kāi)發(fā)者如何“粘”在這些服務(wù)上,Microsoft提供的一個(gè)演示程序給出了很好的例子。在這個(gè)演示程序里,一個(gè)假想的診所通過(guò)Web服務(wù)提供預(yù)約系統(tǒng),演示了你可以怎樣使用智能電話通過(guò)Web進(jìn)行預(yù)約。Visual Basic.NET 甚至?xí)试S你查詢服務(wù)器,并獲得關(guān)于服務(wù)器能支持的所有Web服務(wù)的相關(guān)數(shù)據(jù)。通過(guò)IntelliSense dropdown這個(gè)絕對(duì)有用的工具,程序員可以訪問(wèn)Web服務(wù)。Web服務(wù)是Microsoft雄心勃勃的戰(zhàn)略,但只有時(shí)間才能檢驗(yàn)它是否能成功地被廣泛接納。
Microsoft試圖消除與包裝和分發(fā)應(yīng)用程序相關(guān)的問(wèn)題,包括令人恐懼的DLL。所有.NET應(yīng)用程序被封裝為元件。元件包含著數(shù)據(jù)以描述它運(yùn)行所需的東西。這些數(shù)據(jù)被稱為貨單,包括很多信息,例如:元件身份(名稱、版本等等);一個(gè)列出了所有文件之間的依賴關(guān)系的表,以及它們的位置和版本;包括DLL相關(guān)數(shù)據(jù)的外部依賴關(guān)系信息;還有其它元件需要而開(kāi)發(fā)者沒(méi)有創(chuàng)建的資源。元件是自說(shuō)明的(通過(guò)它們的貨單),所以.NET應(yīng)用程序不需要修改注冊(cè)表才能工作。換句話說(shuō),你不再需要注冊(cè)表組件。在最好的情況下,即客戶機(jī)里已經(jīng)有了.NET運(yùn)行庫(kù)時(shí),分發(fā)一個(gè)復(fù)雜的應(yīng)用程序可能只是把一個(gè)文件夾復(fù)制到目標(biāo)機(jī)器上這么簡(jiǎn)單的事。元件的另一個(gè)好處是:你可以讓不同的應(yīng)用程序使用同一個(gè)DLL的不同版本,并且協(xié)調(diào)地運(yùn)行在一臺(tái)機(jī)器上。如果所有這些都可以像計(jì)劃中那樣工作,有關(guān)DLL的地獄和版本的噩夢(mèng)就將成為往事。
正確之路
Microsoft徹底更新了它的技術(shù),而不僅僅是核心語(yǔ)言。例如,在Visual Studio.NET里同時(shí)提供了ADO.NET,這是有特殊優(yōu)點(diǎn)的下一代ActiveX Data Objects (ADO) 版本。它的一個(gè)靈活改變是:ADO.NET用Extensible Markup Language (XML)作為在組件之間傳遞數(shù)據(jù)集的格式。這意味著接收組件不一定必須是ADO.NET組件,同時(shí)接收組件可以接受任何XML 格式的數(shù)據(jù)集。談到XML,它支撐著VS.NET中的任何東西,從配置文件到遠(yuǎn)端過(guò)程調(diào)用。ADO.NET在處理斷開(kāi)的數(shù)據(jù)集時(shí)比 ADO的性能要好,并且具有更好的伸縮性。
Visual Basic.NET對(duì)我們都很熟悉的VB做了重要的改變。C 革命性地跳躍到.NET后有了一個(gè)新名字:C#,而Visual Basic的名字沒(méi)變。然而,如果你把VB.NET當(dāng)作語(yǔ)法相似的一門新語(yǔ)言而不是簡(jiǎn)單的“升級(jí)”,可能掌握起來(lái)就要容易一些。本文給你一個(gè)起點(diǎn),但吸收掌握各種知識(shí),并對(duì)未來(lái)做出有根據(jù)的決定是一個(gè)艱苦的過(guò)程,它只是這個(gè)過(guò)程的一條起跑線。我不知道.NET會(huì)有多么成功,它的很多地方吸引我,但有些地方并非如此。這個(gè)工具做了大量承諾,它夸耀很多功能能使 VB開(kāi)發(fā)者更簡(jiǎn)單地創(chuàng)建更有伸縮性的高端應(yīng)用程序。最后,它的成功將取決于開(kāi)發(fā)者能多好地將它應(yīng)用于現(xiàn)實(shí)世界�?v觀Microsoft在PDC和Beta 1版本之間的性能和穩(wěn)定性上所跨過(guò)的這一步,我堅(jiān)定地認(rèn)為:Microsoft走對(duì)了路!
分享:談.Net和Java的socket機(jī)制比較socket是基于TCP和UDP協(xié)議的高層接口,定義了收發(fā)數(shù)據(jù)的格式。Java的TCP服務(wù)中使用的Socket是一種流機(jī)制,即對(duì)于編程人員來(lái)說(shuō),處理socket只需要從Socket中獲取流,然后可以像處理本地流一樣來(lái)進(jìn)行數(shù)據(jù)的收發(fā)。 例如: DataOutputStream outToClient =new D
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- ASP.NET MVC :實(shí)現(xiàn)我們自己的視圖引擎
- 淺談Ja.Net:融合 Java 1.5 和 .NET
- 在asp.net 2.0 中使用的存儲(chǔ)過(guò)程解析
- ASP.NET 2.0 中實(shí)現(xiàn)跨頁(yè)提交
- ASP.NET的底層的工作機(jī)制介紹
- 解析2個(gè)ASP.NET小技巧
- 談ASP.NET創(chuàng)建Web服務(wù)的使用事務(wù)
- ASP.NET筆記之 viewstate與cache的使用
- 使用Fiddler調(diào)試visual studion多個(gè)虛擬站點(diǎn)的問(wèn)題分析
- 解讀.Net基礎(chǔ):學(xué)習(xí)反射中的動(dòng)態(tài)創(chuàng)建對(duì)象
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索細(xì)說(shuō).Net開(kāi)發(fā)中的Visual Basic.Net(3)
- 教程說(shuō)明:
.Net教程-細(xì)說(shuō).Net開(kāi)發(fā)中的Visual Basic.Net(3)
。