基础类库

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。