1. 程式人生 > >.NET框架程式設計——體系結構

.NET框架程式設計——體系結構

談到.NET,相信對於大多數初學者而言,都會感覺比較亂、比較迷茫,什麼是ASP.NET、ADO.NET、VB.NET、VC.NET和.NET Framework等等概念,搞的我們暈頭轉向的,他們之間到底是什麼關係呢,為何如此相似呢?我們腦子裡出現了一堆一堆的問號。下面說一下我自己的理解,不正確的地方還望大家多多指教。

首先說一下.NET

.NET是微軟的新一代技術平臺,代表的是微軟的一整套戰略,是一整套在Internet上能夠無縫連線和溝通的軟體技術、工具、產品和服務的總和。它為敏捷商務構建互聯互通的應用系統,這些系統是基於標準的,聯通的,適應變化的,穩定的和高效能的。

看了上面的定義,估計大家都有扁我一頓的衝動了。上面那樣有點太巨集觀了,應該不是大家希望得到的結果。那麼,我還是從技術的角度說吧。讓我們看看

.NET 的組成。大家先看一張圖片。


.NET開發平臺包括:.NET框架和.NET開發工具等組成部分。其中.NET框架(Framework)是整個開發平臺的基礎,它包括公共語言執行時CLR(Common Language Runtime)和框架類庫FCL(Framework ClassLibrary)。.NET開發工具VisualStudio.NET整合開發環境和.NET程式語言。而我們常說的VB.NetVC.NetC#F#等,都屬於.NET程式語言。

下面說一下.NETFramework 的組成


  CLS: Common Language Specification 公共語言規範                                                                                                                                                                    

 CTS:Common Type System 通用型別系統                                                                                                                                                   

CLI:Common Language Infrastructure 通用語言基礎結構                                                                                                                            

CIL:Common Intermediate Language 通用中間語言                                                                                                                                    


我們自己編寫的程式,如果沒有使用FCL中的元件的話,那麼,在.NET的世界裡,我們編寫的程式和FCL中元件的地位是一樣的,屬於同一層,但都在CLR之上。

最後,看看.NET的整體結構


到這裡為止,相信大家對.NET世界裡的這些概念有了一個更清晰的認識。VB.NETVC.NET C#等是.NET世界裡的程式語言,他們同屬於一個級別,而ASP.NETADO.NET是微軟為我們封裝好的,位於.NET Framework 框架類庫中的一些元件,它們不是程式語言,而是一種技術。通俗點說,它們是微軟為我們寫好的dll(有點片面了),與我們自己編寫的dll沒有本質的區別。也許有人會問了,我們經常聽到vb應用程式、c應用程式、c++應用程式、ASP.NET應用程式,怎麼前幾類都是程式語言,asp.net就不是了呢?我的理解是,這只是名字的問題,不能直接推斷出asp.net也是一種語言,之所以我們叫ASP.NET應用程式,是因為無論我們是用vb.net,還是用C#編寫的應用程式,只要我們運用了asp.net技術,那麼就可以稱之為asp.net應用程式。就跟ado.net程式設計一樣,我們在程式中運用了ado.net技術,我們就稱其為ado.net程式設計,難道你也說ado.net是一種程式語言?所以,asp.net應用程式是對一類應用程式的一個統稱。當然,並不是.NET平臺上的應用程式都是ASP.NET應用程式,比如我們用vb.net編寫的WinForms應用程式,他就不能說是ASP.NET應用程式。我們可以這樣認為,在.NET平臺上開發的web應用程式稱為Asp.net應用程式。

以上就是我的一些理解,跟大家理解有出入的,希望大家留下你們的想法,大家一起探討,一起進步。

既然要學.NET,就要先認識認識她,我不喜歡大段大段文字的東西,自己通過理解,畫個圖,來看看.NET的沉魚落雁,閉月羞花之容。

  最下層藍色部分是.NET Framework的基礎,也是所有應用軟體的基礎。.NET Framework不是憑空出來的,實際上API,COM+,和一些相關驅動依然是它的基石。.NET Framework只不過是對這些前輩們進行了系統的封裝和擴充,在這個過程中,吸取了Java框架的很多經驗。關於Win32 API與.NET Framework API的對應關係,可以參考Microsoft Win32 to Microsoft .NET Framework API Map

  廚師通用語言執行平臺(Common Language Runtime,CLR),是對CLI這個架構在Windows平臺的實現。簡單地理解就是CLR這個廚師,讓CLI這本菜譜發揮了其真正的作用。

  下面我們來嚐嚐這些佳餚:

  食物:,所有在.NET能夠使用的類庫。分為兩部分,一部分為原料,另一部分為成品菜

  • 原料:,顧名思義,其中包含一些基礎的類,如:IO,String,Net等等。它們是做菜所必需的原料,當然也可以直接吃。
  • 成品菜FCL中的其他類。這些類庫基本上都是引用BCL,在這些類庫的基礎上做的擴充。如:ADO.NET,ASP.NET,Windows.Forms等等,它們是我們編寫程式更加方便,專一。

  餐具公共語言規範Common Language Specification (CLS) 和公共型別系統Common Type System (CTS) ,是CLI的一部分內容,它們的目的是保證各種語言與.NET Framework的相容性的。就好像有的食客習慣用筷子,有的則喜歡用叉子,像八戒就用九齒釘耙。有了CLSCTS,各路食客就能使用自己喜歡用的餐具吃上可口的食物了。例如:把C#中的int和VB中的Integer統一對映到System.Int32。

  食客:各種語言,C#,VB,等等。

  至於食客們是怎麼吃這些東西的,可以參考深入探索.NET框架內部瞭解CLR如何建立執行時物件,這篇文章詳細的解釋了,.NET是如何執行的,涉及一些底層的東西,大家瞭解就行,不必深究。

  好了,這是我自己對.NET Framework的一點理解,可能比喻有不恰當的地方,甚至有概念性的錯誤,希望大家指出來。我畢竟是初學者,大家的批評會幫助我成長。謝謝!