亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

CLR這些年有啥變化嗎?

2019-11-14 15:55:05
字體:
來源:轉載
供稿:網友

引言

  首先想給初學者推薦下《CLR via C#》這本好書,做.Net開發的開發者應該都讀一下。為避免廣告之嫌,所以這里只提供豆瓣書評的鏈接。

  CLR 作為.Net 程序跨平臺運行的載體,和java的JVM有著類似的功能(JAVA為跨平臺而生,實現這一目標離不開JVM)。

  隨著.NET Framework的日益發展CLR也有日新月異的變化。這些變化為開發帶來更多有用的特性,在提高開發效率的同時也提高了程序的性能和穩定性。

 CLR是什么

通用語言運行時(CommonLanguageRuntiome,CLR)最早被稱為下一代Windows服務運行時(NGWS Runtime).它是直接建立在操作系統上的一個虛擬環境,主要的任務是管理代碼的運行。

 CLR在.NetFramework中的位置

framework_diagram

.NET平臺結構圖

  CLR現在支持幾十種現代的編程語言為它編寫代碼,然后以一種中間語言(Intermediate Langeoage,IL)代碼的形成被執行。并且,CLR還提供了許多功能以簡化代碼的開發和應用配置,同時也改善了應用程序的可靠性。如你所知,如果某種語言的編譯器是以運行時為目標的,那么利用該語言開發生成的代碼在.NET中被稱為托管代碼(MSIL),因為這樣的代碼是直接運行在CLR上的,所以具有與平臺無關的特點。

  目前有哪些語言支持CLR

微軟已經為多種語言開發了基于CLR的編譯器,這些語言包括:C++/CLI、C#、Visual Basic、F#、Iron Python、 Iron Ruby和IL。

除此之外,其他的一些公司和大學等機構也位一些語言開發了基于CLR的編譯器,例如Ada、APL、Caml、COBOL、Eiffel、Forth、Fortran、Haskell、Lexicon、LISP、LOGO、Lua、Mercury、ML、Mondrian、Oberon、Pascal、Perl、php、PRolog、RPG、Scheme、Smaltak、Tcl/Tk。

  在.NET平臺結構圖中,CLR的上面是.NET的基類庫,這組基類庫包括從基本輸入輸出到數據訪問等各方面,提供了一個統一的面向對象的,層次化的,可擴展的編程接口。從.NET平臺結構圖中也可以看到,基類庫可以被各種語言調用和擴展,也就是說不管是 C#,VB.NET還是F#,VC++.NET,都可以自由的調用.NET的類庫。

 CLR內部結構

CLR

  從上圖可以看到CLR提供的功能,如類型安全(Type Checker)、垃圾回收(Garbage Collector)、異常處理(Exception Manager)、向下兼容(COM Marshaler)等,具體的說,.NET上的CLR為開發者提供如下的服務:

  • 平臺無關:CLR實際上是提供了一項使用了虛擬機技術的產品,他在操作系統之上,并不要求程序的運行平臺是 Windows系統,只要是能夠支持它的運行庫的系統,都可以在上面運行.NET應用。所以,一個完全由托管代碼組成的應用程序,只要編譯一次,就可以在任何支持.NET的平臺上運行.(從Mono的出現變得更加真實啦,不用再羨慕JAVA啦)
  • 跨語言集成:CLR語序開發這以任何語言進行開發,用這些語言開發的代碼,可以在CLR環境下緊密無縫的進行交叉調用,例如,可以用VB聲明一個基類對象,然后在C#代碼中直接創建次基類的派生類。
  • 自動內存管理:CLR提供了拉架收集機制,可以自動管理內存。當對象或變量的生命周期結速后,CLR會自動釋放他們所占用的內存.
  • 跨語言異常處理
  • 版本控制(避免了DLL災難)
  • .NET安全
  • 簡單的組件互操作性。
  • 自描述組件:自描述組件是指將所有數據和代碼都放在一個文件中的執行文件。自描述組件可以大大簡化系統的開發和配置,并且改進系統的可靠性。

 CLR 執行示意圖

Slide24

  CLR 在整個.Net Framework 程序執行過程的模型,C#、VB.Net,C++.Net 代碼通過編譯器生成了MSIL(托管代碼),然后CLR用JIT翻譯成native code ,最后就可以直接執行啦。

 CLR 版本發展史

DotNeRevisionHistory

  C#版本 和.Net Framework 版本以及CLR依賴關系 和新特性添加列表,

The .NET Framework 4.5 is an in-place update that replaces the .NET Framework 4 on your computer, and similiarly, the .NET Framework 4.5.1 4.5.2, and 4.6 RC are in-place updates to the .NET Framework 4.5, which means that they use the same runtime version, but the assembly versions are updated and include new types and members. After you install one of these updates, your .NET Framework 4 or .NET Framework 4.5 apps should continue to run without requiring recompilation. However, the reverse is not true. We do not recommend running apps that target a later version of the .NET Framework on the .NET Framework 4.5.

  上面的總體意思就是:

  • .NET Framework 4.5 是.NetFramework 4.0的代替者
  • .NET Framework 4.5.1 4.5.2, and 4.6 RC 是.NetFramework 4.5的代替者

  從.net 4 開始,如果您想把.NetFramework 4.0+ 到更新的更新版本的.NetFramework,只需重新指定目標.Net Framwork然后重新編譯代碼即可,反之不可行。

  之所以可以這樣做是因為這幾個.NetFramework版本的CLR都是4.0版本的。

The .NET Framework versions 2.0, 3.0, and 3.5 are built with the same version of the CLR (CLR 2.0). These versions represent successive layers of a single installation. Each version is built incrementally on top of the earlier versions. It is not possible to run versions 2.0, 3.0, and 3.5 side by side on a computer. When you install version 3.5, you get the 2.0 and 3.0 layers automatically, and apps that were built for versions 2.0, 3.0, and 3.5 can all run on version 3.5. However, the .NET Framework 4 ends this layering approach. Starting with the .NET Framework 4, you can use in-process side-by-side hosting to run multiple versions of the CLR in a single process. For more information, see Assemblies and Side-by-Side Execution.

In addition, if your app targets version 2.0, 3.0, or 3.5, your users may be required to enable the .NET Framework 3.5 on a Windows 8 or Windows 8.1 computer before they can run your app. For more information, see Installing the .NET Framework 3.5 on Windows 8 or 8.1

  這段話的意思是

  • .NET Framework versions 2.0, 3.0, and 3.5 每個版本都是在前一個版本基礎上增量開發的
  • .NET Framework versions 2.0, 3.0, and 3.5 不同版本的程序不能在同一機器上同時運行在不同CLR上。(在安裝 3.5 版后,你將無需安裝 2.0 和 3.0 版本,2.0、3.0 和 3.5 生成的應用程序均可在 3.5 版上運行)
  • 從 .NET Framework 4 開始,在單個進程中可使用進程內并行運行在多個版本的CLR 。(即4.0的dll引用了2.0的dll是,4.0的代碼在CLR4.0上運行而2.0的代碼運行在CLR2.0上)
  • 此外,如果你的應用程序使用的是 2.0、3.0 或 3.5 版,你的用戶可能需要先在(Windows7) Windows 8 或 Windows 8.1計算機上啟用 .NET Framework 3.5,然后才能運行應用程序。

  順便看下 各個.Net Framework 新功能:

900px-DotNet.svg

 CLR最新發展

6114.image_thumb_24EA6864

  未來.NEtFrameWork 會有新的兄弟進來一起構建.Net 跨平臺和云架構的夢想。

7380.image_thumb_05C4214D

  上圖中Core CLR是asp .Net vNext很重要的核心之一,雖然官方沒說,但基本上就是一個精簡版的CLR,拿掉了繪圖等功能,讓Server和Cloud程序更高效

  至于MonoCLR,大家看名字就知道是為了更好的支持Mono這個開源的新秀的。

  Update1:摘自MSDN的《使用 CoreCLR 編寫 Silverlight》

自 2005 年 10 月發行 CLR 的 2.0 版本后就開始了 CoreCLR 的設計。它的兩個主要設計目標是大小和兼容性:從編程人員的角度來看,針對 CLR 的編碼應該始終相同,而從用戶的角度來看,下載必須非常小。由于 Silverlight 旨在提供一組不同于桌面 CLR 的方案,因此,我們可以進行一些更改,以簡化 CoreCLR 并允許我們縮減 Silverlight 的安裝大小。但是,堆棧底部的一致性至關重要。行為差異(即使這些行為差異都正確)表明堆棧上部有錯誤。

為了確保兼容性,我們在堆棧底部的各個組件中使用相同的代碼。執行引擎和虛擬機都是相同的。其中包括類型系統和元數據、垃圾回收器 (GC)、JIT 編譯器、線程池以及運行時引擎的其他核心部件。

但是,為了適應 Web 應用程序方案,進行了一些更改。例如,富 Internet 應用程序通常簡單且運行時間短,JIT 編譯器主要側重于減少啟動時間,而非執行更復雜的優化操作。同樣,服務器垃圾回收模式可以對使用相似分配模式的多個工作線程進行優化,而對 Web 托管應用程序則行不通。因此,Silverlight 只包含針對交互式應用程序進行優化的標準工作站 GC。但是,在 Silverlight 應用程序中使用 Microsoft 中間語言 (MSIL) 和元數據的方式與在針對桌面的托管應用程序中的使用方式完全相同,而且應用程序的行為在用戶的桌面上和在瀏覽器上一致。

事實上,Silverlight 并不打算取代桌面 CLR,這就引發了核心引擎中最大的變化:CoreCLR 將與桌面 CLR 進程并行運行。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
美女啪啪无遮挡免费久久网站| 91最新国产视频| 欧美成人在线影院| 黑人狂躁日本妞一区二区三区| 国产精品女人久久久久久| 在线看欧美日韩| 影音先锋日韩有码| 国产精品偷伦视频免费观看国产| 久久99精品久久久久久噜噜| 国模精品一区二区三区色天香| 日韩国产一区三区| 亚洲乱码国产乱码精品精天堂| 欧美成人h版在线观看| 国产一区二区丝袜高跟鞋图片| 97在线视频免费观看| 午夜精品一区二区三区在线视频| 亚洲大胆美女视频| 久久久久久尹人网香蕉| 亚洲国产另类 国产精品国产免费| 亚洲精品久久久一区二区三区| 国产区精品在线观看| 亚洲欧洲一区二区三区在线观看| 欧美激情一区二区三级高清视频| 欧美日韩国产专区| 狠狠色噜噜狠狠狠狠97| 日本成人黄色片| 欧美午夜精品伦理| 欧美大片第1页| 欧美日韩国产成人高清视频| 欧美在线精品免播放器视频| 91久久久精品| 中文字幕在线视频日韩| 91精品国产自产91精品| 在线国产精品播放| 日韩乱码在线视频| 精品久久久久久久久久久久| 午夜精品久久久久久久久久久久久| 国产在线精品一区免费香蕉| 亚洲精品国产综合区久久久久久久| 亚洲天堂网站在线观看视频| 亚洲一品av免费观看| 国产午夜精品美女视频明星a级| 国产精品偷伦免费视频观看的| 97精品视频在线播放| www欧美xxxx| 国产在线观看一区二区三区| 国产亚洲精品久久久久动| 亚洲精品一区在线观看香蕉| 亚洲一二在线观看| 国产69精品久久久久9| 欧美色道久久88综合亚洲精品| 97在线看免费观看视频在线观看| 色偷偷av亚洲男人的天堂| 亚洲人免费视频| 亚洲电影免费观看高清完整版在线| 亚洲精品国产精品久久清纯直播| 国产精品无av码在线观看| 国内精品久久久久久| 国产成人精品在线播放| 欧美丝袜美女中出在线| 久久久999国产| 国内免费精品永久在线视频| 成人免费在线视频网站| 亚洲第一网站免费视频| 亚洲国产精品久久91精品| 久久久久久综合网天天| 日韩视频在线免费观看| 国产成人精品电影久久久| 国产精品中文字幕在线观看| 久久视频在线直播| 在线视频欧美日韩| 国产精品高潮呻吟久久av黑人| 日韩av手机在线| 久久久久一本一区二区青青蜜月| 亚洲国产另类 国产精品国产免费| 亚洲人午夜色婷婷| 精品成人国产在线观看男人呻吟| 亚洲精品日韩欧美| 精品视频9999| 亚洲免费视频观看| 91av在线播放| 国产精品黄色影片导航在线观看| 亚洲一区二区福利| 中日韩美女免费视频网站在线观看| 国产精品免费一区| 一道本无吗dⅴd在线播放一区| 国产视频精品久久久| 97精品国产97久久久久久春色| 成人日韩av在线| 国产精品成人国产乱一区| 国产成人精品综合久久久| 欧美激情欧美狂野欧美精品| 国产视频欧美视频| 日韩在线中文字| 日韩中文字幕精品| 欧美激情中文字幕在线| 欧美xxxx18性欧美| 66m—66摸成人免费视频| 亚洲男人天堂2019| 欧美日韩国产第一页| 91国内免费在线视频| 日韩在线视频一区| 欧美贵妇videos办公室| 日韩电影网在线| 国产美女搞久久| 国产亚洲精品成人av久久ww| 欧美特级www| 久久人人看视频| 久久在线免费观看视频| 欧美电影免费观看网站| 欧美www视频在线观看| 国产成人精品综合| 亚洲天堂av在线播放| 国产精品稀缺呦系列在线| 欧美性猛交xxxxx水多| 欧美成人免费在线视频| 欧美国产乱视频| 91在线视频免费| 亚洲人av在线影院| www.欧美精品一二三区| 亚洲国产精品高清久久久| 国产一区二区三区在线观看网站| 国产精品丝袜一区二区三区| 精品国产一区二区三区久久| 久久综合网hezyo| 欧美日韩在线观看视频小说| 欧美孕妇与黑人孕交| 97视频免费在线看| 亚洲人成在线免费观看| 亚洲综合色激情五月| 日韩中文在线中文网在线观看| 欧美大尺度电影在线观看| 欧美高清第一页| 精品久久久久久久中文字幕| 欧美一级黑人aaaaaaa做受| 欧美巨乳在线观看| 亚洲美女精品成人在线视频| 日韩国产高清污视频在线观看| 日韩av在线直播| 亚洲性生活视频| 日本19禁啪啪免费观看www| 国产视频久久久久久久| 少妇高潮 亚洲精品| 国产精品视频1区| 久久中文字幕国产| 一区二区三区 在线观看视| 亚洲国产高潮在线观看| 国产精品视频xxxx| 亚洲精品98久久久久久中文字幕| 欧美性猛交xxxx免费看| 欧美日韩亚洲一区二区三区| 日韩精品在线免费播放| 最近2019中文字幕一页二页| 91国语精品自产拍在线观看性色| 国产精品美女在线观看| 亚洲国产天堂久久综合网| 亚洲精品免费在线视频| 欧美在线播放视频| 国自产精品手机在线观看视频| 亚洲成人精品av| 欧美日韩中文在线观看| 国产精品久久久久久久久久久久| 欧美亚洲日本网站| 911国产网站尤物在线观看|