當前位置:首頁 » 資源管理 » 什麼是託管資源非託管資源
擴展閱讀
創業資源包括是哪些 2024-03-29 19:26:11
水費用來做什麼 2024-03-29 19:05:13

什麼是託管資源非託管資源

發布時間: 2022-10-04 11:59:27

A. 託管和非託管是什麼意思

託管代碼 (managed code) :由公共語言運行庫環境(而不是直接由操作系統)執行的代碼。託管代碼應用程序可以獲得公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務幫助提供獨立於平台和語言的、統一的託管代碼應用程序行為。 Unmanaged Code - 非託管代碼 :在公共語言運行庫環境的外部,由操作系統直接執行的代碼。非託管代碼必須提供自己的垃圾回收、類型檢查、安全支持等服務;它與託管代碼不同,後者從公共語言運行庫中獲得這些服務。非託管代碼的英文名是Unmanaged Code ,它是在公共語言運行庫環境的外部,由操作系統直接執行的代碼。

B. 什麼是託管、非託管

可以理解為所有.net程序的環境支持,或說運行環境。
詳細解釋:
NET Framework 是一種新的計算平台,它簡化了在高度分布式 Internet 環境中的應用程序開發。.NET Framework 旨在實現下列目標:

提供一個一致的面向對象的編程環境,而無論對象代碼是在本地存儲和執行,還是在本地執行但在 Internet 上分布,或者是在遠程執行的。
提供一個將軟體部署和版本控制沖突最小化的代碼執行環境。
提供一個保證代碼(包括由未知的或不完全受信任的第三方創建的代碼)安全執行的代碼執行環境。
提供一個可消除腳本環境或解釋環境的性能問題的代碼執行環境。
使開發人員的經驗在面對類型大不相同的應用程序(如基於 Windows 的應用程序和基於 Web 的應用程序)時保持一致。
按照工業標准生成所有通信,以確保基於 .NET Framework 的代碼可與任何其他代碼集成。
.NET Framework 具有兩個主要組件:公共語言運行庫和 .NET Framework 類庫。公共語言運行庫是 .NET Framework 的基礎。您可以將運行庫看作一個在執行時管理代碼的代理,它提供核心服務(如內存管理、線程管理和遠程處理),而且還強制實施嚴格的類型安全以及可確保安全性和可靠性的其他形式的代碼准確性。事實上,代碼管理的概念是運行庫的基本原則。以運行庫為目標的代碼稱為託管代碼,而不以運行庫為目標的代碼稱為非託管代碼。.NET Framework 的另一個主要組件是類庫,它是一個綜合性的面向對象的可重用類型集合,您可以使用它開發多種應用程序,這些應用程序包括傳統的命令行或圖形用戶界面 (GUI) 應用程序,也包括基於 ASP.NET 所提供的最新創新的應用程序(如 Web 窗體和 XML Web services)。

.NET Framework 可由非託管組件承載,這些組件將公共語言運行庫載入到它們的進程中並啟動託管代碼的執行,從而創建一個可以同時利用託管和非託管功能的軟體環境。.NET Framework 不但提供若干個運行庫宿主,而且還支持第三方運行庫宿主的開發。

例如,ASP.NET 承載運行庫以為託管代碼提供可伸縮的伺服器端環境。ASP.NET 直接使用運行庫以啟用 ASP.NET 應用程序和 XML Web services(本主題稍後將對這兩者進行討論)。

Internet Explorer 是承載運行庫(以 MIME 類型擴展的形式)的非託管應用程序的一個示例。使用 Internet Explorer 承載運行庫使您能夠在 HTML 文檔中嵌入託管組件或 Windows 窗體控制項。以這種方式承載運行庫使得託管移動代碼(類似於 Microsoft® ActiveX® 控制項)成為可能,但是它具有隻有託管代碼才能提供的重大改進(如不完全受信任的執行和安全的獨立文件存儲)。

C. c#什麼是託管資源與什麼是非託管資源

託管資源:你可以理解為.NET平台框架自身的資源。
非託管資源:就是非.NET平台框架的資源,比如,連接資料庫,操作Office等.NET里的平台互操作都是非託管資源。這些資源用完都要立即釋放掉的。

D. ~~~託管和非託管的區別

託管是只內存的申請,使用,釋放由CLR負責.非託管是指程序自己管理內存.

E. 託管和非託管的區別

其實整個.NET項目都是運行在.NET Framework上的託管代碼,這個道理和JAVA虛擬機的機制是類似的。

最簡單的說呢,受託管的代碼不能直接寫內存,是安全的,而非託管代碼是非安全代碼,可以使用指針操作內存。

一般的項目使用託管代碼都行了,也就是說在程序裡面不需要用到非安全代碼。

對於一些對速度要求高的部分功能可以考慮使用非安全代碼,使用指針等讀寫內存,而對於真個項目來說還是受託管的安全代碼。

F. C#中什麼是託管什麼是非託管

託管:編譯後需要依賴.NET Framework框架的,即需要在安裝了.NET Framework框架的電腦才能跑起來的。

非託管:與託管相反,編譯不需要依賴.NET Framework框架都可以跑起來的。

G. DataSet是託管資源還是非託管資源

dataset是非託管資源,無需顯示釋放,100毫秒內就會被系統自動釋放掉。

H. 什麼是託管,什麼是非託管

可以理解為所有.net程序的環境支持,或說運行環境。
詳細解釋:
NET Framework 是一種新的計算平台,它簡化了在高度分布式 Internet 環境中的應用程

序開發。.NET Framework 旨在實現下列目標:

提供一個一致的面向對象的編程環境,而無論對象代碼是在本地存儲和執行,還是在本地

執行但在 Internet 上分布,或者是在遠程執行的。
提供一個將軟體部署和版本控制沖突最小化的代碼執行環境。
提供一個保證代碼(包括由未知的或不完全受信任的第三方創建的代碼)安全執行的代碼

執行環境。
提供一個可消除腳本環境或解釋環境的性能問題的代碼執行環境。
使開發人員的經驗在面對類型大不相同的應用程序(如基於 Windows 的應用程序和基於

Web 的應用程序)時保持一致。
按照工業標准生成所有通信,以確保基於 .NET Framework 的代碼可與任何其他代碼集成


.NET Framework 具有兩個主要組件:公共語言運行庫和 .NET Framework 類庫。公共語

言運行庫是 .NET Framework 的基礎。您可以將運行庫看作一個在執行時管理代碼的代理

,它提供核心服務(如內存管理、線程管理和遠程處理),而且還強制實施嚴格的類型安

全以及可確保安全性和可靠性的其他形式的代碼准確性。事實上,代碼管理的概念是運行

庫的基本原則。以運行庫為目標的代碼稱為託管代碼,而不以運行庫為目標的代碼稱為非

託管代碼。.NET Framework 的另一個主要組件是類庫,它是一個綜合性的面向對象的可

重用類型集合,您可以使用它開發多種應用程序,這些應用程序包括傳統的命令行或圖形

用戶界面 (GUI) 應用程序,也包括基於 ASP.NET 所提供的最新創新的應用程序(如 Web

窗體和 XML Web services)。

.NET Framework 可由非託管組件承載,這些組件將公共語言運行庫載入到它們的進程中

並啟動託管代碼的執行,從而創建一個可以同時利用託管和非託管功能的軟體環境。.NET

Framework 不但提供若干個運行庫宿主,而且還支持第三方運行庫宿主的開發。

例如,ASP.NET 承載運行庫以為託管代碼提供可伸縮的伺服器端環境。ASP.NET 直接使用

運行庫以啟用 ASP.NET 應用程序和 XML Web services(本主題稍後將對這兩者進行討論

)。

Internet Explorer 是承載運行庫(以 MIME 類型擴展的形式)的非託管應用程序的一個

示例。使用 Internet Explorer 承載運行庫使您能夠在 HTML 文檔中嵌入託管組件或

Windows 窗體控制項。以這種方式承載運行庫使得託管移動代碼(類似於 Microsoft®

ActiveX® 控制項)成為可能,但是它具有隻有託管代碼才能提供的重大改進(如不完全受

信任的執行和安全的獨立文件存儲)。

I. C# 託管資源與非託管資源

我是這樣理解的:可以由系統自動回收的資源就叫託管資源,不能自動回收的叫非託管資源。
比如C++的資源都是非託管 ,因為你要自己寫析構函數來釋放資源。
C# 中引入了類似 Java的gc功能,即垃圾自動回收。所以所以你寫的方法就不用自己寫析構了,系統會自動回收不再使用的資源。C# 中 的飛託管資源 是由於程序員 引入了 不安全的代碼 或代碼段,CLR 無法驗證其安全性,也就無法託管。比如 在unsafe 下的代碼或代碼段 都是非託管的。
期待更明了的解釋···