Base_Class_Library

**Base Class Library** (BCL) 是微軟所提出的一組標準函式庫可提供.NET Framework 所有語言使用。

隨著 Windows 以及 .NET Framework 的成長，BCL 已近乎成為在 .NET 上的 Windows API。

## BCL 基本命名空間列表

**System**

.NET Framework 類別庫中最基底的服務，提供應用程式域 (Application Domain)，資料型別，I/O 以及其他類別庫的基礎。

**System.Collections**

提供 .NET 應用程式所需的資料結構以及集合物件的支援，其中 System.Collections.Generic 命名空間更匯入了泛型（Generic）的支援。

**System.Configuration**

提供 .NET 應用程式在組態設定上的支援。

**System.ComponentModel**

提供 .NET 的元件基礎架構。

**System.Data**

ADO.NET 的組成類別庫，為資料存取功能的核心功能。

**System.Drawing**

提供 .NET 的繪圖能力，包含基本點陣圖處理以及影像與色彩處理，列印支援也由本命名空間提供，此命名空間包裝了大多數的 GDI 以及 GDI+ 的 API。

**System.EnterpriseServices**

提供 .NET 與 COM+ 的互通能力。

**System.IO**

提供資料流與檔案讀寫的支援：

* TextReader/TextWriter，StringReader/StringWriter：文字檔與字串的讀取器與寫入器。
* BinaryReader/BinaryWriter：二進位資料讀寫器。
* StreamReader/StreamWriter：資料流讀寫器。
* Directory/DirectoryInfo：磁碟資料夾物件。
* File/FileInfo：磁碟檔案物件。
* DriveInfo：電腦中的磁碟資訊物件。
* FileStream：檔案資料流。
* BufferedStream：緩衝區資料流。
* MemoryStream：記憶體空間資料流。

在此命名空間下，還支援幾個功能類別：

* System.IO.Compression：資料壓縮工具，目前支援 GZip 和 Deflate 兩種壓縮法（.NET Framework 2.0 才有）。
* System.IO.Pipe：管線資料流支援（.NET Framework 3.5 才有）。
* System.IO.Packaging：支援 ZIP 格式的壓縮封裝（.NET Framework 3.0 才有）。

**System.Net**

.NET 中的網路功能，例如：

* HTTP 通訊的 WebClient, HttpWebRequest/HttpWebResponse。
* FTP 通訊的 FtpWebRequest/FtpWebResponse。
* TCP／UDP 通訊以及伺服類別的 TcpClient/TcpListener, UdpClient/UdpListener。
* Winsock 的基礎 Socket 類別。
* SMTP 郵件寄發的 SmtpMail 類別以及包裝電子郵件內容的 Message 類別。

**System.Reflection**

.NET 中提供執行期型別資訊（RTTI）的支援，可以用來存取 .NET 組件（Assembly）中的中介資料，並可以呼叫內部的屬性或方法等。

**System.Diagnostics**

.NET 中提供系統診斷，除錯，追蹤與執行外部行程的能力。

* Debug 類別可在除錯程式執行中送出除錯訊息。
* Debugger 類別可以控制 Visual Studio 或相容的除錯器執行，包含中斷點設定與啟動除錯等。
* Trace 類別可以在非除錯的狀態下送出診斷訊息。
* EventLog 類別可以和 Windows 的事件檢視器互動。
* Process 類別可以取得目前在電腦中執行的行程資訊，以及啟動與終止行程。

**System.Management**

.NET 的 WMI（Windows Management Instrumentation）支援。

**System.Messaging**

.NET 與 Microsoft Message Queue Service（MSMQ）的互動支援。

**System.DirectoryServices**

.NET 的 Active Directory Service Interface（ADSI）介面支援。

**System.Runtime**

.NET 中提供進階開發的支援，其下有幾個重要的類別庫：

* System.Runtime.CompilerService：提供編譯器所需中介資料的支援。
* System.Runtime.InteropService : .NET 對 COM 與純 Win32 API 以及以函式方式開放的 DLL 的互動支援。
* System.Runtime.Remoting : .NET Remoting 組成的類別庫。
* System.Runtime.Serialization：在 .NET 中提供資料序列化（Serialization）的支援，目前可支援 SOAP，Binary，XML 等序列化能力。

**System.Security**

.NET 中控管安全性的重要類別。

* System.Security.AccessControl：包裝了對 Windows 資源的存取控制 (Access Control) 所需的 API。
* System.Security.Principal：包裝了使用者原理 (Principal) 物件，以支援不同的驗證方法。
* System.Security.Cryptographics：包裝 .NET Framework 所支援的密碼編譯演算法，例如 DES，AES，SHA，MD5 等。
* System.Security.Permission：包裝 .NET Framework 的 Code Access Security 所需的權限旗標。
* System.Security.Policy：控制 .NET Framework 程式執行的原則 (Policy) 功能。

**System.ServiceModel**

WCF 的組成類別庫，於 .NET Framework 3.0 時出現。

**System.Text**

.NET 中對文字，編碼以及正規運算式（Regular Expression）的支援。

**System.Threading**

.NET 中對執行緒控制的支援。

**System.Timers**

.NET 中的原生計時器支援（與 Windows Forms 中的 Timer 控制項不同，它擁有更精準的計時器）。

**System.Transactions**

.NET 中的 DTC Transaction（又稱 OLE Transaction）支援，於 .NET Framework 2.0 時出現。

**System.Windows.Forms**

Windows Forms 的組成類別庫，包裝了 Win32 使用者介面，視窗，共享控制項，以及 Shell 的基礎 API，以提供設計 Windows 應用程式使用者介面所需的支援。

**System.Windows**

WPF 的組成類別庫，於 .NET Framework 3.0 時出現。

**System.Web**

ASP.NET 的組成類別庫，其中亦包含了 IIS 伺服器的互動功能以及 HTTP 的服務處理類別，XML Web Service 開發的基本支援也由本類別提供。

**System.Workflow**

Windows Workflow Foundation（WF）的組成類別庫，於 .NET Framework 3.0 時出現。

**System.Xml**

微軟 XML 解析器 (Parser) 的主要包裝類別。

**System.Linq** 
**System.Xml.Linq**

微軟 .NET Framework 3.5 中新提供的語言功能：LINQ 的核心類別庫，System.Linq 是 LINQ to Object，而 System.Xml.Linq 則是 LINQ to XML。

## 不同廠商的支援

有一些由微軟發展，以及其他廠商發展的類別庫，也可以使用在 .NET Framework 中，它們都遵循一致的命名空間規範。

* Microsoft.Win32 命名空間為包裝部份進階 Windows API 的類別庫，其中包含了對 Registry 的存取。
* Microsoft.VisualBasic 命名空間則是為了 Visual Basic 語言特性所設計的類別庫，例如 My 類別（放在 Microsoft.VisualBasic.MyServices）。
* MySql.Data 則是由 MySQL AB 所設計，供 ADO.NET 存取之用的 MySQL 資料提供者。
* OpenNetCF 則是由外部廠商開發，類似於 .NET Compact Framework 的類別庫，在 .NET CF 尚未成熟時，它扮演了重要的角色。

## 參見

* ADO.NET
* ASP.NET
* Windows Forms
* Java Class Library
* Standard library

### 其它相容於 .NET Framework 的架構

* Windows Presentation Foundation
* Windows Communication Foundation
* Windows Workflow Foundation
* Windows CardSpace

## 外部連結

* .NET Framework Developer Center （頁面存檔備份，存於網際網路檔案館）. Microsoft Developer Network (MSDN).
* Base Class Libraries Community （頁面存檔備份，存於網際網路檔案館）。More information and FAQs about the BCL.
* MSDN BCL Documentation （頁面存檔備份，存於網際網路檔案館）。
* BCLTeam's WebLog （頁面存檔備份，存於網際網路檔案館）。