.NET提供了一個運行時環境,叫做公用語言運行時,它管理著代碼的執行,并使得開發過程變得更加簡單。這是一種可操控的執行環境,其功能通過編譯器與其它工具共同展現,你的代碼將受益于這一環境。依靠一種以運行時為目標的(指完全支持運行時環境的)編譯器所開發的代碼叫做可操控代碼。它得益于可操控環境的各種特性:跨語言集成、跨語言異常處理、增強的安全性、版本處理與開發支持、簡單的組件交互模型以及調試服務。為了使運行時環境能夠向可操控代碼提供服務,語言編譯器需要產生一種元數據,它將提供在你使用語言中的類型、成員、引用的信息。元數據與代碼一起存儲,每個可加載的CLR映像均包含了元數據。運行時環境使用元數據定位并載入類,在內存中展開對象實例,解決方法調用,產生本地代碼,強制執行安全性,并建立運行時環境的邊界。
運行時環境自動處理對象的展開與引用,當它們不再使用時負責它們的釋放。被運行時環境進行這樣的生命周期管理的對象被稱為可操控代碼。自動內存管理消除了內存溢出,同時也解決了其它一些常見的語法錯誤。如果你的代碼是可操控的,你仍然可以在需要的時候使用非可控代碼,或者在你的.NET應用中同時使用可控與非可控代碼。由于語言編譯器支持他們自己的類型,比如一些原始類型,你可能并不總是知道(也不必知道)你的數據是否是可控的。
CLR使設計跨語言的組件與應用變得更加容易。以不同語言設計的對象能夠彼此間進行通信,并且它們的行為能夠緊密地綜合與協調。舉個例子,你定義了一個類,然后可以在另一種不同的語言中從該類中派生了一個類或者調用它其中的一個方法。你也可以向另一種語言中類的方法傳遞該類的一個實例。這種跨語言的集成之所以可能,因為以運行時間為目標的語言編譯器與工具使用一種運行時間所定義的公用類型系統,他們遵守運行時的規則(公用語言規范)來定義新的類型,生成、使用、保持并綁定類型。
作為元數據的一部分,所有可控組件攜帶了關于它們所依賴的組件與資源的信息。運行時環境使用這些信息來保證你的組件或應用具有需要的所有東西的特定版本,其結果是你的代碼將不會因為版本沖突而崩潰。注冊信息與狀態數據不再保存在難以建立與維護的注冊表中,你所定義的類型及附屬信息作為元數據被保存,這使得復制與移動組件的復雜程度得到降低。
編譯工具用他們自己的方式向開發人員展現CLR的功能。這意味著運行時間的一些特性可能在不同的語言中表現形式將會有所不同。你怎樣體驗運行時的特性將取決于你所使用的語言,比如說,如果你是一位VB開發人員,你可能注意到在運行時環境的幫助下,VB語言比以前具有更多的面向對象的特性。
新聞熱點
疑難解答
圖片精選