(二)生成,打包,部署及管理应用程序与类型(随笔)

1. .NET框架部署目标

    部署三问题:

      所有程序都会使用来之微软和其他厂商的DLL,任何一段代码的程序员都不确定别人是怎么使用这段代码的;升级后可能出现“DLL Hell"。

      安装过程复杂,复杂到多个文件夹,注册表被修改,快捷方式安装桌面,开始菜单,工具栏,是程序不能隔离成一个独立个体,难以备份,迁移,卸载,删除。

       安全问题,允许和禁止其他公司的代码访问系统资源。

    .NET 框架很大程度上解决了以上三个问题。

        windows 安全验证是基于用户身份,而代码访问安全(code access  security)是基于程序集的标示。

2. 将类型生成为模块

     PE表头: windons 要求的标准信息。

     CLR表头:包含元数据的版本信息,以及元数据表的大小与偏移量,入口方法的标记,可选的强命名数字签名。

     元数据:实际上 一块二进制数据块,包含三类表(定义表,引用表,清单表)

                    定义表: ModuleDef(包含托管模块的条目,模块文件名与路径);TypeDef(包含所有类型,一些标记(pubic),指针(方法,熟悉));MethodDef(包含了所有方法,,一些标记(pubic),指向参数的指针);FieldDef(包含所有字段,一些标记,字段类型);ParamDef(包含所有参数,一些标记(out,in)); PropertyDef(所有属性);EventDef(每个事件);

                    引用表:AssemblyRef(记录每个引用的程序集,程序集名称,版本号,公钥,语言文化); ModuleRef(托管模块中引入同一程序集内的不同模块);TypeRef,MemberRef;                   

3.  将模块组合成程序集

       CLR  总是最先加载元数据文件清单表,利用清单表找到其他文件。

      程序集的特性:程序集定义了可重用的类型; 标示有一个版本号;可以包含与 之有关的安全信息;

       引入程序集的原因:实现了分离可重用类型的逻辑表示与物理表示,例如可用将一些不常用的类型放到一个文件中,这样下载时没有使用就可以不下载。

       配置CodeBase元素指定需要下载的程序集文件。

        使用多文件程序集的原因:可以将类型分别实现在不同的文件中,实现增量下载;可以按需要向程序集中添加资源或者数据文件;可以包含不同语言创建的module。

       清单表:AssemblyDef;FieldDef; ManifestResourceDef(资源);ExportdtTpeDef(公有类型);

        清单表为程序集的使用者与其各部分提供了一层间接联系,实现自描述。(注意:包含清单的文件知道程序集中的其他文件,但其他文件不知道他们是程序集的一部分)

4.  程序集版本资源信息

       版本号格式:主版本号,次版本号,生成版本号,修订版本号。

        一个程序集三个版本号:

               AssemblyFileVersion(存在win32版本资源中,仅辅助信息,CLR不查用);AssemblyInformationVersion(存在win32版本资源中,仅辅助信息,CLR不查用);AssemblyVersion(存储在元数据清单表AssemblyDef中);

5.  语言文化

         和版本号一样,语言文化也是程序集标示中的一部分,例如,我们可能有一个德语的程序集,一个英语的程序集等等

6.  简单应用部署

       前面讲的是如何生成程序集,下面介绍一下如何组合一个程序集。

       打包方式:直接拷贝;打包成MSI文件;

      私有部署程序集: 和应用程序部署在同一目录的程序集(程序集带有CLR运行需要的信息,不需要设置注册表或者活动目录)  

     COM的类型是记录在注册表中。

7. 简单管理控制(配置)

    通过配置文件配置。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值