基礎類庫

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 中的 分布式事務協調器（又稱 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 尚未成熟時，它扮演了重要的角色。

## 參見

### 其它相容於 .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。