NET Framework:就是微軟Web Services 引擎
有許多程序設計師和使用者非常渴望有一個完善而且透明清楚的基礎架構來建立Web Services(因特網服務)NET Framework 就是為了這個需求而提供的基礎架構NET Framework 提供了應用程序模型及關鍵技術讓開發人員容易以原有的技術來產生布署並可以繼續發展具有高安全高穩定並具高延展的Web Services對於NET Framework 而言所有的組件都可以成為Web ServicesWeb Services 只不過是另一種型態的組件罷了微軟將COM 的優點整合進來它可以不用像COM 那麼嚴謹的來栓鎖兩個對象NET Framework 以松散的方式來栓鎖Web Services 這種型態的組件這樣的結果讓開發人員非常容易的發展出強而有力的Web 服務組件提高了整體的安全及可靠性並且大大的增加系統的延展性
NET Framework:由三個部分組成
NET Framework 的目的就是要讓建立Web Services 以及因特網應用程序的工作變的簡單NET Framework 包括了三大部分:第一個部分是Common Language Runtime(CLR所有NET 程序語言公用的執行時期組件)第二部分是共享對象類別庫(提供所有NET 程序語言所需要的基本對象)第三個部分是重新以組件的方式寫成的ASPNET(舊版本則是以aspdll提供ASP 網頁所需要的對象)
Common Language Runtime(CLR)架構在操作系統的服務上它負責應用程序實際的執行滿足所有的應用程序的需求;例如內存管理處理安全問題整合不同的程序語言等等Runtime供了許多幫助程序寫作的簡化以及應用程序的部署並同時加強程序穩定可靠的一些服務不過程序設計師實際上不會被Runtime 所影響因為他們所面對的是架構在CLR 上面的共享對象類別庫這個共享對象類別庫可以被任何程序語言所使用在這個類別中包含了以建構Web 為基礎的應用程序模型提供以架構Web 服務與Web 應用程序為目標的組件及服務這個就是我們要討論的ASPNET
Common Language Runtime(CLR)
想要執行由某種特定程序語言所開發出來的程序計算機內部必需裝置這種特定程序語言的執行時期(Runtime)組件才可以例如想要執行以VB 所撰寫的程序計算機內就必須有安裝VB的Runtime (msvbvmdll)才可執行;而其它諸如由Java 或是VC++ 等的程序語言所寫成的軟件也是需要Runtime 組件才能執行為什麼Runtime 組件如此重要?這是因為Runtime組件內部有該種程序語言所需要的一些核心功能例如提供該種語言所需要的基本函式及對象等等;所以當程序在執行時會動態的連結到Runtime 組件取得所需要的功能但是不同的程序語言所需要的Runtime 不一樣所以會造成程序設計師在開發時的困難另外在浏覽網頁時如果該網頁有包含有類似以VB 這種程序語言所開發的ActiveX 控件時除該控件會被下載外如果使用者沒有安裝VB 的Runtime 組件那麼執行起來會發生些問題所以為了要解決上述的問題NET Framework 在發展時設計了讓所有NET 的程序語言共同使用的Runtime 組件這個組件的名稱就叫做Common Language Runtime(CLR)CLR 是一個高效率的執行引擎程序代碼的執行是由Runtime 所管理Runtime 負責的工作有產生對象方法(methods對象所能執行的動作稱之)的呼叫等等Runtime 也可以提供程序代碼一些額外的服務我們把要透過CLR 的控制才能執行的程序代碼稱為Managed Code
Intermediate Language 及Just In Time 編譯器
在了解CLR 所扮演的角色後我們要介紹IL(Intermediate Language)以及JIT(Just In Time)編譯器舊版的ASP 是以直譯的方式一行一行的執行程序所以如果網頁程序太復雜或是浏覽人數變多或是服務器負載變重其執行的效率可想而知ASPNET 為了改善執行的效率以及讓程序將來可跨平台執行所以便設計了IL 以及JIT 編譯器IL 這種架構非常接近機器碼可以非常有效率的透過JIT 編譯器轉換為機器碼;而透過JIT 編譯器所編譯出來的機器碼還是被CLR 所管理IL 含有許多廣泛的指令不但包括對象的加載排序初始以及方法呼叫的指令(關於對象方法等第三章有詳細的討論)而且還有算數暨邏輯運算流程控制直接內存存取以及例外處理的指令不過因為每個CPU 的架構都不一樣所以IL 不能夠直接執行;必需透過JIT 編譯器先轉換成被CPU 所認識的指令後才可執行只要有支持該種CPU 架構的JIT 編譯器就可以把IL 編譯成可以在該CPU 架構上執行的機器碼這意味著IL 透過各種JIT編譯器將可以跨平台而IL 這種格式又非常接近機器碼直接由這種格式透過JIT 編譯器編譯成機器碼的速度又非常的快所以第一次執行aspx 網頁時需要編譯成IL 效率較差外爾後只要aspx 網頁沒有異動過就只要從IL 透過JIT 編譯器編譯成機器碼就可以執行效率當然比以前的ASP 網頁以直譯器來執行的效率提升許多編譯成IL 也有另外一個好處那就是只要該種程序語言可以被編譯成IL就可以由JIT 編譯器編譯執行所以不管該組件用VBC#Java 或其它語言所寫成的都可以被結合在一起使用;這個結合組件的動作稱為組裝(Assembly)
組件Assemblies
組件就是組成NET 應用程序的任何元素可能來自於NET Framework 對象類別庫中的基礎對象或是我們自行開發的對象我們利用這些組件來開發NET 應用程序最後將這些組件進行組合的動作使用這些組件將我們的應用程序制作成執行文件(EXE)或是動態連結函式庫(DLL)
From:http://tw.wingwit.com/Article/program/net/201311/13518.html