MSDN讲座学习笔记(一).NET应用程序的执行

通过编译和链接生成单一的本地可执行文件(.exe)的时代已经过去,在Microsoft Windows中,应用程序的执行早已演变成为基于DLL(动态链接库)的形式,而通过.NET,我们正在向基于虚拟机的程序执行模式演化。

Managed Execution

软件在运行时(CLR)环境的执行,提高了软件的可移植性可安全性。

运行.NET程序的客户端必须安装Microsoft .NET Framework

    -------Redistributable .NET Framework (20MB)

-------三个版本:v1.0(2002),v1.12003),V2.0(预计2005年底)

-------Microsoft Windows Server2003包含v1.1

-------必须安装正确的版本

设计上的权衡:

--------可移植性(明显提高)

--------安全执行(内存管理)(亦有明显提高)

--------速度(第一次运行可能会让你感觉太慢,但是再次执行时会有明显提高,只会比你的本地代码(Native Code)慢一点点。)

CILCommon Intermediate Language),他相当于CLRCommon Language Runtime)的汇编语言,你可以通过在命令行提示符下用 idlasm 反汇编一个.exe 文件来查看。

基于组件的应用程序

   现代软件设计,一个应用程序往往包括一个或多个组件(dll),在执行过程是由JITJust In Time Compiler 将所有的功能组件编译完成来生成目标代码。

   Assemblies是对.NET组件的称呼,同时是.NET 的一个部署单元,一个Assembly是一个或多个源文件的编译结果。

FxCLDotNet Framework Class Libraryassemblies存储在GACGlobal Assembly Cache),它位于你本地计算机,具有共享性,版本感知性,安全性和防篡改性(利用Public Key Token)注:GAC中项目的组织和一般文件的组织不同,它允许有相同的文件名。

Assembly 执行原理:程序执行时,.exe调用dll文件,调用是通过.NET提供的assembly搜索算法来保证应用程序引用的组件能够被找到。搜索算法如下:

1.  应用程序指定将要使用的assembly版本

2.  GAC中搜索相应版本

3.  If未找到and存在.config文件 then

          到配置文件所在的位置搜索

        Else

           .exe文件所在的路径搜索

        If未找到 then

           发生错误,程序终止

所以.NET应用程序无需使用注册表了

那么,应用程序是怎样指定dll文件的版本的呢?

   应用程序通过Manifest存储版本信息的,若A引用B,Manifest 被编译到A.EXE/DLL中。(Manifest中存储信息和版本信息等,但不包括assembly代码,注册信息和位置信息,我们可以通过ILDASM=Intermediate Language Dissembler查看)

因此,.NET也不会发生DLL陷阱和“配置文件陷阱”。

.NET应用程序部署

1.       安装到.EXE所在的文件夹下(最简便,也称xcopy deployment

2.       一部分安装到.EXE所在的文件夹中,一部分在GAC中(GAC允许共享且可以安装多个版本)

3.       通过配置文件自定义部署(可自定义安装位置)

4.       Zero-touch”部署

         ---通过URL安装:http://server/app.exe

         ---应用程序可以定期自动更新

     ---VS 2005中进化为ClickOnce部署

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值