關於.Net中一些名詞的理解

最近在學習windows phone的過程中遇到了很多關於.Net的名詞,由於在學校中沒有很好地打基礎,這方面的知識比較欠缺,所以現在只能一點一點補起來了!

 

先說一些基本的名詞:

1 MSIL Microsoft Intermediate Language 

簡稱IL,當我們在Vs中寫出代碼之後,運行,代碼會由Vs中的編譯器編譯成IL,然後IL會被儲存在一個文件中供之後使用。它不能直接運行,只是作爲一箇中間的橋樑。爲什麼需要這個橋樑呢?這個我們會在講述託管代碼的時候說到。大家現在只要記着IL是實現.Net能夠在多Cpu中都能運行的一個非常重要的技術。

 

2 CLR Common Language Runtime

公共代碼運行時,也可以叫做公共語言運行庫。但是它可不是一個用來調用Api的庫,而是一個保姆,一個奶媽,一個多功能的管理員。如果學過Java的同學應該聽說過JVM這個東西,而CLR就包含了一個虛擬機的功能,既然是包含,那說明還有更多功能。CLR的核心功能有:內存管理程序集加載、安全性、異常處理線程同步,可由面向CLR的所有語言使用。並保證應用和底層操作系統之間必要的分離。它相當於一個龐大的功能強大的轉換機器,讓你的代碼可以更安全快速高效地被利用。

3 Managed

被管理的,成功的?它的意思是 託管的。何謂託管?讓託兒所管理。不管理的話(非託管)會怎麼樣呢?大家聯想一下一個嬰兒自己在家,好的話什麼都不會發生,不好的話家裏的花瓶啊電視啊就只能呵呵了。一個道理,我們的代碼在運行時可能會調用系統的東西,或者發生一些錯誤,或者等等你想到想不到的事。如果我們不託管,聽之任之,可能就會發生一些意想不到的結果 XD。而如果(交給CLR(就是我們的託兒所))託管呢,CLR會根據不同的Cpu和不同的平臺,去優化代碼並幫助調用一些系統的接口(又提到多Cpu了),還會在程序運行時進行監管,把出現的錯誤報告給開發者並且對系統做適當的保護。

一般來說,諸如C#和VB.net 這樣的語言,都是使用的託管代碼。而C和C++這樣的語言,是非託管的(C++也可以有託管模式)。

4 Native

本地代碼,這個名詞可以分兩種解釋說。

1)表示非託管(Unmanaged)代碼。它指的是通過比如Visual C++編譯代碼後生成的代碼,這些代碼不在CLR中運行,即非託管的。

2)表示IL最終轉化爲的代碼。這裏的本地,表示的是基於代碼運行的時候的環境(操作系統,Cpu指令集等等)來生成的針對特定環境的執行代碼。大家可以理解爲本地化,或者本“電腦”化。

 

5 JIT

Just In Time 即時編譯,首先,在IL代碼轉換爲本地代碼的時候,通過JIT技術,不是將代碼全部轉化後運行,而是首先將要調用的函數或使用的變量轉化爲本地代碼,暫時沒調用的不轉化。另外,JIT會把已經轉換的代碼緩存到內存中,當下次需要轉化的時候,會直接使用內存中的代碼,更提高了速度。

 

6 .Net Framework

這是啥玩意啊到底?首先,看名字,它是一個框架。什麼框架?.Net的框架。.Net是個啥?簡單說來,它就是微軟的一種技術,用來實現一些用於網絡交互的產品。一般來說,.Net應用都是放在.Net Framework裏的,而這個Framework給.Net 的開發提供了便利,諸如工具和環境和API等等。

.Net Framework 分爲兩部分,一部分是庫,就是大家寫代碼的時候調用的系統函數啊啥的。另一部分就是我上面說的CLR這個碉堡了的託兒所。

這個Framework是由虛擬機,CLR,微軟API等等各種功能和技術組成的。

嗯。。。就是這樣!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章