.net學習筆記(1)

來源:互聯網
上載者:User

最近看了<<dinner>>,深有感觸。原來大廚做飯前,所需要的配料都是別人提前準備好的,大廚只負責最後的烹制。仿照廚房做飯流程,我先準備原材料。

jvm: Java Virtual Machine,就是java虛擬機器,也就是java的運行環境。

clr:Common Language Runtime.是.net平台的運行環境

bcl:Common Language Infrastructure.主要功能是為支援不同種類的開發語言所使用。

il:微軟中介語言。

assembly:組件。clr和bcl以及程式都是由組件構成的。

config:用於參數設定。是一個文檔。

gac:全域組件快取.通常在此儲存一些需要共用的程式集。(也是bcl所在位置)

dll hell:dll是被動態調用的,因此,dll在應用程式不知道的情況下升級或者被別的應用程式調用了,就會產生問題,也就是標題的dell hell.

manifest:某種程度上就是為瞭解決dll hell而產生的dll讀取新機制的設定檔。訪問它,可以獲得dll列表。

好了,下菜的料準備好了,可以炒了。

不知道什麼時候起,程式設計語言的運行都需要一個運行環境了。

先看java的運行流程:

jym是java的運行環境,通過jym,java可以在各種平台上運行。

再看.net的平台。

大體上與java差不多,只是運行環境換了而已。換成了clr。除此之外,.net還應用到了基底類別庫。即bcl.因為.net是一個綜合型非常強的平台,可以容納各種語言,所有必須擁有一個所有語言都使用的類別庫。

從更微觀的角度來說,clr和bcl都是由組件構成的。在.net中,提供了可根據.config檔案自訂Assembly搜尋,不需要使用註冊表。

1.應用程式要指定Assembly版本。
2.在GAC中搜尋相應版本。
3.如果沒有找到而且存在Config檔案則到設定檔指定的位置搜尋。否則到應用程式所在路徑搜尋。
4.全部找不到則發生錯誤,程式終止。

在學習的過程中,我感覺 最具特色的還是.net的組件機制。

談到組件機制,不可不提及的是manifest。

manifest中包含了名稱和版本等資訊不包含組件的路徑(使用上文提到的組件搜尋演算法)等資訊。

如果程式想要調用某個dll。那麼它只需訪問manifest,就可獲得相應的dll列表,這樣,即使dll發生相應的變動,程式調用也不會出問題。這樣避免了dll hell的產生。

說了這麼多,感覺有點亂。用思維導圖來梳理一下。

第一遍學.net,認識難免有不足,懇請大家原諒。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.