Ⅰ 託管代碼和非託管代碼有什麼區別
廣義的說,託管代碼就是集成在你所使用的開發平台內的編程語言。例如:目前最常見的 .Net 運行庫里集成了VC++, C#, VB, F#...等20多種語言的構件和處理功能。
託管代碼:
」託管「的含義就是,這些語言的後台(隱性的)操作都由這個管理系統(.Net)完成了,你把你的編程委託給了開發平台(庫)來完成。當你使用這些語言時,一些系統資源的調用、回收、編譯……各種工作都由它來完成,你只需要專注於程序功能的實現即可。
非託管代碼:
就是指不在你這個集成開發環境里,而是使用其它的開發平台寫出的程序(代碼)。比如說java語言(不是jscript),basic語言(不是VB),C語言(不是VC/C++/C#)等等……它們也有自己的開發平台和程序,用這些語言寫出的程序就屬於」非託管「。
當非託管的代碼在你的託管平台上運行時,你的託管平台就不能很好地處理一些後台(隱性的)操作,就需要編寫額外的代碼來使它們變得和諧並且安全。
舉個最簡單的例子:
C和匯編語言,它們是最早期進入計算機領域的高級語言(匯編已經不能算高級語言了:)),它們可以直接對CPU、內存、匯流排、I/O、硬碟等硬體進行操作(讀/寫),像DOS、Windows、iOs這些操作系統都是用它們寫的。
所以你在.Net集成環境中直接使用這些語言時,會遇到很大的阻礙,阻礙來源於所謂的」託管平台「,它認為這些操作是不安全的,就會拒絕編譯和執行。
但這些語言的特點是操作直接、速度奇快(跟託管平台比),而且專用性和針對性極強,當我們需要運行具有上述特點的程序時,C和匯編可以說是最理想的語言了。要想讓它們和託管平台」和平共處「的話,就需要編制額外的代碼讓它們符合這個託管平台的安全和管理規范,還需要有非常高深的編程功底。要不然等待我們的就會有兩種結果:一是程序無法運行、二是直接造成軟體或硬體的損壞(底層操作是可以損傷硬體的)。
我解釋清楚了嗎?
Ⅱ 代碼託管是做什麼的
託管復代碼 (managed code)同受管制的代碼,制由公共語言運行庫環境(而不是直接由操作系統)執行的代碼。託管代碼應用程序可以獲得公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務幫助提供獨立於平台和語言的、統一的託管代碼應用程序行為。
託管代碼是可以使用20多種支持Microsoft .NET Framework的高級語言編寫的代碼,它們包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。所有的語言共享統一的類庫集合,並能被編碼成為中間語言(IL)。運行庫編譯器(runtime-aware compiler)在託管執行環境下編譯中間語言(IL)使之成為本地可執行的代碼,並使用數組邊界和索引檢查,異常處理,垃圾回收等手段確保類型的安全。
Ⅲ 為什麼要代碼託管
託管代碼 (managed code)同受管制的代碼,由公共語言運行庫環境(而不是直接由操作系統)執行的代碼。託管代碼應用程序可以獲得公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務幫助提供獨立於平台和語言的、統一的託管代碼應用程序行為。
託管代碼是可以使用20多種支持Microsoft .NET Framework的高級語言編寫的代碼,它們包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。所有的語言共享統一的類庫集合,並能被編碼成為中間語言(IL)。運行庫編譯器(runtime-aware compiler)在託管執行環境下編譯中間語言(IL)使之成為本地可執行的代碼,並使用數組邊界和索引檢查,異常處理,垃圾回收等手段確保類型的安全。
優點
在託管執行環境中使用託管代碼及其編譯,可以避免許多典型的導致安全黑洞和不穩定程序的編程錯誤。同樣,許多不可靠的設計也自動的被增強了安全性,例如 類型安全檢查,內存管理和釋放無效對象。程序員可以花更多的精力關注程序的應用邏輯設計並可以減少代碼的編寫量。這就意味著更短的開發時間和更健壯的程序。
簡單點說,託管代碼是一microsoft的中間語言,他主要的作用是在.NET FRAMEWORK的CLR執行代碼前去編譯源代碼,也就是說託管代碼充當著翻譯的作用,源代碼在運行時分為兩個階段:
1.源代碼編譯為託管代碼;(所以源代碼可以有很多種,如VB,C#,J#)
2.託管代碼編譯為microsoft系統的.net平台專用文件(如類庫、可執行文件等)。