在.NET中引用了新的概念——装配件(Assembly)。本文从根本上来分析下Assembly的前因后果。

一      为什么(WHY)

众所周知,任何东西的诞生都有其诞生的理由。那么,Assembly是为了什么出现的呢。我们知道,Assembly通过编译后,表现的也是一个dll文件。那么,它与传统的dll文件有和区别呢?

传统的dll在新程序的安装过程中,很容易被新版本所替代。因为传统的dll 主要是用来导出全局函数,它并没有相关的信息或版本设置来保证此dll 的唯一性,故在安装新的程序时,这些dll是不安全的,随时都有可能被替换。

再次之后,为了解决dll的安全问题,COM DLL被用来允许一个dll的多个版本存在。它通过重写LoadLibrary()api函数,通过路径查找相应的dll来保证不同个配置,调用对应的dll文件。但这种做法,也会带来另外的问题就是当dll被卸载的时候。当卸载两个版本中的一个时,注册表中的条目会丢失,其他的版本也不可以工作。如果不卸载,当同一个组件的两个版本使用不同的线程配置时,最后安装的版本将被使用。此问题的关键是com dll的配置信息没有绑定到dll本身。

同一个组件的不同版本能正常使用的关键问题就是,任何一个dll将其自己的版本信息等与dll一起发布,而引用这些dll的应用程序能通过具体的版本得到想用的dll而不会带来问题。这就是Assembly出现的原因。

Assembly是一种自我描叙的单元,可以由一个或多个文件组成。一个Assembly可以使包括元数据的dll或者exe,也可以由多个文件组成,如资源文件、元数据、dll和exe。

二      装配件(Assembly)的特性

1    自我描叙。

2    版本的相互依赖在清单中进行记录。引用Assembly的版本被存贮在Assembly的清单中,这样可以确切的了解在开发的过程中使用的装配件版本号。

3    可以并行加载。如果Assembly A1使用Assembly B的版本1, Assembly A2使用Assembly B的版本2,而用户同时使用Assembly A1和A2,则Assembly B的那个版本会被使用?答案是两个版本都会被调用。

4    AppDomain确保独立性。使用AppDomain,许多应用程序就可以独立地运行在一个进程中,一个应用程序的错误不会影响同一个进程中的其他的应用程序。

5    安装简单。

三      装配件(Assembly)的结构

常用结构如下:

转载于:https://www.cnblogs.com/joechen/archive/2009/06/02/1494477.html

.NET中的Assembly分析相关推荐

  1. GAC中部署assembly的问题总结

    困扰我几天的问题,终于解决了. 将这个问题总结一下,共享出来.可能会对其他人有用. 问题是这样的,我开发了一个基于sharepoint文档库事件的工作流WorkFlow,因为开发使用的是一台winxp ...

  2. C#.Net工作笔记011---c# visual studio中的assembly理解

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 做一个购物电视台的项目的时候,前端管理平台用C#做的,之前很少用c#, 后端用java来做,通过r ...

  3. 论电子计算机在审计中的应用,计算机技术在审计中的应用领域分析.doc

    计算机技术在审计中的应用领域分析.doc 计算机技术在审计中的应用 [ ]审计工作作为我WW民经济屮的重要的一个环节,由于有大量的数据需耍处理, 使得计算机技术在审计领域的大规模推广具有很强的实践意义 ...

  4. R语言效用分析 ( 效能分析、Power analysis)、除了pwr包之外还有其它包、例如、基因研究中的效能分析、MBESS包可用于各种形式的效能分析和最少样本量确定、其他效用分析包的简要介绍

    R语言效用分析 ( 效能分析.Power analysis).除了pwr包之外还有其它包.例如.基因研究中的效能分析(power analysis).MBESS包可用于各种形式的效能分析(power ...

  5. 卫星图像中的车辆分析--A Large Contextual Dataset for Classification, Detection and Counting of Cars

    A Large Contextual Dataset for Classification, Detection and Counting of Cars with Deep Learning ECC ...

  6. 如何调整按钮里的文字的位置android_UI设计中按钮场景分析

    别无他话,今天就和大家聊一聊设计宿敌--按钮设计.按钮的设计看似简单,其实按钮的功能不同,设计形式上也会有差异,今天我就针对按钮的场景分析,对按钮进行全面的解析. 按照功能性分类,按钮主要包括行为召唤 ...

  7. 双目标帕累托优化_结构力学中的优化分析(3) —— 结构优化分析

    引言 上文中,我们主要介绍了优化分析的基本类型. 蒙特遇见卡罗:结构力学中的优化分析(1) -- 优化方法基本概念​zhuanlan.zhihu.com 蒙特遇见卡罗:结构力学中的优化分析(2) -- ...

  8. 网站推广过程中如遇网站降权应从网站推广中哪些细节着手分析?

    通常站长在运营优化期间难免遇到网站被搜索引擎降权的情况发生,这不仅会对网站日常优化工作带来影响,更会影响用户对网站的日常访问.但是想要恢复网站权重也不简单,那么面对网站降权问题,站长应如何分析呢?下面 ...

  9. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmContinueOptimizati() 函数分析 )

    文章目录 前言 一.DexPrepare.cpp 中 dvmContinueOptimizati() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DEX 优化流程分析 | D ...

最新文章

  1. Codeforces Round #420 (Div. 2)
  2. 无法连接虚拟设备 ide1:0
  3. useradd、adduser和userdel在使用时的注意事项
  4. 【神经网络】神经网络结构在命名实体识别(NER)中的应用
  5. 创建 SSH Keys
  6. 三星GalaxyNote 10 Plus官方图曝光:前置相机竟换成了单摄?
  7. 关于OATUH中的AUTHRAZITON CODE和TOKEN的关系,实际上就是这么回事
  8. 克罗谈投资策略04_感觉与现实
  9. AspNetPager 万能分页存储过程(转来的)
  10. t_user is not mapped [from t_user as u where u.loginname = :loginname and u.password =:password]
  11. 【SegMap: 3D Segment Mapping using Data-Driven Descriptors】
  12. HorizontalScrollView 仿真 tabLayout
  13. 地球币earthcoin表情包征图大赛正式筹备准备中
  14. 计算x的n次方 高效算法
  15. FC6安装配置详细介绍
  16. 机器学习中的矩阵向量求导(一) 求导定义与求导布局
  17. 杭电1052-Tian Ji -- The Horse Racing 贪心算法(有思路和注释)
  18. 小米电视盒服务器维护,告别小白!小米电视/盒子不为人知的设置技巧
  19. zookeeper-系列2,简单实用
  20. python人员管理系统_python如何实现大学人员管理系统 python实现大学人员管理系统实例...

热门文章

  1. REST和RESTful详解到实战
  2. android+动画完成后不可点击,动画后,TranslateAnimated ImageView无法点击[Android]
  3. Java 并发编程之 LockSupport
  4. UNI使用蓝牙连接设备传输数据
  5. python提取pdf表格信息
  6. mysql创建数据库时使用sql/wordbench使主键(primary key)自增
  7. Linux(Ubuntu18.04)安装SEAL-python
  8. pandas读写csv
  9. java l1 l2缓存,Java 两级缓存框架
  10. git 小乌龟 配置_Git-Bash和TortoiseGit小乌龟客户端配置记录