第五章 框架类库概览
第二部分:用.Net Framework编程
第五章 框架类库概览
.Net框架几乎所有的功能都是通过一套叫做框架类库(FCL)的托管类型提供的。因为这些类型都是CLS兼容的,所以它们能够通过几乎所有.Net语言进行访问。这些FCL类型按照用途被命名空间(namespace)逻辑地分组,并且输出到属于.Net平台一部分的一系列程序集中。在C#应用程序中使用这些类型,需要在编译时引用适当的程序集(默认会引用大部分基本的程序集)。为了在.Net平台上使用C#高效地工作,理解预定义类库的一般功能很重要。但是,.Net框架类库包含了36个程序集中的120个命名空间中的3542个类型,它是如此的庞大,所以本书不会面面俱到的讨论.Net框架的全部。
这一章我们会给出整个FCL的一个概览(以不同的逻辑功能分为不同的章节)作为替代方案。同时会提供相关类型和命名空间的参考, 这样你可以独立的在.Net框架软件开发工具包(SDK)中浏览它们的详细信息。
这个概览提及的类型和命名空间都基于1.1版本的.Net框架。
浏览FCL的有用工具包括.Net框架SDK文档、Visual Studio .Net文档、WinCV.exe类型浏览器和ILDASM.exe反编译器。
5.1 核心类型
核心类型包含在System命名空间中。System命名空间是FCL的心脏,它包括一些其它类型所依赖的类(class)、接口(interface)和特性(attribute)。FCL的根部是Object类型,其它所有的.Net类型都会继承至它。其它的基本类型是ValueType(结构的基类)、Enum(枚举的基类)、Convert(在基础类型中进行类型转换)、Exception(所有异常的基类)和预定义值类型的装箱版本。接口的使用遍及整个FCL,像ICloneable,IComparable,IFormattable和IConvertible都定义在System命名空间中。一些扩展的类型如DateTime,TimeSpan和DBNull也在此可以得到。还包括其它的一些支持委托、基本数学运算、自定义特性和异常处理的类。
详细信息,请参看System命名空间。
5.2 文本
FCL为文本提供了充足的支持。重要的类型包括System.String类,它处理恒定不变的字符;StringBuilder类,它提供了字符本地化的比较操作和多种字符编码(ASCII, Unicode, UTF-7, and UTF-8),一套提供正则表达式支持的类。
更多信息,请查看下面这些命名空间。
System.Text System.Text.RegularExpressions
其它命名空间中的一个重要的相关类型是System.String
5.3 集合
FCL提供一套多种用途的数据结构,如System.Array,ArrayList,Hashtable,Queue,Stack,BitArray以及更多。在使用公有基类型和公有接口的标准设计模式的情况下,通过FCL能一致的处理所有预定义和用户定义的类型的集合。
更多信息,请查看下面这些命名空间。
System.Collections System.Collections.Specialized
其它命名空间中的一个重要的相关类型是System.Array。
5.4 流与I/O
FCL为访问标准的输入、输出和错误流提供很好的支持。有一些类也提供二进制和文本文件I/O操作,为文件系统事件注册通知,访问一个叫做隔离存储(Isolated Storage)的安全的用户存储区。
更多信息,请查看下面这些命名空间。
System.IO System.IO.IsolatedStorage
其它命名空间中的一个重要的相关类型是System.Console。
5.5网络
FCL提供一套分层的类,以通过使用不同抽象层的网络进行通信,包括原始的Socket访问;支持TCP,UDP和HTTP协议;基于URI和流的高层请求、回应机制;可扩展的协议处理器。
更多信息,请查看下面这些命名空间。
System.Net System.Net.Sockets
其它命名空间中的一个重要的相关类型是System.IO.Stream。
5.6线程
FCL为编写多线程应用程序提供了充足的支持,包括线程、线程池管理;线程同步机制,如监视器、互斥体、事件,读写锁定等;访问底层平台特性如I/O完成端口和系统定时器。
更多信息,请查看下面这些命名空间。
System.Threading System.Timers
其它命名空间中的一个重要的相关类型是System.Thread和System.ThreadStaticAttribute。
5.7 安全
FCL提供维护所有.Net框架的代码安全模型元素的类,包括安全策略,安全原则,权限设置和证书。这些类同样也支持密码算法,如DES,3DES,RC2,RSA,DSig,MD5,SHA1和为流传递的Base64编码。
更多信息,请查看下面这些命名空间。
System.Security System.Security.Cryptography System.Security.Cryptography.X509Certificates System.Security.Cryptography.Xml System.Security.Permissions System.Security.Policy System.Security.Principal
5.8 反射和元数据
.Net运行时(runtime)严重依赖元数据的存在,才有能力动态的观察和操作代码的运行。FCL通过一套抽象的映射出应用程序重要元素(程序集、模块、类型和成员)的类来显露这个能力,同时支持在代码执行时创建一个FCL或其它类型的实例。
更多信息,请查看下面这些命名空间。
System.Reflection System.Reflection.Emit
其它命名空间中的一个重要的相关类型是System.Type,System.Activator和System.AppDomain。
5.9 程序集
FCL提供在程序集的元数据上记录一些如目标操作系统、处理器、程序集版本和其它信息的特性。FCL也提供一些类来操作程序集、模块和强命名程序集。
更多信息,请查看下面这些命名空间。
System.Reflection
5.10 序列化
FCL包括支持序列化操作任意类型图表到或者来自一段流数据。这个序列化操作能够通过文件或者网络来存储、传递复杂的数据结构。默认的序列化器基于二进制和XML格式,但用户也能按自定义的格式进行扩展。
更多信息,请查看下面这些命名空间。
System.Runtime.Serialization System.Runtime.Serialization.Formatters System.Runtime.Serialization.Formatters.Binary System.Runtime.Serialization.Formatters.Soap
其它命名空间中的一个重要的相关类型是System.NonSerializedAttribute和System.SerializableAttribute。