閱讀621 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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應用程序步驟

創建.NET應用程序經曆四個步驟如下:
1.使用某種.NET兼容語言(如C#)編寫應用程序代碼


2.把代碼編譯為CIL,存儲在程序集中

3.在執行代碼時(可執行文件自動運行或其他代碼使用它時運行),首先必須使用JIT編譯器將代碼編譯為本機代碼

4.在托管的CLR環境下運行本機代碼以及其他應用程序或進程

二. 托管代碼

        首先對上麵的術語進行簡單的解釋.
        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進行交互.
        兩者區別可參照 https://bbs.csdn.net/topics/330164764
        垃圾回收 托管代碼最重要的一個功能就是垃圾回收(garbage collection),這種.NET方法可確保應用程序不再使用某些內存時,完全釋放這些內存.會定期檢查計算機內存,從中刪除不再需要的內容.

三. C#編寫應用程序

        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#的入門書籍.同時後麵將講述一些自己薄弱方麵的基礎知識,同時想結合自己想做的東西講解些知識.如果有錯誤或不足之處還請海涵!高手飛過~
 (By:Eastmount 2014-8-17 夜12點 原創CSDN https://blog.csdn.net/eastmount/)

最後更新:2017-04-03 05:39:54

  上一篇:go [數據庫] 如何加表鎖
  下一篇:go 王泛森院士——如果讓我重新讀次研究生