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