展開
湖北國(guó)聯(lián)計(jì)算機(jī)科技有限公司
  • 首頁(yè)HOME
  • 公司簡(jiǎn)介INTRODUCTION
  • 安全防御DEFENSE
  • 軟件開發(fā)SOFTWARE
  • 物聯(lián)網(wǎng)IOT
  • 運(yùn)行維護(hù)SRE
  • 成功案例CASE
  • 聯(lián)系我們CONTACT
  • Software Technology Sharing |技術(shù)分享

    .NET框架體系結(jié)構(gòu)
    來源:荊州軟件開發(fā) 時(shí)間:2017-11-15

    以下是湖北國(guó)菱計(jì)算機(jī)科技有限公司軟件開發(fā)部的工程師小弟所作的.NET基礎(chǔ)知識(shí)的總結(jié),現(xiàn)經(jīng)本人同意,分享給大家一起學(xué)習(xí)。


    剛開始接觸.NET很疑惑,看完視頻也不是太懂,通過總結(jié)和反復(fù),從概括和概念入手,慢慢變得清晰了。這篇日志主要是我對(duì).NET基礎(chǔ)知識(shí)的了解,算作積累吧。

    .NET框架體系結(jié)構(gòu)

    由四個(gè)主要部分組成



    公共語言運(yùn)行時(shí)(CLR)是.NET框架應(yīng)用程序的執(zhí)行引擎..NET框架的關(guān)鍵作用在于,它提供了一個(gè)跨編程語言的統(tǒng)一編程環(huán)境,這也是它能獨(dú)樹一幟的根本原因。

    .NET框?yàn)殚_發(fā)人員提供了一個(gè)統(tǒng)一、面向?qū)ο?、層次化、可擴(kuò)展的類庫(kù)集,即基底類別庫(kù)(BCL)。

    而ADO.NET是一個(gè)新的數(shù)據(jù)訪問框架,滿足了ADO無法滿足的三個(gè)重要需求:提供了斷開的數(shù)據(jù)訪問模型,這對(duì)Web環(huán)境至關(guān)重要;提供了與XML的緊密集成;還提供了與.NET框架的無縫集成.

    活動(dòng)服務(wù)企頁(yè)面(ASP.NET)提供了一個(gè)統(tǒng)一的Web開發(fā)模型,其中包括為開發(fā)人員生成企業(yè)級(jí)Web應(yīng)用程序所需的各種服務(wù)和全新控件.它是一個(gè)已編譯的、基于.NET環(huán)境的、可以用任何與.NET兼容語言創(chuàng)建的應(yīng)用程序。


    .NET程序的編譯與運(yùn)行


    在編譯使用.NET框架創(chuàng)建的代碼時(shí),不是立即創(chuàng)建成操作系統(tǒng)特定的本機(jī)代碼,而是把代碼編譯為微軟中間語言(MSIL)代碼。在執(zhí)行應(yīng)用程序時(shí)由JIT編譯器把MSIL編譯為專用于某種操作系統(tǒng)和目標(biāo)機(jī)器結(jié)構(gòu)的本機(jī)代碼,然后操作系統(tǒng)才能執(zhí)行應(yīng)用程序。

    程序集

    在編譯應(yīng)用程序時(shí),創(chuàng)建的MSIL代碼存儲(chǔ)在一個(gè)程序集中,程序集包括可執(zhí)行的應(yīng)用程序文件(.exe)和其他應(yīng)用程序使用的庫(kù)(.dll),還包括元數(shù)據(jù)和可選資源。

    托管代碼

    托管是什么意思,說白了就是讓CLR管理著應(yīng)用程序,從源代碼到MSIL,再到本機(jī)代碼,再到程序執(zhí)行,由.NET與操作系統(tǒng)進(jìn)行交互。不在CLR控制之下運(yùn)行的應(yīng)用程序時(shí)非托管的。

    托管代碼最重要的一個(gè)功能是無用存儲(chǔ)單元收集(garbage collection),也稱垃圾回收,確保應(yīng)用程序不再使用某些內(nèi)存時(shí),這些內(nèi)存會(huì)被完全釋放。

    下面這張圖是.NET程序的編譯與運(yùn)行時(shí)的情況:



    .NET  VS J2EE


    .NET框架與SUN公司的J2EE體系結(jié)構(gòu)是當(dāng)今企業(yè)應(yīng)用的兩大體系結(jié)構(gòu),它們有很多相似之處,如下圖(左側(cè)為.NET框架,右側(cè)為J2EE):



    可以看出,對(duì)于.NET框架的每一部分,J2EE體系結(jié)構(gòu)都有所體現(xiàn),他們都是企業(yè)級(jí)開發(fā)平臺(tái),并且廣泛應(yīng)用于Web開發(fā)領(lǐng)域。.NET框架和Java都使用了托管的運(yùn)行時(shí)環(huán)境,都將源代碼轉(zhuǎn)換為一種中間語言,然后將其編譯為本地的可執(zhí)行代碼,兩種體系結(jié)構(gòu)都提供了無用存儲(chǔ)的單元收集器、動(dòng)態(tài)類加載和異常處理等。

    下面是關(guān)于.NET的幾個(gè)小問題:

    1、.NET框架可以運(yùn)行于哪些平臺(tái)?

    目前可以運(yùn)行在windows95/98/ME、windowsNT4.0、windows2000、windowsXP、windows2003、windowsvista、windows 7、windows 10上。

    此外還有一個(gè)稱為.NET精簡(jiǎn)框架的.NET框架版本,它運(yùn)行在WindowsCE和其他嵌入式操作系統(tǒng)上。

    2、.NET框架支持哪些編程語言?

    .NET框架與編程語言無關(guān)。事實(shí)上任何語言都可以支持.NET框架。目前可以用許多語言來創(chuàng)建.NET程序,包括:C++、VB.net、JScript、C#。以后也會(huì)有大量的第三方語言可以用來創(chuàng)建.NET框架應(yīng)用程序,包括Cobol、Eiffel、Perl、Python、Smalltalk等。

    3、.NET框架可以創(chuàng)建哪些類型的應(yīng)用程序?

    并不限制應(yīng)用程序的類型,可以創(chuàng)建控制臺(tái)應(yīng)用程序、windows應(yīng)用程序、Web應(yīng)用程序、Web服務(wù)和其他各種類型的應(yīng)用程序。

    4、.NET框架和COM+服務(wù)之間是什么關(guān)系?

    在.NET框架中,不僅可以完全訪問COM+服務(wù),而且也更容易創(chuàng)建服務(wù)組件。.NET框架組件還可以利用COM+中所提供的服務(wù),如事務(wù)、對(duì)象池、排列組件、事件等。

    那么“什么是.NET?”

    微軟董事長(zhǎng)兼首席軟件設(shè)計(jì)師比爾蓋茨的回答:“.NET是指連接信息、人群、系統(tǒng)和設(shè)備的軟件?!?br />

    微軟原總裁兼首席執(zhí)行官鮑爾默說:“.NET代表了一個(gè)集合、一個(gè)環(huán)境、一個(gè)可以作為平臺(tái)支持下一代Internet的可編程結(jié)構(gòu)?!?br />

    現(xiàn)在再看這兩個(gè)解釋,確實(shí)是這么回事,好像沒有那么抽象了。。。

    有不詳不足之處,歡迎各位小伙伴們加入交流,電話:0716-6666211,網(wǎng)址:http://www.ev521m.cn/。

    荊州地區(qū)政府網(wǎng)站建設(shè) 解決方案 專業(yè)團(tuán)隊(duì) 騰訊第三方平臺(tái) 地址:湖北省荊州市沙市區(qū)荊沙大道楚天都市佳園一期C區(qū)29棟112       地址:湖北省松滋市新江口街道才知文化廣場(chǎng)1幢1146-1151室     郵編:434200 聯(lián)系電話:0716-6666211     網(wǎng)站編輯部郵箱:business@gl-ns.com 鄂公網(wǎng)安備 42100202000212號(hào) 備案號(hào):鄂ICP備2021015094號(hào)-1     企業(yè)名稱:湖北國(guó)菱計(jì)算機(jī)科技有限公司