.net基礎知識--框架體系
剛開始接觸.NET很疑惑,看完視訊也不是太懂,通過總結和反覆,從概括和概念入手,慢慢變得清晰了。這篇部落格主要是我對.NET基礎知識的瞭解,算作積累吧。
.NET框架體系結構
由四個主要部分組成
公共語言執行時(CLR)是.NET框架應用程式的執行引擎..NET框架的關鍵作用在於,它提供了一個跨程式語言的統一程式設計環境,這也是它能獨樹一幟的根本原因。
.NET框架為開發人員提供了一個統一、面向物件、層次化、可擴充套件的類庫集,即基底類別庫(BCL)。
而ADO.NET是一個新的資料訪問框架,滿足了ADO無法滿足的三個重要需求:提供了斷開的資料訪問模型
活動服務企頁面(ASP.NET)提供了一個統一的Web開發模型,其中包括為開發人員生成企業級Web應用程式所需的各種服務和全新控制元件.它是一個已編譯的、基於.NET環境的、可以用任何與.NET相容語言建立的應用程式。
.NET程式的編譯與執行
在編譯使用.NET框架建立的程式碼時,不是立即建立成作業系統特定的本機程式碼,而是把程式碼編譯為微軟中間語言(MSIL)程式碼。在執行應用程式時由JIT編譯器把MSIL編譯為專用於某種作業系統和目標機器結構的本機程式碼,然後作業系統才能執行應用程式。
程式集
在編譯應用程式時,建立的MSIL程式碼儲存在一個程式集中,程式集包括可執行的應用程式檔案(.exe)和其他應用程式使用的庫(.dll),還包括元資料和可選資源。
託管程式碼
託管是什麼意思,說白了就是讓CLR管理著應用程式,從原始碼到MSIL,再到本機程式碼,再到程式執行,由.NET與作業系統進行互動。不在CLR控制之下執行的應用程式時非託管的。
託管程式碼最重要的一個功能是無用儲存單元收集(garbage collection),也稱垃圾回收,確保應用程式不再使用某些記憶體時,這些記憶體會被完全釋放。
下面這張圖是.NET程式的編譯與執行時的情況:
.NET VS J2EE
.NET框架與SUN公司的J2EE體系結構是當今企業應用的兩大體系結構,它們有很多相似之處,如下圖(左側為.NET框架,右側為J2EE):
可以看出,對於.NET框架的每一部分,J2EE體系結構都有所體現,他們都是企業級開發平臺,並且廣泛應用於Web開發領域。.NET框架和Java都使用了託管的執行時環境,都將原始碼轉換為一種中間語言,然後將其編譯為本地的可執行程式碼,兩種體系結構都提供了無用儲存的單元收集器、動態類載入和異常處理等。
下面是關於.NET的幾個小問題:
- .NET框架可以運行於哪些平臺?
目前可以執行在windows95/98/ME、windowsNT4.0、windows2000、windowsXP、windows2003、windowsvista上。
此外還有一個稱為.NET精簡框架的.NET框架版本,它執行在WindowsCE和其他嵌入式作業系統上。
- .NET框架支援哪些程式語言?
.NET框架與程式語言無關。事實上任何語言都可以支援.NET框架。目前可以用許多語言來建立.NET程式,包括:C++、VB.net、JScript、C#。以後也會有大量的第三方語言可以用來建立.NET框架應用程式,包括Cobol、Eiffel、Perl、Python、Smalltalk等。
- .NET框架可以建立哪些型別的應用程式?
並不限制應用程式的型別,可以建立控制檯應用程式、windows應用程式、Web應用程式、Web服務和其他各種型別的應用程式。
- .NET框架和COM+服務之間是什麼關係?
在.NET框架中,不僅可以完全訪問COM+服務,而且也更容易建立服務元件。.NET框架元件還可以利用COM+中所提供的服務,如事務、物件池、排列元件、事件等。
那麼“什麼是.NET?”
微軟董事長兼首席軟體設計師比爾蓋茨的回答:“.NET是指連線資訊、人群、系統和裝置的軟體。”
微軟原總裁兼執行長鮑爾默說:“.NET代表了一個集合、一個環境、一個可以作為平臺支援下一代Internet的可程式設計結構。”
現在再看這兩個解釋,確實是這麼回事,好像沒有那麼抽象了。。。