.NET平台主要由5个部分组成:操作系统、.NET企业级服务器产品,.NET Web服务构件(passport)及.NET 框架。
  .NET框架有CLR(Common Language Runtime)和所有.NET支持的语言使用的一个公用类框架-----FCL(Framework Class Library)目前支持20种语言。FCL总共有99个名空间。
  运行时有纯静态环境,纯动态环境,基于堆栈的环境三种。CLR属于纯动态运行的一种。主要组成部分为VEE(Virtual Execution Engine),主要任务是管理和执行由.NET 语言编写的代码。
  CLR的执行过程:首先由类装载程序(Class Loader)找到并装入对象,激活,接着验证程序对其进行类型验证,JIT再将IL编译并转换成本机代码,还可以动态对目标机器进行代码优化,执行代码及所需的其他服务(安全检测,异常处理,高度等)由执行组件负责,还会自动回收无用的对象资源。

???  CLI(Common Language Infrastructure公用语言基础结构)主要有CTS(Common Type System),CLS(Common Language Specification公用语言规范)和VES(Virtual Execution System)。
  其中CTS处于核心地位,它是编译器,各种工具,应用程序和 CLI公用的一个统一的类型系统,它使得.NET 平台拥有多种语言集成的性能,也是类型安全的保障,它既可以支持面向对象语言,也可以支持C语言。有两种类型:值类型和引用类型。
  CLS由41条规则和其他规定组成,是CTS的补充,是为了提高库和编写的高级语言的配件级的互操作性。

托管代码是指用.net framework支持的语言写的代码。.net framework为了让这些代码可以执行,提供了数个核心运行服务,因此这些代码必须向CLR提供最基本的信息,这些信息就叫做“元数据”。在程序中表现为在类前或函数前中括号内的数据。可通过继承System.Attribute来创建自己的元数据特性,如:

[AttributeUsage(AttributeTargets.Class)]
public class InspiredByAttribute:System.Attribute
{
?? public string InspiredB;
}


  配件是指一个或多个有main入口的应用程序或库。配件可以引用配件。有私有配件和共享配件。私有配件是在单个应用目录中的,共享配件是存储在全局配件缓存(GAC)中的,可用gacutil -i somedll.dll注册到GAC中成为共享配件。对于共享配件有版本协调,即对共享配件加强版本约束。
版本号由四个数字组成(如:5.5.2.33),如果前两个数字中有任意一个不同的配件,就认为是不兼容的;如果第三个不同,就认为是“可能兼容”;如果第四个不同,就认为是兼容的。这些规则可通过配置文件来指定。
  清单是配件是描述,包括资源,类型和引用。
  垃圾收集由运行时组件负责管理对象生命及其占用堆内存的系统。.NET垃圾收集器工作机制:周期性地遍历当前被引用的对象列表,凡是没被发现的对象,都准备销毁并收回所占用内存。
  序列化指将对象转换为字节流的过程,反序列化是从字节流构建对象的过程。
??????? 代码访问安全(Code Access Security):CAS是.NET安全模型的一个部分,决定某段代码是否允许执行及使用什么资源。可通过caspol -lg来查看机器上的CAS代码组。

例:caspol -ag 1.3 -site www.pconline.com.cn FullTrust?? 来使用网站完全访问你的机器,不受限制。
?????? 反射:即通过编程来访问装配件的元数据,因为装配件是自我描述的,即装配件包含了元数据对自身的描述,因此可以通过反射来访问自身的元数据。.NET本身有一些基类可以实现反射。