微軟公司最新推出的VB.NET是自從VisualBasic程序設計語言問世以來功能最完善的一個版本,該版本中引入了新的程序設計方法和新的工作環(huán)境。本書各章節(jié)中討論的程序設計方法和代碼案例都是針對各種應用提供的實用案例,其范圍不僅包括最常用的文件管理、數(shù)據(jù)庫格式轉換、XMLWeb服務設計等,而且還涉及到C#語言和VisualBasic.NET混合編程的方法和技巧。我們相信,在本書的幫助下,讀者將可以順利地進入面向對象的.NET世界。譯者序微軟公司最近推出的VisualBasic.NET程序設計語言是對10年前開始發(fā)行的VB程序設計語言最大的一次功能升級。作為微軟程序設計語言升級戰(zhàn)略的核心組成部分之一,VisualBasic.NET與微軟的CSHARP語言與VisualC++語言一起組成了微軟公司的VisualStudio.NET。微軟推出VisualStudio.NET的意義在于統(tǒng)一了微軟各種編程語言所實現(xiàn)的用戶界面。除此之外,VisualBasic.NET的功能升級也使VB程序設計語言在功能與程序設計方法方面首次與經典的C++和Java語言平起平坐。從項目開發(fā)的角度來看,VisualBasic.NET為程序員開發(fā)最流行的應用程序提供了高效的開發(fā)工具。從程序員的角度來看,借助于VisualBasic.NET的新增功能,程序員可以快速創(chuàng)建各類基于Windows系統(tǒng)的應用,特別是可以創(chuàng)建基于Web的各種Web服務應用,除此之外,VisualBasic.NET還首次實現(xiàn)了對應用發(fā)布與版本管理的支持。VisualBasic.NET與早期VB程序設計語言的主要區(qū)別在于以下五個方面:1.VisualBasic.NET支持微軟最新推出的ADO.NET和ActiveXDataObjects(ADO)功能。程序員可以通過ADO把基于XML的數(shù)據(jù)綁定到數(shù)據(jù)庫、類、集合,以及數(shù)組中使用。2.VisualBasic.NET首次全面支持面向對象的程序結構,允許程序員創(chuàng)建組件化的可復用代碼資源。VisualBasic.NET不僅支持對象的繼承、封裝、多態(tài)性等對象特征,而且還允許開發(fā)人員在程序中構造可運行在各類操作系統(tǒng)平臺上的XMLWeb服務。3.VisualBasic.NET新增的調試和跟蹤功能允許應用程序直接訪問操作系統(tǒng)的注冊表、事件日志、性能計數(shù)器和文件系統(tǒng)等系統(tǒng)資源。4.VisualBasic.NET在安全方面為程序員提供了強有力的工具。借助于對微軟.NET架構的直接訪問,程序員可以通過.NET架構提供的多種安全模式對其應用實現(xiàn)各種粒度的安全控制。5.借助于VisualBasic.NET提供的移動設備互聯(lián)工具,程序員可以針對80種以上的移動設備開發(fā)各種無線應用。本書適合于從事VisualBasic程序設計的技術開發(fā)人員,以及大專院校有關專業(yè)的師生。本書由劉謙、蘇建平負責校審和統(tǒng)稿,參與本書翻譯工作的其他人員還有王軍平、劉麗云、李新、李江月、張君哲、錢云、劉城、田紅。劉潁、劉新等參與了本書的校對和錄入。由于本書內容較新,篇幅較多,再加上譯者的時間和水平有限,在翻譯過程中難免有疏漏和錯誤,敬請讀者給予批評指正。簡介18個月前,我開始熟悉即將問世的VisualBasic并很快就為它所折服。當時的資料還是很粗略的,但是我還是從中感覺到Microsoft想要將VisualBasic變?yōu)槿娴拿嫦驅ο笳Z言的意圖。我曾有過面向對象的開發(fā)經驗。對“好的OOP設計將會自然而然地組織起你的思路(包括你的代碼)”深有感觸。我希望能盡快在VisualBasic中用到這種設計方法。當然,并不是不費吹灰之力就可以掌握這種方法的。新的VisualBasic并不向上與VB6兼容。由于我的所有的開發(fā)都是使用VB6的,將其升級到新的語言上將不會像由VisualBasic4升級到VB5或由VB5升級到VB6那么簡單。我看VisualBasic.NET即使是對有經驗的VisualBasic開發(fā)者,進入VisualBasic.NET也要學習大量的新的功能及函數(shù)。雖然VisualStudio.NET提供了VB6到VB.NET的程序轉換器,但人們很快就發(fā)現(xiàn)(甚至在嘗試轉換第一個程序之前)這種嚴格的轉換方法對大部分程序并不適用。原因是VB6與VB.NET之間的差別絕不僅僅是一系列語法差別。.NET開發(fā)具有嶄新的語言特性及嶄新的程序之間相互通信的方法。因此.NET應用程序將更像是設計上完全不同的新應用程序。在研究一些VB.NET的例子時,第一個引人注意的主要的區(qū)別就是VB.NET的純面向對象的語言特性。在VB.NET中,任何東西都是類。應用程序、表單、所有的按鈕、標簽和樹型視圖(Treeview)對象都是純對象的實例。這賦予了該語言前所未有的一致性。它也?峁┝舜唇ㄍㄓ糜沒Ы緱胬嗟募壇欣嗟姆椒?,磦蝤使晤U強梢遠越緱嫻墓δ芙性鑾考霸黽郵荽媧⑹糶???VB.NET的面向對象的特性是與.NET框架結構(.NETFramework)緊密相聯(lián)的。.NET框架結構是一個面向對象的API。它表現(xiàn)為上百個類。這些類封裝了在Windows操作系統(tǒng)或MessageQueue及SQLServer等Windows資源中的所能見到的所有功能。這些類按其邏輯分組,每組為一有組織的,具有層次的單元,我們稱之為命名空間(namespaces)。這些命名空間可以在需要時加入代碼中。實際上,不了解.NET框架結構就無法深入學習VB.NET,因為VB.NET是內置于.NET框架結構之中的。.NET框架結構的主要特性之一是其資源回收的概念,而這個概念將會很大地改變程序員的編程思路。.NET框架結構自動對對象所占內存進行管理,這就避免了編程中由于忘記釋放資源而引起內存緊張的現(xiàn)象的發(fā)生。同時它還使程序員能夠將精力放在過程的邏輯上,而不是在查找是否在每一個對象實例化后有相應的釋放該對象的代碼存在。程序員們還將受益于結構化的異常處理程序,這是對OnErrorGoto的巨大改進。一個異常處理程序中的代碼塊由一行或多行代碼組成,可對不同類型的錯誤進行處理。異常錯誤類可能是非常一般性的錯誤,也可能是非常具體的錯誤,所以對某一類的錯誤可以采用一種處理方法,如寫入事件日志,而對另一類的錯誤則需采用不同的處理,如通過消息框向用戶提出錯誤警告。異常處理程序也可進行嵌套,即可在內層代碼塊進行錯誤處理而不影響外層的代碼塊,這在VB6中則需要非常復雜的代碼才能實現(xiàn)。.NET框架結構的創(chuàng)新之一是XMLWeb服務的概念。XMLWeb服務是一組可通過標準HTTP協(xié)議進行調用的對象。對象被串行化(serialized)為XML格式以便于傳輸,然后到達用戶程序并成為標準的.NET框架結構對象。這種編程方法使得開發(fā)者可以通過Internet讓其他人使用自己的程序,或者是免費的,或者是通過某種付費手段。我希望XMLWeb服務將成為下一代的ActiveX控件,從而給予第三方開發(fā)者們一個通過創(chuàng)建可通過Internet存取的可重用對象來相互幫助的舞臺。這個簡短的介紹只是說明為什么VB.NET值得注目。微軟放慢了腳步并重新考慮一個完美的開發(fā)工具的概念。.NET平臺是其嘗試的結果。在使用該語言一年之后,我仍不斷學到新的.NET框架類和新的開發(fā)技術。作者簡介早在1982年,我就是母校高中所有班級中開始接觸計算機的兩個先行者之一,當時我們學校使用的是TRS-80個人電腦(我們稱該電腦為“垃圾80”)。這時的電腦課程主要是學習計算機的基本概念和個人電腦的使用方法。這是一段值得回憶的美好時光,當時給我們上課的老師在計算機知識方面與我們處于相同的水平,不管是老師還是學生,我們都處于啟蒙階段。我的軟件開發(fā)生涯是從高中時代開始的。在俄亥俄州立大學獲得信息科學學士學位后,我在保險公司獲得了第一份工作。那時保險公司的業(yè)務非常有趣,公司的所有數(shù)據(jù)都存儲在老式的大型機系統(tǒng)中(我至今還無法記住該系統(tǒng)的名稱),當時公司的一個程序員編制一個把主機數(shù)據(jù)轉換為個人電腦可以接受的文本文件的客戶查詢工具。公司給我的職務是業(yè)務分析員,其實我的任務就是為公司其他職員做一些輔助工作,如寫郵件標簽、總結項目數(shù)據(jù)進行備份等一般性工作。當時我使用的程序設計工具是Fox軟件公司的數(shù)據(jù)庫語言“FoxPro2”(稍后,微軟公司整體吞并了Fox公司)。我的“跳槽”生涯是從離開保險公司以后開始的(有些跳槽是由于所在公司倒閉或被其他公司合并而迫不得已的)。我先后在財務、商業(yè)零售、運輸?shù)溶浖_發(fā)公司就職,曾經開發(fā)過反病毒程序。上述工作經歷使我明白了一個道理,這就是盡管在每個公司都是在編制程序代碼,但我并沒有在工作中得到希望的樂趣。感謝上帝,我最終在克利夫蘭印第安前鋒公司發(fā)現(xiàn)了我感興趣的工作。五年以來,我一直在該公司開發(fā)專用軟件(in-housesystem)。除了每天在公司用8個小時開發(fā)軟件以外,我還在業(yè)余時間自己編制一些程序。我不知不覺地開始熱衷于個人電腦的游戲軟件開發(fā),曾經在業(yè)余時間為大家所熟悉的游戲“Doom”和“Quake”設計了游戲級別編輯程序。除此之外,我還為Sybex出版社寫了兩本有關游戲級別構造的專著。值得一提的是,我為游戲“Quake”編制的級別編輯器還在游戲軟件零售市場上取得了成功。但最令我感到驕傲的還是Sybex出版社給我提供的這次機會,使我有幸為熟悉VisualBasic語言的程序員提供幫助,引導他們順利地從傳統(tǒng)的VB程序設計方法轉入功能更為強大的VB.NET程序設計的坦途。如果說還有什么事情可以把我的注意力從電腦轉移到其他方面的話,這就是我的愛妻和我們的兩個可愛的寶貝以及我最愛玩的棒球游戲。關于本書及選配光盤本書是針對有經驗的VisualBasic程序員而寫的。正是由于這個原因,我沒有在“Helloworld”程序或其他初級程序上花費時間及篇幅。但我也沒有走另一條路,即寫一個完整的包含所有功能的應用程序,然后解釋每一個代碼行。這種“為書而做”的應用程序很少對大多數(shù)讀者有幫助。我選擇的是:寫一些小