溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.Net Framework 框架工作原理

發(fā)布時間:2020-07-12 00:50:12 來源:網(wǎng)絡 閱讀:671 作者:史秀全 欄目:編程語言


.Net Framework 1.0到現(xiàn)在的.Net Framework 4.0,版本在不斷升級,那么,這些版本升級了什么東西?在哪些方面進行了增加或者增強?它們之間有什么相同之處和不同之處呢?

.Net Framework從出現(xiàn)到現(xiàn)在的.Net Framework 4.0,其框架結(jié)構沒什么大的變化,都是CLROS上面,基類庫在CLR上面,再之上是ADO.NET,XML等,再之上是asp.net ,window form,最上層就是我們經(jīng)常用到的各種.Net開發(fā)工具了.框架圖如下:

Microsoft .NET Framework由應用程序開發(fā)技術、Microsoft .NET Framework 類庫、基類庫和公共語言運行庫(CLR)4個部分組成。這4個部分如圖所示,每個較高的層都使用一個或多個較低的層。

1.應用程序開發(fā)技術

應用程序開發(fā)技術位于框架的最上方,是應用程序開發(fā)人員開發(fā)的主要對象。它包括ASP .NET技術和WinFroms技術等高級編程技術。

2Microsoft .NET Framework 類庫

Microsoft .NET Framework 類庫是一個綜合性的類型集合,用于應用程序開發(fā)的一些支持性的通用功能。開發(fā)人員可以使用它開發(fā)多種模式的應用程序,可以是命令行形式,也可以圖形界面形式的應用。Microsoft .NET Framework 中主要包括以下類庫:數(shù)據(jù)庫訪問(ADO .NET)、XML支持、目錄服務(LDAP)、正則表達式和消息支持。

3.基類庫

基類庫提供了支持底層操作的一系列通用功能。Microsoft .NET 框架主要覆蓋了集合操作、線程支持、代碼生成、輸入輸出(IO)、映射和安全等領域的內(nèi)容。

4.公共語言運行庫(CRL)

公共語言運行庫是Microsoft .NET Framework 的基礎內(nèi)容,也是Microsoft .NET程序的運行環(huán)境,用于執(zhí)行和管理任何一種針對Microsoft .NET平臺的所有代碼。CLR可以為應用程序提供很多核心服務,如內(nèi)存管理、線程管理和遠程處理等,并且還強制實施代碼的安全性和可靠性管理。

下面簡要介紹Microsoft .NET 框架的一些核心技術特點,以便讀者能夠更深入地了解 C# 程序后臺運行的原理。

(1) 多語言支持。在Microsoft .NET 平臺上,所有的語言都是等價的,它們都是基于公共語言運行庫(CLR)的運行環(huán)境進行編譯運行。所有Microsoft .NET 支持的語言,不管是Visual Basic .NET 、Visual C++、C# 還是Jscript .NET,都是平等的。用這種語言編寫的代碼都被編譯成一種中間代碼,在公共語言運行庫中運行。在技術上這種語言與其他語言相比沒有很大的區(qū)別,用戶可以根據(jù)自己熟悉的編程語言進行操作。在本書中使用 C# 進行編程,因為C# 是一種優(yōu)秀的程序開發(fā)語言,它簡潔、高效且便于使用。主要用于Microsoft .NET框架中面向組件的領域。

(2) 多平臺支持。Microsoft .NET框架的另一個重要特點就是多平臺支持。不過相對于 Java 技術能夠跨越 UNIX、Linux Windows 等眾多平臺,目前Microsoft .NET 的跨平臺性僅限于各種 Windows 操作系統(tǒng),如Windows 95/98、Windows NT、Windows 2000 Windows XP 等。

(3) 性能。Microsoft .NET的基本設計目標之一就是具有強大的性能和可伸縮性。對于 Microsoft .NET 來說,要具備很好的性能要靠公共語言運行庫來執(zhí)行中間代碼。為了確保最佳性能,在某種意義上公共語言運行庫將所有引用程序代碼都編譯成本機代碼。這種轉(zhuǎn)換既可以在應用程序運行時完成,也可以在應用程序首次安裝時完成。

有了公共語言運行庫,就可以很容易地設計出對象能夠跨語言交互的組件和應用程序。也就是說,用不同語言編寫的對象可以互相通信,并且它們的行為可以緊密集成。例如,可以定義一個類,然后使用不同的語言從原始類派生出另一個類或調(diào)用原始類的方法。還可以將一個類的實例傳遞到用不同的語言編寫的另一個類的方法。這種跨語言集成之所以成為可能,是因為基于公共語言運行庫的語言編譯器和工具使用由公共語言運行庫定義的通用類型系統(tǒng),而且它們遵循公共語言運行庫關于定義新類型以及創(chuàng)建、使用、保持和綁定到類型的規(guī)則。圖1.32列出了各種程序與CLR之間的關系。

公共語言運行庫具有以下一些優(yōu)點。

改進了性能。

能夠輕松使用其他語言開發(fā)的組件。

類庫提供的可擴展類型。

公共語言運行庫的執(zhí)行模型包括以下幾種。

將源代碼(VB、CS)編譯成托管代碼塊。托管代碼塊由中間語言和元數(shù)據(jù)組成。

將托管代碼合并成程序集。

加載公共語言運行庫

  我們平時用csc.exe 編譯器編譯后的程序都是MSIL形式的,包括window formasp.net中的.exe.dll軟件或者組件.這些軟件和組件在CLR環(huán)境下由CLR環(huán)境的JIT編譯器編譯成本地代碼,之后本地代碼在CLR托管環(huán)境下

運行.CLR負責內(nèi)存管理,垃圾回收等工作,同時負責與OS通信,包括OS上的其他非托管軟件.

何為托管代碼和非托管代碼?

托管代碼是在.NET基礎上開發(fā)出來的代碼,這些代碼經(jīng)編譯成MSIL后,在CLRJIT即時編譯后在CLR托管下運行,故這些代碼稱為托管代碼.而沒在.NET的基礎上開發(fā)出來的代碼,如C/C++/vb開發(fā)出來的COM組件或者API,它們一旦編譯后就編譯成基于OS的本地代碼,它們直接與OS通信,中間沒有經(jīng)過CLR這個中間者,而且內(nèi)存等管理是手動管理的,此類代碼稱之為非托管代碼.

前面講的是.Net Framework各版本之間相同之處,即主要框架結(jié)構模型是相同的,那么,他們之間的最主要的區(qū)別是什么呢?先看看.Net Framework3.0的框架圖:

可以看到,3.0還是用的2.0的基類庫和CLR,只不過在2.0的原有asp.net 2.0,window forms2.0技術的基礎上增加了WCF,WPF,WWF等新技術,其底層還是和2.0一樣,故如果3.0開發(fā)編譯后的東西沒有用到新的基類庫的話,一樣可以在2.0上運行.

這里需要再說明下CLRJIT是如何加載編譯程序集的.JIT并非所有using引用的程序集都加載編譯的,它只加載編譯要用到的程序集,故把一個類作為一個類文件編譯成一個組件或者說是程序集,比并把幾個類寫成一個文件編譯成一個程序集,可以減少很多的加載編譯量,所以最好一個功能,一個類單獨寫成一個程序集.

.Net 3.53.0的基礎上對之前功能的增強外,還新增加了幾個新技術..NET 3.5并未對.NET 2.0現(xiàn)存的技術進行任何改動,包括ASP.NET、ADO.NETWinForm在內(nèi)的主要技術都保持原樣,這對熟練掌握.NET 2.0的技術人員是個好消息,他們所掌握的技術仍然很有價值。根據(jù)微軟.NET平臺發(fā)展趨勢來看,.NET 2.0平臺將為.NET 3.5提供基礎類庫,.NET 3.5將著重引入語法,數(shù)據(jù)訪問和Web客戶端上的一些創(chuàng)新。可以把.NET 3.5看做是.NET 2.0的超集,是對.NET 2.0的一次補充。

如果開發(fā)者是從.NET 1.01.1遷移到3.5,那么需要考慮代碼的兼容性問題,盡管.NET框架已經(jīng)盡力保證向后兼容性,不過由于一些安全方面的改進,仍然有少數(shù)重要操作存在不兼容的現(xiàn)象。從.NET 2.03.5則完全不存在這個問題,因為.NET Framework 3.5 的所有組件都可在支持 .NET Framework 3.5 的平臺上運行。

.NET 3.5還增加了LINQ(語言整合查詢)和ASP.NETOR/M框架(ASP.NET Entity Framework)等新功能。這些新功能增強了VBC#等語言的作用,為.NET環(huán)境提供了OR/M框架,它們都可以和WPF/WCFWF共同工作,創(chuàng)建強大的應用程序。

net framework 2.0,3.03.5三個版本之間關系如下:

.net framework 2.0 = CLR 2.0 + FCL(framework class library)

.net framework 3.0 = .net framework 2.0 + SP1 + WPF + WCF + WF + CardSpace

.net framework 3.5 = ..net framework 3.0 + SP2 + new compiler

這三個版本frameworkCLR都是2.0,因此,asp.netruntime還是只有1.12.0,像Linq這些新功能其實只是用新的編譯器加上一些新的類庫來實現(xiàn)的,3.5版本并沒有對CLR做大的升級。

VS2008支持在2.03.03.5三種版本下開發(fā)項目,VS2005的項目可以平穩(wěn)的升到VS2008上,在VS2008下做VS2005的項目,用的編譯器和類庫同VS2005都是一樣的,但是提供了更好的開發(fā)環(huán)境?! ?/span>

Framework 3 SP1除了修正了一些Framework 2bug之外,主要的擴展是加了3W框架,分別是WPFWCF,WWF。F3.5F3類似,在修正之前的Bug之外,主要的擴展是:LINQ,WF,WCF,Add-in(今后會被MEF替代)。Framework 3.5 SP1,又添了幾個新東東:MVCDynamic Data,Entity Framework,Data Services等。當然這里面我們也不能忽略了Framework 3在語言上進行的改進,例如Linq,Lambda,擴展函數(shù),var類型的使用等等。

現(xiàn)在看看Framework 4.0又給我們帶來了什么?

.NET Framework 4Framework 3.5 SP1并行工作。在舊版的Framework中可以運行的應用程序,將繼續(xù)能夠運行在.NET Framework 4上。

Visual BasicC #語言中有所創(chuàng)新,例如聲明lambdas 、隱線continuations 、動態(tài)調(diào)度、并命名/可選參數(shù)等。

ADO.NET實體框架中增加了許多新的功能,通過提高抽象層次,從而簡化開發(fā)人員的關系數(shù)據(jù)庫的程序。這些新功能包括:持續(xù)忽略、POCO支持、延遲加載,測試驅(qū)動開發(fā)的支持、功能模型以及新的LINQ運營商等。

一、以下是ASP.NET中的改進:

改進JavaScript用戶界面模板和AJAX中的數(shù)據(jù)綁定功能;

改進ASP.NET的圖表控制;

二、以下是WPF中的改進:

WPF中增加Windows 7多觸控、ribbon控制、任務欄擴展功能支持;

WPF中增加Surface 2.0 SDK支持;

新的業(yè)務線控制,包括圖表控制,智能編輯,數(shù)據(jù)網(wǎng)格,以及其他能夠提高建立數(shù)據(jù)中心的應用程序的開發(fā)者經(jīng)驗的控制。

提高性能和可擴展性;

在文字、像素布局、本地化和互操作性中添加可視化改進;

三、Windows WorkflowWF)中的改進讓開發(fā)者能夠更好地控制工作流程,具體改進如下:

改善活動規(guī)劃模型;

改進設計體驗;

一個新的流程建模方式;

擴大調(diào)色板的活動范圍;

工作流程規(guī)則一體化;

新郵件相關的功能。

四、.NET框架還為基于WF的工作流程提供重大的性能改進:

改進Windows通訊基礎( WCF )構架,例如流服務相關支持,雙向通信的持久性等。

.NET框架4還提供了新的WCF功能,例如服務發(fā)現(xiàn)、路由器服務、簡化配置、REST支持、診斷和性.

visual studio 2005 IDE, 就是集成開發(fā)環(huán)境,只是一個工具,你可以理解為一個功能強大的編輯器(記事本?)

.net framework2.0 是運行環(huán)境, .net framework2.0 sdk是開發(fā)環(huán)境,沒有前者,你就不能運行.net程序,沒有后者,你就不能做.net開發(fā)。

通常vs會自帶.net framework sdk, 但做.net開發(fā)一定要明白什么是什么。其實即使沒有vs2005之類的ide,在純命令行下都可以用.net sdk做開發(fā)的。

我是做java的,沒裝vs,但是概念肯定是這樣。這就好比eclipsejrejdk的關系。

.NET Framework.NET Framework SDK的區(qū)別,以及使用上的不同

1.NET Framework.NET Framework SDK有區(qū)別

2、什么是.NET Framework

.NET Framework是微軟開發(fā)的運行于各個操作系統(tǒng)之上的.NET軟件運行平臺,相對獨立于微軟的各個操

作系統(tǒng)之上。只要安裝了.NET Framework,則從Windows 98Windows XP都可以運行.NET程序。

3、是否要安裝.NET Framework

同時對于基于.NET Framework開發(fā)的程序,必須運行在.NET Framework的平臺上。目前至少有超過20%

自己開發(fā)的應用程序是基于.NET Framework開發(fā)的,所以一般建議安裝Microsoft的各種操作系統(tǒng)之后,

安裝.NET Framework。  

4、.NET Framework的功能

.NET Framework是一種新的軟件運行平臺,提供了.NET程序運行時支持和功能強大的類庫。可以從微軟網(wǎng)站免費下載。  

5.NET Framework版本  

目前包括的版本包括.NET Framework V1.1版、目前包括的版本包括.NET Framework V2.0版、目前包括的版本包括.NET Framework V3.5版,最新版本為目前包括的版本包括.NET Framework V4版。其中1.1版和2.0版之間有本質(zhì)差別,可能出現(xiàn)不兼容情況。一般使用V2.0以上版本就夠了。

二、.NET Framework.NET Framework SDK的區(qū)別,以及使用上的不同

1、.NET Framework.NET Framework SDK的區(qū)別  

只有一句話,如果只安裝了.NET Framework,只能運行.NET應用程序,而不能開發(fā).NET應用程序。

2、什么是.NET Framework SDK  

.NET Framework SDK 包括了微軟提供的.NET 語言編譯器(如C#編譯器CSC.exeVB.NET編譯器VBC.exe

),完整的.NET Framework文檔,以及各種工具(如AL.exeSN.exe等),大概有110MB。好像只有兩個版本:.NET Framework SDK V1.1版、.NET Framework SDK V2.0

3、.NET Framework SDK可以干什么用?  

裝了這兩個東西之后,你就可以用記事本來編寫代碼,然后在DOS窗口中手動編譯.NET程序啦。  

4、開發(fā)人員是否必須安裝.NET Framework SDK  

開發(fā)人員不必安裝.NET Framework SDK,Visual Studio的各個版本中基本都自帶了,除非一些特殊的情況,才需要安裝.NET Framework SDK。

首先我要講一點C#的程序的可移植性還不夠強大,目前,在微軟以外的操作系統(tǒng)上運行我還沒有看到。一般C#程序只能運行在Windows操作系統(tǒng)上,或者經(jīng)微軟授權的相在系統(tǒng)上。C#編譯的文件是EXE文件。但他和C++exe文件是有區(qū)別的。C#exe文件是運行在.net構架之上的。沒有.net構架,C#程序?qū)o法運行。C#exe文件有點于類似于匯編語言。這種匯編語言叫中間語言。在運行這種EXE文件時,要.net進行解釋。所以這種程序即編譯又解釋


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI