.Net Framework Programming 读书笔记(1)
[2005-05-03]
1.1 将源代码编译为托管模块
元数据:是一个数据表的集合,在这些表中,其中一些用于描述托管模块中所定义的内容(如,定义的类型和他们的成员),另外还有一些用于描述托管模块中所定义的内容(如,被引用的类型和他们的成员)。
元数据是一些早先的技术如,类型库、接口定义语言(IDL)文件的一个超集。
1.2 将托管模块组合为程序集
程序集:是一个抽象的概念;是一个或多个托管模块,以及一些资源文件的逻辑组合;程序集是组件的复用,以及实施安全策略和版本策略的最小单位。程序集可以是一个或多个文件。
程序集中的模块还包括他所引用的程序集的一些信息(如版本号信息)。这些信息使得一个程序集得以自描述(self-describing)。
1.3 加载通用语言运行时
CLR负责管理包含在程序集中的代码的执行。
通过在 %windir%\system32目录下查找MSCorEE.dll文件来判断是否安装了.Net框架。多个版本的.Net可以查看:
HKEY_LOCAL_MACHINE_SOFTWARE\MICROSOFT\.NETFRAMEWORK\POLICY
一个托管EXE加载并初始化CLR的过程。
1.4 执行程序集代码
可以使用:IL汇编器 ILAsm.exe, ILDasm.exe。
如果我们选择编程语言没有提供我们所需的CLR的某些功能,我们则可以选择IL汇编语言或者另一个提供该功能的高级语言来编程。
一个方法只有在被首次调用时才会产生一些性能损失,JITCompiler的编译过程。所有对该方法的后续调用都将以本地代码作全速执行,因为本地代码不再需要验证和编译。
NGen.exe工具可以将一个程序集中所有的IL代码转化为本地代码。(可以提高性能)
通过验证的托管代码,我们可以保证他们不会访问他们不该访问的内存。我们可以在一个单独的Windows虚拟地址空间内运行多个托管应用程序。CLR提供了在一个单独的操作系统进程中执行多个托管应用程序的能力。
1.5 .Net框架类库
Framework Class Library(FCL)含有几千个类型定义:
XML WEB SERVICES
WEB FORMS
WINDOWS FORMS
WINDOWS控制台应用程序
WINDOWS服务
组件库
1.6 通用类型系统
Common Type System (CTS)
字段、方法、属性、事件;
Private/Family/Assembly/Public
[2005-05-04]
1.7 通用语言规范
Common Language Specification (CLS)为编译器厂商详细描述了面向CLR的编译器必须支持的最小集合。
用C#定义一个与CLS兼容的类型:
using System;
//告知编译器检查CLS兼容性
[assembly:CLSCompliant(true)]
//因为该类是公有的,有关CLS不兼容的错误将会被显示
public class App()
{
//错误:App.Abc()的返回类型与CLS不兼容
public UInt32 Abc(){return 0;}
//错误:仅有大小写差别的标志符App.abc()与CLS不兼容
public void abc(){}
//不会报错,因为该方法为私有
private UInt32 ABC(){return 0;}
}
1.8 与非托管代码互操作
托管代码调用DLL中的非托管函数
托管代码使用现存的COM组件(非托管组件作为COM服务器)
TlbImp.exe工具
非托管代码使用托管类型()
TlbImp.exe工具;RegAsm工具
浙公网安备 33010602011771号