1.5 .net框架類庫(kù)
.net框架中包括有一組.net框架類庫(kù)(Framework Class Library,簡(jiǎn)稱FCL)程序集,其中含 有幾千個(gè)類型的定義,每個(gè)類型都提供了某種功能。
CLR和FCL允許開(kāi)發(fā)人員創(chuàng)建以下幾種應(yīng)用程序:
l XML Web 服務(wù) 即XML Web Services,又簡(jiǎn)稱Web服務(wù)。該服務(wù)使我得我們可以非常容易地通過(guò)互聯(lián)網(wǎng)來(lái)進(jìn)行方法調(diào)用。
l Web 窗體 即Web Forms 就是ASP.NET應(yīng)用程序。他提供了類似于開(kāi)發(fā)Windows程序的方法來(lái)開(kāi)發(fā)Web應(yīng)用程序。
l Windows 窗體 即Windows Forms,Windows圖形用戶界面(GUI)應(yīng)用程序。
l Windows 控制臺(tái)應(yīng)用程序
l Windows 服務(wù)
l 組件庫(kù)
FCL的所有類型 可以通過(guò) 文檔查得。
1.6通用類型系統(tǒng)
類型為應(yīng)用程序和組件提供了它們所需要的功能。
類型作為一種機(jī)制使得一種語(yǔ)言編寫(xiě)的代碼可以和另一種語(yǔ)言編寫(xiě)的代碼進(jìn)于無(wú)縫地集成。
類型是CLR的基礎(chǔ)。微軟為此專門制定了一個(gè)正式的規(guī)范----通用類型系統(tǒng)來(lái)描述類型的定義和行為。
CTS定義的類型的組成部分:
l 字段 字段是一個(gè)屬于對(duì)象狀態(tài)部分的數(shù)據(jù)成員。字段由它們的名稱和類型標(biāo)識(shí)。
l 方法 方法是一個(gè)在對(duì)象上執(zhí)行某種操作的函數(shù),通常會(huì)改變對(duì)象的狀態(tài)。方法有一個(gè)名稱、簽名和修飾符。
l 屬性 屬性調(diào)用時(shí),類似于字段,實(shí)現(xiàn)時(shí),類似于方法。提供了與使用字段相似的方式來(lái)使用方法。
l 事件 事件允許在一個(gè)對(duì)象和其他相關(guān)聯(lián)的對(duì)象之間建立一個(gè)通知機(jī)制。
CTS定義的成員的可見(jiàn)性:
Private 方法只能被同一類型中的其他方法調(diào)用。
l Family 方法可以被派生類型中的代碼調(diào)用,而不管它們是否位于同一個(gè)程序集中。(C#中 稱之為:protected)
l Family 與 assembly 方法只可以被位于同一個(gè)程序集中的派生類型中的代碼調(diào)用。(C# 和Visual Basic沒(méi)有提供這種訪問(wèn)控制。
l Assembly 方法可以被同一個(gè)程序集中的任何代碼調(diào)用,(在c#中稱為:internal).
l Family 和 assembly 方法可以被任何程序集中的派生類型的代碼調(diào)用,也可以被同一程序集中的任何類型調(diào)用。 C#稱為 Protected internal.
l Public 方法可以被任何程序集中的任何代碼調(diào)用。
CTS 僅支持 單繼承
CTS規(guī)定所有的類型都必須(直接或間接)繼承自預(yù)定義類型System.Object.
1.7 通用語(yǔ)言規(guī)范
CLR集成了所有的編程語(yǔ)言,并且允許一種語(yǔ)言創(chuàng)建的對(duì)象在另一種不同的語(yǔ)言編寫(xiě)的代碼中被看作同等的成員。CLR的標(biāo)準(zhǔn)類型集合,自描述類型的信息(即元數(shù)據(jù)),和通用執(zhí)行環(huán)境使得這種集成成為可能。
通用語(yǔ)言規(guī)范(Common Language Specification,簡(jiǎn)稱CLS),為描述了面向CLR的編譯器必須支持的一個(gè)最小特性集合。
CLS規(guī)定.net平臺(tái)下的各種語(yǔ)言必須支持類型規(guī)則的最小集合,所有.net平臺(tái)的語(yǔ)言都必須支持。當(dāng)然,每種語(yǔ)言都可以更多地支持CTS上的規(guī)則。
C#和Visual Basic 都必須支持CLS,但除此這外,c#可以另外支持CTS的一些特性,而Visual Basic也可以直持一些C#沒(méi)有的CTS中的特性。當(dāng)然,當(dāng)你使用C#編寫(xiě)供Visual Basic 使用的組件時(shí),不能在公用的接口上使用Visual Basic不支持的特性。如:
Public Uint32 Abc() 該public 方法返回Uint32 Visual Basic不支持。編譯器會(huì)報(bào)錯(cuò)。
當(dāng)然,當(dāng)你使用 private Uint32 Abc() ,是允許的,因?yàn)樗皇枪械摹?br>
CLS規(guī)定,CLR中,類型的每個(gè)成員或者是一個(gè)字段,或者是一個(gè)方法。各種編程語(yǔ)言中的枚舉、數(shù)組、屬性、索引器、委托、事件、構(gòu)造器、析構(gòu)器、重載操作符、轉(zhuǎn)換操作符等等都需要在編譯時(shí)翻譯成字段或方法,這樣,其他語(yǔ)言才能夠訪問(wèn)它們。
1.8 與非托管代碼互操作
.net框架提供了比其他開(kāi)發(fā)平臺(tái)更為優(yōu)越的特性,并且允許應(yīng)用程序同時(shí)含有托管和非托管部分。具體來(lái)說(shuō),有三種互操作情形:
l 托管代碼調(diào)用DLL中的非托管函數(shù) 托管代碼可以很容易地使用一種稱作 P/Invoke(即Platform Invoke,平臺(tái)調(diào)用)的機(jī)制來(lái)調(diào)用DLL(動(dòng)態(tài)鏈接庫(kù)文件)。
l 托管代碼使用現(xiàn)存的COM組件(非托管組件作為COM服務(wù)器) 可以創(chuàng)建描述它們的托管程序集。托管代碼可以象訪問(wèn)其他托管代碼一樣訪問(wèn)這些托管程序集中的類型。
l 非托管代碼使用托管類型(托管類型作為CO
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!