程序員的.NET時代——李洪根

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

技術總是在不斷發展,微軟.NET平臺經歷了三年時間的歷程,已經被廣大開發人員所接受。我們利用Visual Studio.NET,可以快速、高效地進行Windows Form和Web Form的應用開發。.NET是一個全新的概念,.NET代表了一個集合、一個環境、一個編程的基本結構,作為一個平臺來支持下一代的互聯網,因為我們相信世界不會倒退到集中計算的主機模式下。在XML Web Service技術逐漸成熟的時候,軟件可被當作一種服務,支持新的設備,這些設備包括PC、移動電話、PDA、車載系統和機頂盒等,實現相關設備協同工作,給用戶帶來全新的體驗,微軟演繹著一場新的互聯網革命。作為.NET開發人員,我們應該會對未來充滿信心。

      程序員是這場互聯網革命的推動者,我們大家都在不斷的學習技術、充實自我,以適應未來的變化(在這里我不想進行.NET和JAVA的比較,因為這兩個領域的技術各有所長,而且涵蓋的范圍都相當廣,單純進行語言的比較是沒有意義的)。微軟用.NET為未來十年做了準備,所以當務之急,必須掌握.NET開發工具這個利器,來構建我們的應用。其實.NET入門也是比較容易的,一般來說,基本掌握.NET程序設計三個月就夠了,半年以后,你就會成為一個合格的.NET程序員。如果想成為.NET領域的高手,那就得在這個領域積累非常豐富的經驗。

       .NET是這十年中比較流行的開發工具。我用.NET開發已有兩年多時間了,現將我的學習經驗和方法和大家分享。系統地學習.NET需要一個循序漸進的過程,我們分為入門級和提升級。如果你是入門者,下面的每個學習階段都是很重要的。假若你對.NET比較了解,可以選擇你的需要的知識進行學習。

入門篇

1.         學習面向對象(OOP)的編程思想

許多高級語言都是面向對象的編程,.NET也不例外。如果您第一次接觸面向對象的編程,就必須理解類、對象、字段、屬性、方法和事件、封裝、繼承和多態性、重載、重寫等概念。需要說明的是,微軟的產品幫助文檔做得非常完善,而且查詢相當方便,入門者不得不看。安裝完Visual Studio.NET2003(或者Visual Studio.NET 2002)后,在“程序”組里有一個Visual Studio 組合幫助集合。初學者從幫助文檔就會獲得許多知識。

2.         選擇一門語言,學習語法及相關基礎知識

選擇語言的標準:根據你自己的需求和個人的技術背景。在.NET平臺下,C#、VB.NET都是調用Framework的類庫,效率基本一樣,C#的語法嚴謹,適合以前C++、VC的程序員。VB.NET不區分大小寫,寫法隨意一些.,自動縮進,適合以前VB的程序員,微軟也一再提倡用VB.NET進行快速開發。VC++.NET更接近底層,可以用托管和非托管兩種方式進行編程。

選擇了需要使用的語言后,我們需要了解語言的語法規則,包括語句、類型、表達式、運算符、函數等等,我建議一開始寫程序就要養成良好的編程風格,規范地進行變量的命名,在代碼中寫好注釋。這對以后的軟件開發生涯都是很有意義的。

3.         理解.NET思想并熟悉框架類庫(Framework Class Library)

我們借用一幅圖來說明一下公共語言運行庫(CLR)、框架類庫(FCL)與應用程序之間以及與整個系統之間的關系。


首先,我們要了解公共語言運行庫、程序集、通用類型系統的概念。在此基礎上,學習.NET框架類庫。.NET 框架類庫是一個與公共語言運行庫緊密集成的可重用的類型集合。.NET 框架類庫封裝了大部分Win32 API ,許多以前需要調用API才能實現的功能,在.NET下非常容易就實現,許多情況下只需要一句話就足夠了。所以,我們在程序設計的時候要盡量避免調用Win32 API。學習.NET 框架類庫的捷徑:掌握常用的類庫,其它不常用的類庫只需要了解,用到的時候查閱即可。

4.         利用Visual Studio.NET寫程序

在.NET平臺下寫程序我們一般用微軟的開發工具Visual Studio.NET,因為一個好的IDE,能極大地提高開發效率。我建議初學者從Windows Forms或者是Web Form開始,等有一定的基礎之后,再轉向寫類庫或是控件、組件方面的東西。微軟的幫助文檔里自帶許多示例,我們可以一邊看幫助,一邊進行演練。在學習其中的代碼的同時,一定要理解和思考。多寫代碼、從項目中鍛煉是編程高手的成長之路。記住:一定要多看多寫源代碼;多上論壇(如CSDN和Dev-club)和微軟的新聞組討論技術問題。

我們一定要用好Visual Studio.NET這個集成開發環境,除了編寫代碼外,我們還要了解.NET的部署原理,學習打包、部署及管理應用程序。多人開發的項目可以考慮用Visual Source Safe進行源代碼管理,這一系列開發工具的使用都要有大量的實踐。

 

推薦書籍:

《C#高級編程》(第二版)(清華大學出版社)

《Microsoft.NET程序設計技術內幕》(清華大學出版社)

《Visual VB.NET技術內幕》(清華大學出版社)

《Visual C#.NET技術內幕》(清華大學出版社)

.NET入門教程(包括Windows Form和Web Form):

http://chs.gotdotnet.com/quickstart

5.         最好掌握大型數據庫編程

一般來講,大多數軟件開發都涉及到數據庫。大部分軟件的后臺數據庫都使用如Access、SQL SERVER、Oracle等。ADO.NET提供了對關系數據、XML 和應用程序數據的訪問。我們必須掌握Connection、Command、DataReader 和DataAdapter 對象的使用,正確運用DataSet數據集和DataView進行數據操作。當然,要有一定的數據庫基礎,包括表、視圖、存儲過程等的使用。必須把后臺數據庫和前臺的ADO.NET都掌握好,才能真正精通數據庫編程。

在項目的開發中,建議使用數據訪問應用程序塊(Data Access Application Block)來簡化SQL查詢。微軟msdn網站有下載,我們可以利用SqlHelper類進行的數據訪問,使用起來非常簡單,很容易地構建我們的數據訪問層。參考微軟MSDN文檔:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp

推薦書籍:

《ADO.NET技術內幕》(清華大學出版社)

《ADO.NET高級編程》(中國電力出版社)

《VB.NET和SQL Server 2000高級編程—創建高效數據層》(清華大學出版社)

6.         學習XML WEB Service

XML Web services 正在開創一個分布式應用程序開發的新時代。XML Web Services 是把軟件當成服務的一種體現,通過使用XML 消息處理啟用數據交換和應用程序邏輯遠程調用。XML使數據能夠通過防火墻,實現異類系統之間移動數據。雖然公共的Web Services還不是很普及,但是在一些企業中,已經涉及到了Web Services的開發。用Visual Studio.NET 很容易創建Web服務,調用Web服務也相當簡單,只需要添加一個Web引用,然后調用即可。進行這方面的學習,需要了解Web 服務描述語言(WSDL)、SOAP協議等。

推薦書籍:

《構建XML WEB服務:基于Microsoft.NET平臺》(清華大學出版社)

《Building XML WEB Services for the Microsoft .NET Platform》(影印版)

.NET技術網上資源:

中國軟件網(中國最大的技術社區)

http://www.csdn.net

計算機世界開發者俱樂部

http://www.dev-club.com

中國Dot Net俱樂部

http://www.aspx.cn

微軟官方MSDN權威站點:

http://msdn.microsoft.com

微軟官方ASP.NET站點:

http://www.asp.net

微軟官方Windows Form站點:

http://www.windowsforms.net

微軟官方Dot NET站點:

http://www.gotdotnet.com

英文站點Code project:

http://www.codeproject.com


************************************************************************

提升篇

1.         學習.NET框架開發平臺底層原理和體系結構

.NET框架的核心是公共語言運行時(Common Language Runtime,CLR)。通常情況下,我們使用一種高級語言(如C#或者VB.NET)編寫程序,這些高級語言的編譯器產生的是一個托管模塊(即中間語言IL代碼)。托管模塊是一個需要CLR才能執行的標準Windows PE文件。執行中間語言代碼的時候,CLR中的即時編譯器(Just-in-time,簡稱JIT) 把其轉換成CPU指令。這中間有許多細節,包括怎么初始化CLR,微軟組件運行時執行引擎MSCorEE.dll(Microsoft Component Object Runtime Execution Engine,在system32目錄下)怎么工作等等。如果你想精通.NET技術,就必須對.NET框架原理、程序集、元數據、值類型/引用類型、類型設計、異常處理、自動垃圾回收等核心技術有一個清楚的認識。

推薦書籍:

《.NET框架程序設計》(修訂版) (清華大學出版社)

《Applied .NET Framework Programming》(影印版)Jeffrey Richter著

《.Microsoft .NET IL匯編語言程序設計》

《.NET 本質論》(中國電力出版社)

2.         熟練運行底層工具進行調試和解決各種問題

了解.NET平臺的底層原理,我們需要學會一些工具和CLR 調試器(DbgCLR.exe)的使用。C# 命令行編譯器(Csc.exe)和VB.NET編譯器(Vbc.exe)的重要性就不用再多說。

.NET 框架SDK 提供的幾個比較重要的工具是:MSIL匯編程序(Ilasm.exe)、MSIL反匯編程序(Ildasm.exe)、程序集鏈接器(Al.exe)。強烈建議大家在開發中多使用MSIL 反匯編程序(Ildasm.exe),以加強對CLR和底層的了解。MSIL 匯編程序(Ilasm.exe)從MSIL 匯編語言生成可移植可執行的PE 文件。反匯編程序(Ildasm.exe) 可對任意.NET 框架.exe 或.dll 程序集進行分析,并以可讀的格式顯示信息。程序集鏈接器(Al.exe) 從一個或多個文件生成一個帶有程序集清單的文件。.NET框架SDK還提供許多其它的工具,如:PEVerify 工具(Peverify.exe)、強名稱工具(Sn.exe)等,我們力求能用命令行的方式使用他們。

需要指出的是:Visual Studio.NET不是能完成所有命令行能做的工作,一些任務必須由命令行來完成。如:創建多文件程序集,必須求助于csc.exe的addmodule選項。只有在對.NET 框架有很深理解的基礎上,才會靈活運用這些工具。

3.         進行大型軟件系統架構設計

進行軟件系統的架構設計,需要積累相當豐富的經驗,要求我們從全局的概念上把握軟件的總體結構。首先的一點是,我們必須參照軟件需求說明書。需求說明書是用戶和開發雙方對所開發軟件的功能、性能、用戶界面及運行環境等做出詳細的說明,所以我們設計軟件必須以此為依據。接下來,我們要做軟件的總體設計,即概要設計。一般需要根據軟件的業務需求和業務流程進行模塊劃分,規劃程序的總體結構、輸入輸出以及接口設計、運行設計、數據結構設計和出錯處理設計等,為詳細設計奠定基礎。在詳細設計中需要指出每一模塊是怎樣實現的,包括實現算法、邏輯流程、數據流程圖等。以后的工作,就是程序的實現。測試是和編碼同步進行的,必須嚴格把好質量關。

在用.NET開發大型系統的時候,一般都是做成三層(或是N層)結構的形式。即將應用程序邏輯地分為3個基本層:數據訪問和存儲、業務邏輯層、表示層。三層結構的優點主要是:可擴展性、可伸縮性和靈活性。在做Web應用的時候,可以考慮采用MVC(模型-視圖-控制器Model-View-Controller)模式讓Web應用程序的用戶界面功能實現模塊化。

順便要說的是,大型軟件有時需要整合多種產品,來滿足企業級的應用需求。微軟提供了許多Server產品,如SQL Server 、Exchange Server、Share Point Server、BizTalk Server等。記住:大家一定要多了解微軟的產品線,微軟很多技術都是相符相承的,結合起來才能發揮作用!我們可以微軟的Server級產品的基礎上整合軟件系統、實現數據共享訪問、終端設備上的電子郵件、消息協作。總之,通過互聯網,讓所有人一起協同工作,是未來軟件的發展趨勢。我們把握好這些方向,就等于駕馭未來。

推薦書籍:

《使用Microsoft .NET 的企業解決方案模式》微軟出版社

《Enterprise Solution Patterns Using Microsoft .NET》MS Press 

網上資源:

軟件工程專家網

http://www.51cmm.com

UML軟件工程組織

http://www.uml.org.cn/

http://www.umlchina.com

4.         帶領團隊進行軟件開發

一個好的團隊,才能開發一個成功的產品。軟件開發主要由項目管理團隊、軟件開發團隊、軟件測試團隊組成。項目管理人員主要對項目進行控制,協調開發人員、測試人員的工作。開發人員的工作主要是負責軟件的實現。測試人員是軟件產品的質量保障。其它人員,如產品規劃方面、軟件技術支持和文檔、后勤都是不可缺少的。

大型軟件是許多人集體智慧的結晶,要求Project Leader有較強的管理能力和技術背景,以及良好的溝通能力。如果你作技術的時間很長,積累了豐富的經驗,做過項目組長等管理工作,通過不斷的學習和提升,極有可能成長為Project Leader。如果你已是Project Leader,就到對軟件的成敗負責,你可以根據現有資源決定開發中任務分配,合理用人,決定功能模塊是否值得開發,項目進度控制等許多問題。總之,帶領團隊的人必須有遠見卓識,采取正確方法引領團隊取得成功。

推薦書籍:

《人月神話》清華大學出版社

《人件》清華大學出版社

技術展望

1.無縫計算(Seamless Computing)

目前,大部分的應用還局限于桌面系統。在過去的二十年,軟件定義了信息時代,但受到硬件的局限。今天,軟件決定了數字時代。“無縫計算”是一個軟件創新框架,旨在消除不同軟件系統之間所存在的界線,無縫計算概念就是要以無縫的方式發揮硬件的全部能力。軟件的根本性創新應在網絡化系統、信息驅動型軟件和多媒體用戶接口等領域中體現出來。未來,軟件將不再受制于硬件功能。軟件將幫助人們更好地協同作業,逐步實現為人們提供理想工作環境的無縫計算。微軟推出的Windows Server 2003、Office System 2003、Visual Studio.Net、Web Service,以及今后發行的SQL Server “Yukon” 、Windows Longhorn則是無縫計算的基礎。比爾.蓋茨在Comdex 2003會議上承諾:要為無縫計算提供全方位的框架與服務。無縫計算──的確值得我們期待!

2.無線通信

在無線通信方面,用.NET進行移動開發,實現所有設備終端協同工作。微軟在2003年已推出精簡版的.Net 開發框架(.Net Compact Framework)。它和Smart Device Extensions (SDE) for Visual Studio .NET 一起,將更強的開發能力和強大的編程平臺帶到了移動設備(如PDA、移動電話、機頂盒和各種運行Window CE .NET操作系統的嵌入式設備)的開發工作中。今后的無線通信市場更加巨大,微軟和各大廠商的合作,將使用.NET進行移動開發的人員更加受益。

總結:

.NET是一個劃時代意義的概念,可以說未來十年內,會有更多的軟件開發商使用.NET。我們可以看到,現在的VS.NET功能已經很強大了。而且微軟的開發工具會更加完善,每一個新版本的VS.NET都比上一版本有許多提升。以后將會有更多程序員步入.NET陣營,程序員的.NET時代,將會極大提高生產率。設想如果世界上的每一臺服務器都運行一個Web Service,提供一個Web API,每個API都能完成一個強大的功能,這是一個多么強大的環境啊!我們期待這所有的一切。現在,我們要做的是:掌握好今天的.NET,迎接明天的輝煌。


李洪根 2011-02-23 05:02:44

[新一篇] 程序員每天該做的事

[舊一篇] 程序员不擅长沟通???
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表