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