.NETFramework
.NETFramework是支持生成和運行下一代應用程式和XMLWebservices的內部Windows組件。.NETFramework旨在實現下列目標:·提供一個一致的面向對象的編程環境,而無論對象代碼是在本地存儲和執行,還是在本地執行但在Internet上分布,或者是在遠程執行的。
·提供一個將軟體部署和版本控制衝突最小化的代碼執行環境。
·提供一個可提高代碼(包括由未知的或不完全受信任的第三方創建的代碼)執行安全性的代碼執行環境。
·提供一個可消除腳本環境或解釋環境的性能問題的代碼執行環境。
·使開發人員的經驗在面對類型大不相同的應用程式(如基於Windows的應用程式和基於Web的應用程式)時保持一致。
·按照工業標準生成所有通信,以確保基於.NETFramework的代碼可與任何其他代碼集成。
.NETFramework具有兩個主要組件:公共語言運行庫和.NETFramework類庫。
公共語言運行庫是.NETFramework的基礎。您可以將公共語言運行庫看作一個在執行時管理代碼的代理,它提供記憶體管理、執行緒管理和遠程處理等核心服務,並且還強制實施嚴格的類型安全以及可提高安全性和可靠性的其他形式的代碼準確性。這類似於Java的虛擬機。事實上,代碼管理的概念是公共語言運行庫的基本原則。以公共語言運行庫為目標的代碼稱為託管代碼,而不以公共語言運行庫為目標的代碼稱為非託管代碼。
.NETFramework的另一個主要組件是類庫,它是一個綜合性的面向對象的可重用類型集合,您可以使用它開發多種應用程式,這些應用程式包括傳統的命令行或圖形用戶界面(GUI)應用程式,也包括基於ASP.NET所提供的最新創新的應用程式(如Web窗體和XMLWebservices)。
客戶端應用程式開發
客戶端應用程式在基於Windows的編程中最接近於傳統風格的應用程式。這些是在桌面上顯示視窗或窗體從而使用戶能夠執行任務的應用程式類型。客戶端應用程式包括諸如字處理程式和電子表格等應用程式,還包括自定義的業務應用程式(如數據輸入工具、報告工具等等)。客戶端應用程式通常使用視窗、選單、按鈕和其他GUI元素,並且它們可能訪問本地資源(如檔案系統)和外圍設備(如印表機)。另一種客戶端應用程式是作為網頁通過Internet部署的傳統ActiveX控制項(現在被託管Windows窗體控制項所替代)。此應用程式非常類似於其他客戶端應用程式:它在本機執行,可以訪問本地資源,並包含圖形元素。
過去,開發人員結合使用C/C++與Microsoft基礎類(MFC)或應用程式快速開發(RAD)環境(如Microsoft®VisualBasic®)來創建此類應用程式。.NETFramework將這些現有產品的特點合併到了單個且一致的開發環境中,該環境大大簡化了客戶端應用程式的開發。
包含在.NETFramework中的Windows窗體類旨在用於GUI開發。您可以輕鬆創建具有適應多變的商業需求所需的靈活性的命令視窗、按鈕、選單、工具列和其他螢幕元素。
例如,.NETFramework提供簡單的屬性以調整與窗體相關聯的可視屬性。某些情況下,基礎作業系統不支持直接更改這些屬性,而在這些情況下,.NETFramework將自動重新創建窗體。這是.NETFramework集成開發人員接口從而使編碼更簡單更一致的許多方法之一。
和ActiveX控制項不同,Windows窗體控制項具有對用戶計算機的不完全受信任的訪問許可權。這意味著二進制代碼或在本機執行的代碼可訪問用戶系統上的某些資源,例如GUI元素和訪問受限制的檔案,但這些代碼不能訪問或危害其他資源。由於具有代碼訪問安全性,許多曾經需要安裝在用戶系統上的應用程式現在可以通過Web部署。您的應用程式可以在像網頁那樣部署時實現本地應用程式的功能。
伺服器應用程式開發
在託管領域中,伺服器端應用程式是通過運行庫宿主實現的。非託管應用程式承載公共語言運行庫,後者使您的自定義託管代碼可以控制伺服器的行為。此模型在獲得主伺服器的性能和可伸縮性的同時提供給您公共語言運行庫和類庫的所有功能。安全機制構件
基於證據的安全.NETFramework引入了"基於證據的安全"的概念。在本質上,它是對安全策略暴露出來問題的解答:
·組合從哪個站點獲得?
組合是.NETFramework應用程式的構件。它們組成了部署,版本控制,重用,激活作用域,安全認證的基本單元。應用程式的組合是從網站上下載到客戶端的。
·組合是從哪個URL獲得的?
安全策略需要明確的地址,而組合是從這個地址下載的。
·組合是從哪個區獲得的?
區是基於代碼的位置,對安全標準,如Internet,intranet和本機等等,的描述。
·組合的強名(strongname)是什麼?
強名是由組合的創建者提供了密碼強化後的標識符。儘管它沒有提供對創建者的任何證明,但它唯一標識了組合,確保了組合沒有被破壞過。
根據對這些問題的回答,及其它證據,安全策略可以對賦予組合垢合適許可進行計算。從多種來源可以得到證據,包括CLR,瀏覽器,微軟,及外殼--這依賴於代碼的來源。
策略驅動的信任模型使用代碼證據
當組合被調入記憶體時,CLR策略系統通過收集組合的證據並在策略環境中對證據進行計算,從而決定賦予組合什麼樣的許可權。CLR策略系統然後根據評估過的證據和組合作出的許可請求給予組合一組許可。只有在組合被給予了一組最少的許可後,或組合根本不需要許可權,組合的創建者才能知道組合正確運行。通過一個或多個對特定許可的請求,這樣的附加需求可以被傳送至策略系統。
根據許可請求的類型,策略系統可以進一步限制給予組合的許可(刪除不必要的許可)或甚至拒絕將組合裝入記憶體(如果運行組合所需的最小許可沒有被策略給予)。在不存在任何許可請求的情況下,組合永遠不會被給予多於策略系統將會給予的許可許可權,請求只是進一步限制得到的許可。
安全策略包含了許多代碼組,這些組包含了根據證據應給予的許可權。代碼組描述的許可可提供給從特定的安全區域獲得的組合,或提供給由特定發行商簽名過的組合,等等。儘管隨CLR發行了一組默認的代碼組(及相關許可),但管理員可以對這些CLR安全的進行定置,以適合他們的特殊需求。記住,通過定義與證據相關的代碼組,任何東西都可以作為證據提交,只要安全策略可以使用它。
創建許可的的過程涉及到對證據的評估,以確定代碼組適用於哪個等級:企業,機器,和用戶。策略按上面順序對這三個等級進行評估,然後創建交插了三個等級的許可設定。管理員可以將任何一個策略等級標記為終結(final),這樣做應付阻止在其它等級上對策略做進一步評估。例如,管理員可以在機器級別上對組合終止策略,這樣就會阻止用戶級策略對該組合的套用。
一旦策略完成,許可的最初設定也就創建了。組合通過從三個方面做出特定的請求可以最佳化這些許可:
·第一方面是指定為了使組合運行它必須擁有的最小許可設定。如果這些許可沒有給予,那么組合將不同調入到記憶體,並拋出例外。
·第二,可以指定一組可選的許可。儘管組合希望存在這些許可,但如果無法獲得這些許可,它仍可以調入到記憶體。
·最後,行為特別好的組合實際上會拒絕它們所不需的有風險的許可。這三個最佳化選項是調入時作為聲明語句實現的。
在運行時,許可是根據代碼的執行計算的。右側的圖總結了這個過程的發生順序。組合A3將它的證據和來自主機的證據提供給策略評估器。策略評估器在創建許可時也要考慮從組合得到的許可請求,"G3"。組合A3由組合A2調用,而A2又是由組合A1調用的。當組合A3執行一個引發安全檢查的操作時,A2和A1獲得的許可同樣也要進行檢查,以確保它們擁有A3所請求的許可許可權。在這個過程中,此過程稱為堆疊遍歷(walking),堆疊中每個組合的許可許可權都要進行檢查以確定所給予的許可權設定是否包含安全檢查所需要的許可。如果堆疊中的每個組合被給予了安全檢查所需要的許可,調用將成功。如何任何組合沒有給予所需要的許可,堆疊遍歷過程失敗,安全例外將被拋出。
圖1.主機和組合為策略評估器提供證據,評估器使用安全策略和許可請求確定組合的許可許可權。應用程式中不同運行組件的許可許可權然後用於作出授權決定。
代碼訪問安全堆疊遍歷可以保護代碼不受攻擊。在精通的攻擊中,惡意代碼欺騙受信任代碼執行它獨自不能運行的操作--有效地利用代碼的許可許可權實現惡意的目的。對這類攻擊,開發人員很難進行防備--但堆疊遍歷確保了如果涉及到了低級信任等級的代碼,有效許可將被減少到信任等級最低的代碼具有的許可。
結果,代碼將從源處獲得不同的信任等級,並在適合於特定的代碼執行環境的限制下運行。
安全性
一些活動,如讀寫檔案,顯示對話框,讀寫環境變數,可以通過包含在框架安全構架中的.NETFramework方法實現。這就使.NETFramework能根據安全策略允許或不允許一個操作,而不需要程式設計師做額外的工作。儘管暴露了保護資源的管理類的創建者在他們的庫中做了明確的安全需求,使用.NETFramework類庫訪問受保護資源的開發人員可以自由地利用代碼訪問安全系統;他們不必作出明確的安全調用。管理員可以通過決定給予哪些許可來最佳化安全策略,然後,依靠.NETFramework處理所有的安全操作。代碼訪問安全能阻止大部分的惡意攻擊,對代碼的驗證減少了快取溢出和其它會導致安全攻擊的不期望的行為。因此,應用程式和組件生來就受到了保護,它們免於大多數安全問題的衝擊,而這些安全問題一直困繞著本地代碼的實現。
角色安全
有時根據已認證的身份或根據與代碼執行上下文相關的角色作出認證決定是合適的。例如,金融和企業軟體可以通過評估角色信息的企業邏輯加強策略。根據作出請求的用戶角色可以對金融交易的數據進行限制。出納被允許可以處理一定金額的請求,而多於該金額的所有工作需要監督人的角色來處理。身份可以映射到登錄系統的用戶,或由應用程式定義。相應的原則封裝了身份和其它相關的角色信息(例如,但並不限於此,用戶的"組"由作業系統定義)。
認證和授權
認證是一個過程,它接收來自用戶的證書,並對證書的授權進行確認。如果證書是有效的,那么用戶就可以說他擁有已認證的身份。而授權的過程是:確定認證用戶是否能夠訪問給定的資源。認證可通過系統或企業邏輯來完成,通過某個API它是或獲得的。認證API是完全可擴展的,因此開發人員根據需要使用自己的企業邏輯。開發人員可以對他們的認證需求進行編碼,也可以修改底層的認證方法而無需對他們的代碼作太大變化。除了微軟Windows?作業系統身份認證外,還有的認證方法包括基本HTTP,摘要和Kerberos,以及微軟Passport和基於窗體的認證。這些認證方法已經完全集成到中了。在窗體認證中,用戶提供證書,並提交窗體。如果應用程式簦別請求,系統傳送一個cookie,該cookie以某種形式包含包含了證書或包含重新獲得身份的關鍵字。接下來傳送的請求在頭中包含了cookie,處理程式通過應用程式所期望的任何有效方法對這些請求認證和授權。如果請求沒有經過認證,HTTP客戶端將用於把請求傳送到認證窗體,在那裡用戶可能提供信任證書。窗體認證有時用於個性化--為已知用戶的內容進行定置。在一些情況下,身份是問題所在而不是認證,因此用戶的個性化信息可以簡單地通過訪問用戶或獲得。
授權的目的是確定作出請求的身份是否被給予了對給定資源的訪問權。提供了兩種類型的授權服務:檔案授權和URL授權。檔案授權根據正在作用的方法和作出請求的身份決定用戶使用於哪個訪問控制列表。URL授權是URI名稱空間和不同用戶或角色間的邏輯映射。
隔離存儲
.NETFramework提供了一個特殊的功能,隔離存儲,用於存儲數據,甚至是當不允許對檔案進行訪問時--例如,當從Internet下載了一個管理控制項,並運行它,為它提供了有限的許可權但沒有權力讀寫檔案。隔離存儲是一組新的用於.NET支持的用於本地存儲的類型和方法。在本質上,每個組合可以訪問磁碟上一斷被隔離的存儲空間。它不允許訪問其它數據,隔離存儲只對為它創建的組合有效。
隔離存儲也可被應用程式用於保存活動記錄,保存設定,或者將狀態數據保存到磁碟上以備將來之用。因為隔離存儲的位置是預先決定好的,所以隔離存儲為指定唯一存儲空間提供了一種方便的方式,而不需要決定檔案路徑。
從本地企業區域網路獲得的代碼具有相似的限制,但更少,它可以訪問大限額的隔離存儲。最後,從受限站點區域(不信任站點)來的代碼沒有對隔離存儲的訪問權。
加密
.NETFramework提供了一組加密對象,它們支持加密算法、數字簽名、散列、生成隨機數,是通過眾所周知的運算法則實現的,如RSA,DSA,Rijndael/AES,TripleDES,DES,和RC2,以及MD5,SHA1,SHA-256,SHA-384和SHA-512散列算法。同時還支持在IETF和W3C開發的XML數字簽名規範。.NETFramework使用加密對象支持內部服務。這些對象還作為管理代碼提供給需要加密支持的開發人員。如何指定安全性?
如果要對組合運行時的行為進行修改,根據程式設計師的需要,可以作出聲明式安全或強迫式安全的修改。
聲明式安全
聲明式安全使程式設計師可以直接在組合代碼的元數據中為組合指定安全需求。許可請求和所有其它形式的聲明式安全是在代碼中是作為定置屬性指定的。類,屬性和方法的注釋用於最佳化許可。例如,聲明式安全可用於類的調用者在調用方法前檢查調用者是否被已知地行商簽名過,或有一個特定的強名。由於聲明屬性是組合元數據的一部分,所以組合的安全需求易於辨別。可以使用工具對組合進行掃描,以發現哪些方法需要某些許可,哪些方法斷言了某些許可。
當被請求的活動和許可在編譯時是知道時,聲明式檢查可作為選擇的解決方案之一。例如,如果方法總是檢查對C:temp的寫訪問許可,那么許可檢查就會從聲明中得到好處。另一方面,如果被請求的具有訪問權的位置發生了變化,那么強迫式安全也許是一個比較好的解決方案。
強迫式安全
強迫式安全直接在代碼中實現。程式設計師通過程式採取安全活動,並且根據安全堆疊的狀態決定是給予還是拒絕許可。例如,當一個方法請求訪問一個特定的檔案時,如果調用者(或方法的任何一個調用者)沒有被給予必需的許可許可權,那么請求失敗。因為強迫式安全是通過程式實現的,所以滿足了動態需求。如果你需要對一個特定檔案的訪問許可,但該許可還要根據其它信息發生變化,那么,強迫式安全就是可選的解決方案。.NETFramework安全迎合了這種事實:軟體向多樣化的移動組件發展,並根據這種事實提供保護。在一個細化的、可擴展的策略和許可系統下,用戶能夠運行功能強大的代碼,而同時減少相關的風險。在沒有運行時對用戶作出信任決定時,管理員可以在各個級別創建強壯的安全策略。策略是完全可定置的。開發人員能夠集中解決應用程式邏輯,而不用關心核心的安全問題(它由CLR透明地處理)。然而,開發人員可以在任何時候擴展安全模型。
有許多程式設計師和使用者,非常渴望有一個完善而且透明清楚的基礎架構,來建立WebServices(網際網路服務)。.NETFramework就是為了這個需求,而提供的基礎架構。.NETFramework提供了應用程式模型及關鍵技術,讓開發人員容易以原有的技術來產生、布署,並可以繼續發展具有高安全、高穩定,並具高延展的WebServices。對於.NETFramework而言,所有的組件都可以成為WebServices,WebServices只不過是另一種型態的組件罷了。微軟將COM的優點整合進來,它可以不用像COM那么嚴謹的來栓鎖兩個對象,.NETFramework以鬆散的方式來栓鎖WebServices這種型態的組件。這樣的結果讓開發人員非常容易的發展出強而有力的Web服務組件,提高了整體的安全及可靠性,並且大大的增加系統的延展性。
組成
.NETFramework的目的就是要讓建立WebServices以及網際網路應用程式的工作變的簡單,.NETFramework包括了三大部分:第一個部分是CommonLanguageRuntime(CLR,所有.NET程式語言公用的執行時期組件),第二部分是共享對象類別庫(提供所有.NET程式語言所需要的基本對象),第三個部分是重新以組件的方式寫成的(舊版本則是以asp.dll提供ASP網頁所需要的對象)。基本上安裝了之後對機器不會有很大的影響
NETFramework是支持生成和運行下一代應用程式和XMLWebservices的內部Windows組件
NET的運行環境,類似用運行時間庫的東西,要運行.NET的計算機必須安裝了這個東西。具體的說是支持生成和運行下一代應用程式和XMLWebservices的內部Windows組件。.NETFramework旨在實現下列目標:
提供一個一致的面向對象的編程環境,而無論對象代碼是在本地存儲和執行,還是在本地執行但在Internet上分布,或者是在遠程執行的。
提供一個將軟體部署和版本控制衝突最小化的代碼執行環境。
提供一個可提高代碼(包括由未知的或不完全受信任的第三方創建的代碼)執行安全性的代碼執行環境。
提供一個可消除腳本環境或解釋環境的性能問題的代碼執行環境。
使開發人員的經驗在面對類型大不相同的應用程式(如基於Windows的應用程式和基於Web的應用程式)時保持一致。
按照工業標準生成所有通信,以確保基於.NETFramework的代碼可與任何其他代碼集成。
.NETFramework具有兩個主要組件:公共語言運行庫和.NETFramework類庫。公共語言運行庫是.NETFramework的基礎。您可以將運行庫看作一個在執行時管理代碼的代理,它提供記憶體管理、執行緒管理和遠程處理等核心服務,並且還強制實施嚴格的類型安全以及可提高安全性和可靠性的其他形式的代碼準確性。事實上,代碼管理的概念是運行庫的基本原則。以運行庫為目標的代碼稱為託管代碼,而不以運行庫為目標的代碼稱為非託管代碼。.NETFramework的另一個主要組件是類庫,它是一個綜合性的面向對象的可重用類型集合,您可以使用它開發多種應用程式,這些應用程式包括傳統的命令行或圖形用戶界面(GUI)應用程式,也包括基於所提供的最新創新的應用程式(如Web窗體和XMLWebservices)。
.NETFramework可由非託管組件承載,這些組件將公共語言運行庫載入到它們的進程中並啟動託管代碼的執行,從而創建一個可以同時利用託管和非託管功能的軟體環境。.NETFramework不但提供若干個運行庫宿主,而且還支持第三方運行庫宿主的開發。
例如,承載運行庫已為託管代碼提供可伸縮的伺服器端環境。直接使用運行庫以啟用應用程式和XMLWebservices(本主題稍後將對這兩者進行討論)。
InternetExplorer是承載運行庫(以MIME類型擴展的形式)的非託管應用程式的一個示例。使用InternetExplorer承載運行庫使您能夠在HTML文檔中嵌入託管組件或Windows窗體控制項。以這種方式承載運行庫使得託管移動代碼(類似於Microsoft®ActiveX®控制項)成為可能,不過它需要只有託管代碼才能提供的重大改進(如不完全受信任的執行和獨立的檔案存儲)。
相關組件
軟體名稱:Microsoft.NETFramework2.0(x86)多國語言版軟體大小:22.39MB
軟體版本:2.0
更新時間:2013-06-22
運行環境:Win9X/Win2000/WinXP/Win7/Win8
軟體介紹:Microsoft.NETFramework2.0版可再發行組件包將安裝運行針對.NETFramework2.0版開發的應用程式時所需的.NETFramework運行庫及相關檔案。
.NETFramework2.0版改進了快取,從而提高了應用程式的可擴展性和性能;使用ClickOnce改進了應用程式部署和更新;通過微軟公司提供的控制項和服務對各種瀏覽器和設備提供更強大的支持。重要事項:不能在同一台計算機上安裝兩種不同語言版本的.NETFramework,試圖安裝第二種語言版本的.NETFramework時,將會導致出現以下錯誤:“安裝程式無法安裝Microsoft.NETFramework,因為已經安裝了該產品的其他版本。”如果您要使用非英語的平台或要以另一種語言查看.NETFramework資源,則必須下載相應語言版本的.NETFramework語言包。