应用程序的执行历史演变:
通过编译、链接生成单一的本地的可执行文件.exe
基于动态链接库DLL的形式
基于虚拟机的程序执行模式(如JVM或.NET Framework)
托管(受控的)执行
硬件->操作系统->运行时环境->应用程序
运行时环境
java: jvm jcl
.net: clr fxcl
设计上的权衡:
可移植性
安全性(内存管理)
速度
受控代码:受.net framework运行和管理的代码
cil中间语言 ildasm app.exe 反汇编
受控代码也就是中间语言的代码
基于组件的设计
front-end ->object(业务逻辑)->object(数据逻辑)->db
assembly分析
assembly是对.net组件的称呼
一个或多个源文件的编译结果 assembly
fxcl assembly存储于GAC中
应用程序搜索assembly的算法:
GAC->.config配置文件制定的位置->可执行文件所在的路径
manifest存储了版本,相关信息(应用程序引用的assembly及其版本信息都放在manifest文件中)
总之,应用程序在以上所述三个位置里按照manifest记录的引用的assembly信息来找到该assembly
部署
可以将exe文件和相应的dll等文件直接拷贝到客户机上
通过自定义配置文件部署
通过url安装部署
clickonce部署