.NET

.NET由來

90年代,使用微軟平臺的Windows編程分化爲許多分支,大多數程序員使用Visual Basic、C、C++,一些程序員在使用純Win32 API,大多數人在
使用MFC(Microsoft Foundation Class,微軟基礎類庫)。其他人轉向COM(Component Object Model,組件對象模型)
所有的這些技術都有自己的問題。純Win32 API不是面向對象的,而且使用它的工作量比使用MFC的更大。MFC是面向對象的,但是它卻不一致,並且
逐漸變得陳舊。COM雖然概念簡單,單它的世紀代碼複雜,並且需要很多醜陋的、不雅的底層基礎代碼
所以需要一個一致的,面向對象的開發框架,於是誕生了.NET

.NET框架的組成

  • 執行環境:CLR(Common Language Runtime,公共語言運行庫),CLR在運行時管理程序的執行,包括以下內容:
    內存管理和垃圾收集
    代碼安全驗證
    代碼執行、線程管理及異常處理
  • 服務框架:Services Framework
  • 上層的兩類應用模板:傳統的Windows應用程序(Win Forms)模板和基於ASP NET的面向WEB的網絡應用程序模板(Web Forms和Web Services)

.NET特點:

  • 面向對象的開發環境
  • 自動垃圾收集
    CLR有一項服務稱爲GC(Garbage Colector,垃圾收集器),它能爲你自動管理內存
  • 互操作性
    .NET框架專門考慮了不同的.NET語言、操作系統或Win32 DLL和COM之間的互操作性
    .NET提供一種稱爲平臺調用(Platform Invoke,P/Invoke)的特性,允許.NET的代碼調用並使用非.NET的代碼
  • 不需要COM
  • 簡化的部署
  • 類型安全性
  • 基礎類
    .NET框架提供了一個龐大的基礎類庫,很自然的,它被稱爲基礎類(Base Class Library,BCL),有時稱爲框架類庫(Framework Class Library ,FCL)

編譯成CIL

.NET語言的編譯接受源代碼文件,並生成名爲程序集的輸出文件

  • 程序集要麼是可執行的,要麼是DLL 程序集裏的代碼並不是本機代碼,而是一種名稱爲CIL(Common Intermediate
    Language,公共中間語言)的中間語言
  • 程序集包含的信息
    * 程序的CIL
    * 程序中使用的類型的元數據
    * 對其他程序集引用的元數據

編譯成本機代碼並執行
程序的CIL直到它被調用運行時纔會被編譯成本機代碼,在運行時,CLR執行下面的步驟
- 檢查程序集的安全特性
- 在內存中分配空間
- 把程序集中的可執行代碼發送給實施(Just-in-Time,JIT)編譯器,把其中的一部分編譯成本機代碼
託管代碼:爲.NET框架編寫的代碼稱爲託管代碼(managed code),需要CLR
非託管代碼:不在CLR控制之下運行的代碼,比如Win32 C/C++ DLL,稱爲非託管代碼(unmanaged code)

CLR
.NET框架的核心組件是CLR,它在操作系統的頂層,負責管理程序的執行
* 自動垃圾收集
* 安全和認證
* 通過訪問BCL得到廣泛的編程功能,包括如Web服務和數據庫服務之類的功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章