1.几乎所有.NET框架的功能都是通过一个巨大的托管类型集合公开的。这些类型被组织成为有等级的命名空间,并且打包到一组程序集中,与CLR一起组成了.NET平台。
一些.NET类型直接被CLR使用,并且是托管宿主环境必不可少的。这些类型处于mscorlib.dll程序集中,包括C#的内置类型以及基本的集合类、流处理类型、序列化、反射、线程和本地互用性。
在这个级别之上的是补充类型,用以“充实”CLR级别的功能,提供其他特性,比如XML、网络以及LINQ。
它们处于System.dll、System.Xml.dll和System.Core.dll中,并且与mscorlib一起为框架其他功能提供了一个丰富的编程环境。这个“核心框架”定义了本书的主要范围。
.NET框架的余下部分由应用API组成,大多数API
包括如下三种功能:用户接口技术 Backend 技术 分布式系统技术
表5-1显示了C#、CLR和.NET框架之间不同版本的兼容性历史。有趣的是C# 3.0针对一个新的框架版本,而继续使用与它前一代相同的CLR版本。
更加精确的说,C# 3.0针对CLR 2.0的更新版本,它作为Framework 3.5的一部分被安装。
设计这个更新是为了不破坏与现存应用程序的兼容性。
表5-1 C#、CLR与.NET 框架版本
C#版本 CLR版本 框架版本
1.0 1.0 1.0
1.1 1.1 1.1
2.0 2.0 2.0
3.0
3.0 2.0 (更新) 3.5
本章撇开所有.NET框架的关键部分,以本书介绍的核心类型开始,最后以应用技术概述结束。
.NET框架中的程序集和命名空间相互交叉。
最合适的例子就是mscorlib.dll和System.Core.dll,它们都在许多名命空间中定义类型,但是没有一个类型以“mscorlib”或者“System.Core”作为前缀。
但是,不太明显的情况却更让人迷惑,比如System.Security.Cryptography中的类型。这个命名空间中的大多数类型都处于System.dll,除了少数类型处于System.Security.dll。
附录B列出了从框架的命名空间到程序集的完整映射。
.NET Framework 3.5的新增功能 Framework 3.5的新增功能主要集中在LINQ。
包括:标准查询运算符,在命名空间System.Linq中。
用于表达式树的对象模型,在命名空间System.Linq.Expressions中。
LINQ to SQL的应用程序接口API,在命名空间System.Data.Linq中。
LINQ to XML文档对象模型,在命名空间System.Xml.Linq中。
一组通用的泛型委托Action<>和Func<>,在System命名空间中。
Framework 3.5也加入了如下新的核心类型:System.DateTimeOffset,用于将一个时间点表示为UTC+偏移量的形式。
System.TimeZoneInfo,用于获取任意时区的偏移量和夏时制数据。
HashSet<T>,在System.Collections.Generic命名空间中,用于表示一个集合(带有键而没有值的字典)。
ReaderWriterLockSlim,在System.Threading命名空间中,是ReaderWriterLock的改进版本。
PipeStream和一组相应的类型,在System.IO.Pipes命名空间中,使用Windows管道提供基于流的进程间通信。
还有一些其它专门的新API和类型:通过实现(对等名称解析协议)提供对网络通信(PNRP在命名空间System.Net.PeerToPeer中)。
为可扩展性提供的宿主模型(System.AddIn)。
为WMI 2.0提供的托管提供器(System.Management.Instrumentation)。
ETW跟踪监听器(EventProviderTraceListener)和有计划的EventSchemaTraceListener。
托管接口实现由Windows Vista和更高版本系统支持的计数器(System.Diagnostics.PerformanceData)。
另外,System.Security.Cryptography补充类型来支持加密算法的“Suite B”,由国家安全局(National Security Agency)定义。
Framework 3.5还增强引入.NET Framework 3.0的四个API:Windows Presentation Foundation (WPF) Windows Communication Foundation (WCF) Windows Workflow Windows CardSpace Framework 3.5的多数核心特性已经被隔离到一个新的程序集中,这个程序集被称为System.Core.dll,以此最小化对CLR 2.0升级版本的影响(一个值得注意的例外是DateTimeOffset,它在更新后的mscorlib.dll中)。