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