程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 基礎知識 (四).C#簡介及托管代碼

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

編輯:C#入門知識

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#)編寫應用程序代碼

data-cke-saved-src=https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017012018473547.jpg
2.把代碼編譯為CIL,存儲在程序集中
data-cke-saved-src=https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017012018473562.jpg
3.在執行代碼時(可執行文件自動運行或其他代碼使用它時運行),首先必須使用JIT編譯器將代碼編譯為本機代碼
data-cke-saved-src=https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017012018473534.jpg
4.在托管的CLR環境下運行本機代碼以及其他應用程序或進程
data-cke-saved-src=https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017012018473586.jpg

二. 托管代碼

首先對上面的術語進行簡單的解釋.
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進行交互.
兩者區別可參照 http://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)服務.
補充一些概念知識如下圖:
data-cke-saved-src=https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017012018473616.jpg

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved