天天看點

C# 基礎知識 (四).C#簡介及托管代碼

        暑假轉瞬即逝,從10天的支教生活到1周的江浙滬旅遊,在這個漫長的暑假中我經曆了很多東西,也學到了很多東西,也認識到了很多不足之處!閑暇之餘我準備重新進一步鞏固c#相關知識,包括c#入門知識、c#并行開發、asp網站等.這篇文章我介紹的是書籍——c#入門經典(beginning c#) 作者karli watson.主要包括的是我自己缺乏的一些c#簡介知識和托管代碼的内容.内容比較簡單,參照該書籍較多,相當于自己的線上筆記!

                                             《c#入門經典》書籍章節簡介:

                                      第01-14章 c#語言:c#簡介及與.net關系,文法和oop

                                      第15-17章 windows程式設計:使用.net framework各種控件

                                      第18-20章 web程式設計:使用asp.net執行任務、ajax

                                      第21-24章 資料通路:資料儲存磁盤、xml、linq

                                      第25-27章 其他技術:wpf、wcf、wf

建立.net應用程式經曆四個步驟如下:

1.使用某種.net相容語言(如c#)編寫應用程式代碼

C# 基礎知識 (四).C#簡介及托管代碼

2.把代碼編譯為cil,存儲在程式集中

C# 基礎知識 (四).C#簡介及托管代碼

3.在執行代碼時(可執行檔案自動運作或其他代碼使用它時運作),首先必須使用jit編譯器将代碼編譯為本機代碼

C# 基礎知識 (四).C#簡介及托管代碼

4.在托管的clr環境下運作本機代碼以及其他應用程式或程序

C# 基礎知識 (四).C#簡介及托管代碼

        首先對上面的術語進行簡單的解釋.

        cil 在編譯使用.net framework庫的代碼時,不是立即建立專用于作業系統的本機代碼,而是把代碼編譯為通用中間語言(common intermediate language,cil)代碼.

        jit just-in-time編譯器的任務是把cil編譯為專用于os和目标機器結構的本機代碼,os才能執行應用程式.

        clr common language runtime,公共語言運作庫:負責管理用.net庫開發的所有應用程式的執行.

        程式集 編譯應用程式時,所建立的cil代碼存儲在一個程式集中.程式集包括可執行的應用程式檔案(.exe)和其他應用程式使用的庫(.dll).

        過去常常需要把代碼編譯為幾個應用程式,每個應用程式都用于特定的os和cpu結構,現在jit編譯器使用cil代碼(cil代碼獨立于計算機、os和cpu)編譯為本機代碼.

        托管代碼 将代碼編譯為cil,再用jit編譯器将它編譯為本機代碼後,clr(公共語言運作庫)的任務沒有全部完成,還要管理正在執行的用.net framework編寫的代碼(執行代碼的階段叫運作時runtime).即clr管理着應用程式,其方式是管理記憶體、處理安全性及允許進行垮語言調試.相反,不受clr控制運作的應用程式屬于非托管類型.

        換句話說:

        托管代碼 (managed code)是由公共語言運作庫clr環境(而不是直接由作業系統)執行的代碼.

        非托管代碼(unmanaged code)在公共語言運作庫環境的外部,由作業系統直接執行的代碼.

        非托管代碼必須提供自己的垃圾回收、類型檢查、安全支援等服務,而托管代碼從clr環境中獲得這些服務.

        舉例:非托管類型如c++記憶體管理和配置設定,調用構造函數,使用完後釋放記憶體.但是在c#中,隻能編寫在托管環境下運作的代碼,使用clr的托管功能讓.net自己與os進行互動.

        垃圾回收 托管代碼最重要的一個功能就是垃圾回收(garbage collection),這種.net方法可確定應用程式不再使用某些記憶體時,完全釋放這些記憶體.會定期檢查計算機記憶體,從中删除不再需要的内容.

        c#使用的是.net framework沒有限制應用程式的類型,常見的應用程式類型如下:

        1.windows應用程式

        這些應用程式(如微軟office)具有熟悉的windows外觀和操作方式,使用.net framework的windows forms子產品(一個控件庫,其中控件如按鈕,可用于建立windows使用者界面ui)可以生成這種應用程式.還可以使用wpf(windows presentation foundation)建立更靈活卓越的windows應用程式.

        2.web應用程式

        是一些web頁面,可通過任何web浏覽器檢視.其.net framework包括一個動态生成web内容的強大系統,允許進行個性化和安全性等.這個系統叫active server pages.net(asp.net),使用c#通過web forms建立asp.net應用程式.還可以使用silverlight編寫在浏覽器内部運作的應用程式.(接下來wo需要學習研究的東西)

        3.web服務

        這是建立各種分布式應用程式的新方式,使用web服務可以通過internet虛拟交換資料.進階功能還可以建立wcf(windows communication foundation)服務.

        補充一些概念知識如下圖:

C# 基礎知識 (四).C#簡介及托管代碼

       總結:該文章主要是關于c#知識的基礎簡介知識和托管代碼講解,其中主要參照書籍《c#入門經典》,推薦大家學習c#的入門書籍.同時後面将講述一些自己薄弱方面的基礎知識,同時想結合自己想做的東西講解些知識.如果有錯誤或不足之處還請海涵!高手飛過~