2024年1月19日发(作者:)

电脑编程技巧与维护 程序集在.NET Framework中的使用 任宁,黄国庆 (大庆职业学院现代教育技术中心,大庆163255) 摘要:通过介绍程序集的概念、优点,并重点对程序集构成版本控制、安全等技术进行了全面分析,旨在简化应 用程序部署,并解决在基于组件的应用程序中可能出现的版本控制问题。 关键词:程序集;应用程序;代码 Application of Program.Set in the.NET Fl ̄mework R翻l ̄ing.HUANC,GI呐 (Modem Education Technology Center of Daqing Vocational College,Daqing 163255) Abstract:By introducing concepts and advantages of the program set,focus on the program set version control,safety and other technology,for a detailed analysis of the overal1.Aim at facilitating application deployment and resolving the version control problem may appear in module-based application. Key words:pmgram set;application program;code 框架(Framework)最简单的形式是指已开发过并已测试 予权限的单元。 过的软件的程序块,这些程序块可以在多个软件开发工程中 重用。框架提供了一个概括的体系结构模版,可以用这个模 板来构建特定领域中的应用程序。Framework概念并不是很新 了,伴随着软件开发的发展,在多层的软件开发项目中,可 重用、易扩展的,而且是经过良好测试的软件组件,越来越 为用户所青睐。这意味着用户可以将充裕的时间用来分析、 构建业务逻辑的应用上,而非繁杂的代码工程。 ・ (3)程序集形成类型边界。每一类型的标识均包括该类 型所驻留的程序集的名称。在一个程序集范围内加载的Mv~ Type类型不同于在其他程序集范围内加载的MyType类型。 (4)程序集形成引用范围边界。程序集的清单包含用于 解析类型和满足资源请求的程序集元数据。 (5)程序集形成版本边界。程序集是公共语言运行库中 最小的可版本化单元,同一程序集中的所有类型和资源均会 被版本化为一个单元。 于是用户将相同类型问题的解决途径进行抽象,抽取成 一个应用框架。这也就是所说的Framework。.NET Framework (6)程序集形成部署单元。当一个应用程序启动时,只 提供一个面向对象的、一致的编程环境,无论对象代码是在 本地存储执行,还是在本地执行、在Internet上分布,或者是 在远程执行的。为了简化应用程序和组件的部署,‘.NET Framework引入了程序集的概念。 有该应用程序最初调用的程序集必须存在。其他程序集(例 如本地化资源和包含实用工具类的程序集)可以按需检索。 这就使应用程序在第一次下载时保持精简。 (7)程序集是支持并行执行的单元。程序集可以是静态 的或动态的。静态程序集可以包括.NET Framework类型(接 口和类),以及该程序集的资源(位图、JPEG文件、资源文 1概述 1.1概念及功能 程序集是.NET Framework应用程序的生成块。程序集构 件等)。静态程序集存储在磁盘上的可移植可执行文件中。使 用.NET Framework来创建动态程序集,动态程序集直接从内 成了部署、版本控制、重复使用、激活范围控制和安全权限 的基本单元。程序集是为协同工作而生成的类型和资源的集 合,这些类型和资源构成了一个逻辑功能单元。程序集为公 存运行并且在执行前不存储到磁盘上。在执行动态程序集后 将它们保存在磁盘上。 1.2创建程序集的方法 共语言运行库提供它识别类型实现所需的信息。对于运行库, 类型不存在于程序集上下文之外。 程序集是.NET Framework编程的基本组成部分。程序集 执行以下功能: 可以使用过去用来创建.dll或.exe文件的开发工具,例如 Visual Studio.NET;可以使用在.NET Framework SDK中提供的 工具来创建带有在其他开发环境中创建的模块的程序集;还 可以使用公共语言运行库API来创建动态程序集。 1.3程序集的位置 (1)包含公共语言运行库执行的代码。如果可移植可执 行文件没有相关联的程序集清单,则将不执行该文件中的Mi— CrOSOft中间语言代码。 对于大多数.NET Framework应用程序而言,在以下位置 找到构成该应用程序的程序集,这些位置包括:该应用程序 的目录中,该应用程序目录的子目录中,或全局程序集缓存 (2)程序集形成安全边界。程序集就是在其中请求和授 收稿日期:2010—04—20 —32一 

S0FtI1 ARE DEVEI OPMENT AND DESIGN 中。可以通过在配置文件中使用<codeBase>元素重写公共语 言运行库查找某一程序集的位置。 当在使用非托管代码或COM interop应用程序的过程中查 软件开发与设计 示程序集与Util.net模块和Graphic.bmp的关系 找程序集的位置时,类似的规则同样适用:如果该程序集将 南多个应用程序共享,则此程序集应被安装到全局程序集缓 存中 和非托管代码一起使用的程序集必须作为类型库导 并注册、由COM interop使用的程序集必须在目录中进行注 册。尽管有些情况下会自动进行此注册。 臣 亘1 图1多个程序集 2优点 2.1版本控制问题 现在设计源代码时,作 有关如何将应用程序的功iiii 目前,Windows应用程序存在控制问题。版本控制规则不 能在直用程序的各段之间表达,并且不能由操作系统强制实 施 目前的办法依赖于向后兼容,而这通常很难保证。接口 定义一经发布就必须是静态的,并且单段代码必须保持与以 前版本向后兼容。此外,通常要对代码进行没计,以便在任 意给定时间在计算机上只能出现和执行代码的一个版本. .版本控制问题产生了Dl上冲突,在这些冲突中,安装… 个应用程序可能会无意问破坏现有的应用程序,因为昕安装 的某个软件组件或DLI 与以前的版本不完全向后兼容。出现 此情况后,系统不支持诊断和解决此问题. 2.2解决方案 为r解决版奉控制问题以及导致DI I 冲突的其余问题, 运行库使用程序集来执行功能:使开发人员能够指定不同软 件组件之问的版本规则;提供强制实施版本控制规则的结构; 提供允许同时运行多个版本的软件组件的基本结构 3 程序集的内容 通常静态程序集可能由以下4个元素组成:程序集清单, 包含程序集元数据;类型j1三数据;实现这些类型的Microsoft 巾问语青代码;资源集。 只有程序集清单是必需的,但也需要类型或资源来向程 序集提供任何有意义的功能。 程序集中的这些元素有分组几种方法 将所有元素分组 到单个物理文件中.或者可以将一个程序集的元素包含在JL 个文件中。这些文件可能是编译代码的模块、资源(例如 .bmp或.JPg文件)或应用程序所需的其他文件。在组合以不 同语言编写的模块并优化应用程序的下载过程时,可创建一 个多文件程序集,优化下载过程的方法是将很少使用的类 放入只往需要时才下载的模块中 假想应用程序的开发人员已选择将一些实用工具代码单 独放入另一个模块中,同时在其原文件中保留一个较大的资 源文件(在此例中为一个.bmp图像)。.NET Framework只在 文件被引用时下载该文件;通过将很少引用的代码保留在独 市于应用程序的文件中来优化代码下载: 如 l所示,所有3个文件均属于一个程序集÷对于该 文件系统,这3个文件是3个独立的文件。文件Util.netmod— ule被编译为一个模块,因为它不包含任何程序集信息 .在创 建了程序集后.该程序集清单就被添加到MyAssembly.dl1.指 分到一个或多个文件的明确的决定。在设计.NET Framework 代码时,也将作l叶J类似的决定,即如何将应用程序的功能划 分到一个或多个程序集中 每一程序集,无论是静态的还是动态的,均包含描述该 程序集中各元素彼此如何关联的数据集合 程序集清单就包 含这些程序集元数据。程序集清单包含指定该程序集的版本 要求和安全标识所需的所有元数据,以及定义该程序集的范 围和解析对资源和类的引用所需的全部冗数据 程序集清单 可以存储在具有Microsotf中间语言代码的文件(.exe或.dl1) 中,也可存储在只包含程序集清单信息的独立文件巾 通过在代码中使用稃序集属性,可以添加或更改程序集 清单中的一些信息。可以更改版本信息和信息性属性.包括 商标、版权、产品、公司和信息性版本: 4安全注意事项 在生成程序集时,可以指定该程序集运行所需的一组权 限。是否将特定的权限授子程序集是摹于i正据的 使用证据 有两种哉然不同的方式: (1)将输入证据与加载程序所收集的证据台并,以创建 用于策略决策的最终证据集。 (2)原封不动地使用输人证据作为用==F策略决策的最终 证据集 通过在将运行程序集的计算机上设置安全策略,可以授 予一些可选的权限。如果希望代码可以处理昕有潜住的安全 异常.可以执行以下操作之一: (1)代码必须具有的所有权限捅入权限清求,并预先处 理在未授予权限时发生的加载时错误。 (2)不要使用权限请求来获取代码可能需要的权限,但 一定要准备处理在末授子权限时发生的安全异常 在加载时,程序集的证据用作安全策略的输入?安全策 略是由企业和计算机的管理员以及用户策略没置建立的,它 在执行时确定向所有托管代码授予的权限组可以为程序集 的发行者建立安全策略.或者为该程序集的下载Web站点和 区域建立安全策略,也可以为该程序集的强 称建立该策略。 例如,一台计算机的管理员可以建直这样一种安全策略:它 允许从某一Web站点下载由指定软件公司签发用以访问计算 机上的数据库的昕有代码,但不授予对该计算机磁盘的写访 问权. .一33 

电脑编程技巧与维护 5版本控制 使用公共语言运行库的程序集的所有版本控制都在程序 集级别上进行。一个程序集的特定版本和依赖程序集的版本 在该程序集的清单中记录下来。除非被配置文件中的显式版 本策略重写,否则运行库的默认版本策略是应用程序只与它 们生成和测试时所用的程序集版本一起运行。 检查全局程序集缓存和在配置文件中指定的基本代码, 然后使用在运行库如何定位程序集中解释的探测规则检查该 应用程序的目录和子目录。 5.1版本信息 .序集的正确版本。 5I3程序集信息性版本 信息性版本是一个字符串,它仅出于提醒的目的将附加 的版本信息附加到一个程序集;此信息不在运行时使用。基 于文本的信息性版本相当于产品的营销广告、包装或产品名 称,不被运行库使用。例如,信息性版本可以是“公共语言 运行库版本1.0”或“NET Control SP 2”。 6结语 在部署、版本控制、安全等方面,基于程序集的标识, NET Framework系统使用关于程序集自身的证据,根据现有 策略来授予程序集应该具体的权限,控制其对客户端机器受 保护资源的访问能力。 每一程序集都用两种截然不同的方法来表示版本信息: (1)程序集的版本号,该版本号与程序集名称及区域性信 息都是程序集标识的组成部分。该号码将由运行库用来强制实 施版本策略,它在运行时的类型解析进程中起着重要的作用。 参考文献 【1】刘庆虎,张锋,刘鹏军..NET平台下程序集的部署方式. 电脑知识与技术,2005:46—48. (2)信息性版本,这是一个字符串,表示仅为提醒的目 的而包括的附加版本信息。 5.2程序集版本号 【2】胡玉蓉.基于.NET Framework的代码访问安全性.四川工 程职业技术学院学报,2008,(6):67—68. 【3】毛可飞,刘士冬,路辉.面向语义的解释型测试程序集. 每一程序集都有一个版本号作为其标识的一部分。因此, 如果两个程序集具有不同的版本号,运行库就会将它们视作完 全不同的程序集。此版本号实际表示为具有以下格式的四部分 号码: 微电子学与计算机,2007,24(3):214—216. 【4】孙猛.基于.NET的Web Frmeworak的实现.信息技术, 2008,(35):19. <major version>.<ininor version>.<build number>.<revi— sion> 【5]赵阳,赵谦,武兑.Microsoft.NET Framework结构解析. 微机发展,2003,13(6):51—53. 例如,版本1.5.1254.0中的1表示主版本,5表示次版 本,1254表示内部版本号,而0则表示修订号。 版本号与其他标识信息一起存储在程序集清单中。在生 成程序集时,开发工具将把每一个被引用程序集的依赖项信 息记录在程序集清单中。运行库将这些版本号与管理员、应 作者简介 任宁,女(1975一),讲师,硕士,研究方向:软件工程和网 络技术。 用程序或发行者设置的配置信息结合使用,以加载被引用程 黄国庆,实验师,学士。 (上接第13页) 别为:B2=(0.19878,0.11926,0.1846,0.00923),岛m-(0.02836,0. 使模糊综合评价更加科学、公正、客观,而且这种方法亦适 用于科研成果、教学成果评价等诸方面。 19878,0.09276,0.01325)按照最大隶属度的原则,乙的综合评 价结果是“好”,丙的综合评价结果是“较好”。很显然,在 这种方法下,3人中乙的综合评价优于其他两人,所以判断乙 是总经理的最合适人选。 且 ・R 参考文献 【1】《运筹等 教材编写组.运筹学【M】.北京:清华大学出 版社,2005. 【21韩中庚.数学建模方法及其应用【M】.北京:高等教育出 版社,2005. 【3】张维金.层次分析与模糊决策在企业家素质评价中的应用. 湖南工程学院学报【J].2005,15(3):65—66. ={o 02768,0 14572.0 15902,0.00923) 将层次分析法与模糊综合评价方法相结合,建立了人事 【4】刘跃明.论企业人事考核制度的特点和局限性.湘潮(下 半月)[J],2009, (3):26. 作者简介 4结语 选拔评价的数学模型,从而使候选者的综合素质评价由定性 分析走上了定量分析的轨道。尤其是对数学模型中各评价因 素权重的确定,采用层次分析法,避免了人为的主观因素, 一杨光,女(1988一),现就读于中国矿业大学计算机学院,研 究方向:网络安全。 34一