簡介:
前言:上一篇文章中BlogBoy已經和大家分享了有關開發ASP.NET應用程式的開發環境及配置的相關話題,那麼接下來我們是不是可以直接討論寫代碼的事情了呢?BlogBoy的答案是:NO,我們是程式員並不是代碼機器,“不假思索,提筆就寫”不是一個良好習慣,還是稍安勿躁,我們還有一些基礎沒有挑明。說到基礎,尤其是做WEB開發,基礎這個東西似乎既高深莫測而又可有可無,說它高深莫測,是因為基礎的東西牽連比較廣,縱橫度可深可淺;說它又是可有可無,是因為許多人可以在沒有掌握它們的前提下,照樣可以很好的完成任務。恩,這些東西確實有過不少的聽聞,不過BlogBoy依舊認為,0基礎的ASP.NET愛好者,最好還是掌握一些最基本的東西,只有瞭解,才能談得上喜愛。
再來說說這篇文章的標題,可能還是會有不少園友要噴,誠然,如果按部就班的以標題為準,事無巨細的講解所有內容將會是BlogBoy的一大噩耗和挑戰,這主要是因為C#、.NET FrameWork、ASP.NET中的任何一個,要把其中的基礎講全面著實不是鄙人所能企及的。閱讀過《C#入門經典》、《ASP.NET2.0入門經典》、《CLR via C#》等相關書籍的讀者都瞭解,掌握其中的技術細節需要花費較多的時間和精力,但是把握其中的大概知識卻並非難事,即便暫時不理解,在以後的閱讀或實踐中能夠更好的做到有的放矢。
首先申明,BlogBoy並非標題黨,雖然標題涉及的內容較多,但只要是標題涉及的東西BlogBoy都會儘力的做出自己的解釋,這篇博文涉及的內容屬於基礎,所謂基礎,就必然是既簡單又複雜的東西,為什麼這麼說呢,舉個不恰當的例子,我相信沒有人不知道1 + 1 = 2,是吧,這是再基礎不過的東西了。可是能否說清楚為什麼1 + 1 = 2呢!呵呵,是不是有點棘手呢。學會一門技術也許不難,難的也許是將它們如何用文字或語言清晰的表達出來,關於這點BlogBoy著實佩服那些部落格大牛,不但技術上厲害,同時也協助了無數的後來者。SO,基礎並不是一篇兩篇文章就能搞定的,BlogBoy和讀者們都需要做好打持久戰的準備(不少讀者可能會感到灰心或失落,但如果靜下心來想想,哪一個真正的“武林高手”不是慢慢練出來的呢,那些或墜崖、或吃錯藥、或筋脈逆轉而又死而複生的“爆發性高手”在程式界真的存在麼……SO,我們普通人還是慢慢來吧!)。
本文:
我想前面已經講的非常清楚了,對於以下的基礎,BlogBoy只會挑選與WEB相關或十分重要的部分作為講解內容,為了讓0基礎的讀者能夠更好的把握主脈,我採用提綱式的講解,期間會附上一些相關的博文地址。
第一部分,c#基礎
在這部分中,我認為讀者應該掌握的知識和順序因該是:
C#的變數和運算式:如果你能熟悉它們的使用方法並且理解各種變數的記憶體結構及相互轉化的過程(類型轉換的一個熱門話題是有關”裝箱拆箱”的,關於這部分內容你可以在這個地址找到一些見解和看法:http://www.cnblogs.com/mqsuper/archive/2008/08/12/1265520.html),那麼恭喜你,你可以順利跳過這一部分。
物件導向的編程理念:其實這部分內容與語言本身無關,有很多資料可以借鑒,比較熱門的話題是關於“設計模式”的,關於設計模式的話題讀者可以參考以下地址:http://www.cnblogs.com/cj723/archive/2007/11/23/962823.html ,BlogBoy個人認為設計模式或編程思想都是需要在項目經驗、代碼重構中不斷得到提煉的,操之過急反而容易走火入魔,園子最近就有相關的文章討論設計模式的利弊,用興趣的可以找出來看看。
集合和泛型以及介面:做WEB開發需要頻繁的使用一些進階對象,如各種List、各種資料集、各種介面,掌握這些對象及介面就可以方便使用或定製自己的資料轉載對象,相關的資料參看以下網址:http://www.cnblogs.com/wf225/archive/2008/01/14/1038104.html ,BlogBoy認為需要掌握的對象或介面主要有:DataTable、DataSet、IEnumerable、IList、ICollection、IDictionary、IDispose等等。
檔案IO、GDI+:這些算是最接近於實際編程的基礎了,你在這裡會聽到託管資源和非託管資源的概念,你會懂得如何及時釋放記憶體資源,還能學習一點繪圖畫線等很鍛煉數字思維的代碼,參考網址:http://www.cnblogs.com/alex-bn-lee/archive/2012/01/22/2328793.html。
調試和異常處理:這個自然十分基礎,而且很有必要掌握,這又篇博文可以參閱http://www.cnblogs.com/zhuqil/archive/2010/01/19/exception_handling_guidelines.html。
看完上面的列表清單,有些讀者可能要問:為什麼沒有事件和委託、為什麼沒有Ling、為什麼沒有多線程、沒有Socket呢!(事實上多線程和Socket本來就不是C#的基礎,而且Socket使用在在Winform情境中更加普遍,這裡會提到這些是因為,他們在C#中都得到支援,並且被熱議,很容易被誤解為是基礎的一部分。)怎麼說呢,首先我覺得這些並不是0基礎的讀者應該首先掌握的東西,其次,這些東西在普通的WEB網站中使用不是非常普遍(特指“顯式的使用”,也許園友會嘲笑我誤導讀者……怎麼說呢,我覺得0基礎的讀者還需要更多的經驗才能稍微理解這些東西,而在沒有理解的前提下貿然使用這些技術可能會適得其反,又或者學習的時候被堵塞在這些知識上,與其卡在這裡,還不如學習更多更普遍的基礎,不是嗎!)
第二部分:.NET FrameWork基礎
CLR基礎:CLR通用語言執行平台的核心功能包括記憶體管理、程式集載入、線程同步、非同步處理等,但這些都不是你現在需要掌握的東西,你唯一需要掌握的就是大致的理解一下CLR的運行過程,以及過程中涉及的一些新名詞,如託管模組、中繼資料、中間代碼……,對這些新名稱保留一些概念,以備後用。參考網址:http://www.cnblogs.com/artech/archive/2010/10/18/clr_memory_mgt_01.html
.NET中的堆和棧:關於這一塊的內容,不能僅僅停留在留有概念的水平上,而是應該嚴格的將它們劃分開並深入理解他們之間的區別,對於0基礎的讀者,你可以暫時簡單的認為.NET中的堆和棧是將我們的記憶體劃分為兩個不等的部分,堆的特點是容量大而速度慢,因此堆中適合用於存放資料和複雜的對象,而棧的特點剛好相反,它一般用於儲存小量資料和對象的地址引用(如果你瞭解二進位和資料結構,效果會更好,但是讀者可以形象的在腦海中記住堆棧的區別)。參考網址:http://www.cnblogs.com/paulxie/archive/2011/03/09/1978056.html
.NET記憶體回收機制:關於這部分的內容,網上有比較多的文章可以借鑒,同樣,0基礎的讀者可以著重理解託管和非託管資源的區別,以及如何手動釋放非託管部分(我們熟知的COM、GDI、IO、資料庫等都屬於非託管的代碼,這也是為什麼諸多文章著重介紹IDispose以及Using用法的原因)。參考網址:http://www.cnblogs.com/riccc/archive/2009/09/01/dotnet-memory-management-and-garbage-collection.html
第三部分:ASP.NET基礎
頁面請求的原理和過程:
ASP.NET的運行機制:待續未完
HTML+CSS+JavaScript:待續未完
ASP.NET網站的各種檔案:待續未完
一些主要的伺服器控制項:待續未完
ASP.NET中的Ajax:待續未完
結語:
由於時間關係,關於ASP.NET部分的基礎沒有寫,只是列了一個大概的目錄,其實這個部分的內容還是相對比較重要的,整個文章寫的也有些淩亂。怎麼說呢,金無足赤,人無完人,活出自己的精彩!BlogBoy其他時間會陸續的補上,盡請期待!最近比較累,先休息去了……