.NET中的Assembly分析
在.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分析相关推荐
- GAC中部署assembly的问题总结
困扰我几天的问题,终于解决了. 将这个问题总结一下,共享出来.可能会对其他人有用. 问题是这样的,我开发了一个基于sharepoint文档库事件的工作流WorkFlow,因为开发使用的是一台winxp ...
- C#.Net工作笔记011---c# visual studio中的assembly理解
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 做一个购物电视台的项目的时候,前端管理平台用C#做的,之前很少用c#, 后端用java来做,通过r ...
- 论电子计算机在审计中的应用,计算机技术在审计中的应用领域分析.doc
计算机技术在审计中的应用领域分析.doc 计算机技术在审计中的应用 [ ]审计工作作为我WW民经济屮的重要的一个环节,由于有大量的数据需耍处理, 使得计算机技术在审计领域的大规模推广具有很强的实践意义 ...
- R语言效用分析 ( 效能分析、Power analysis)、除了pwr包之外还有其它包、例如、基因研究中的效能分析、MBESS包可用于各种形式的效能分析和最少样本量确定、其他效用分析包的简要介绍
R语言效用分析 ( 效能分析.Power analysis).除了pwr包之外还有其它包.例如.基因研究中的效能分析(power analysis).MBESS包可用于各种形式的效能分析(power ...
- 卫星图像中的车辆分析--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 ...
- 如何调整按钮里的文字的位置android_UI设计中按钮场景分析
别无他话,今天就和大家聊一聊设计宿敌--按钮设计.按钮的设计看似简单,其实按钮的功能不同,设计形式上也会有差异,今天我就针对按钮的场景分析,对按钮进行全面的解析. 按照功能性分类,按钮主要包括行为召唤 ...
- 双目标帕累托优化_结构力学中的优化分析(3) —— 结构优化分析
引言 上文中,我们主要介绍了优化分析的基本类型. 蒙特遇见卡罗:结构力学中的优化分析(1) -- 优化方法基本概念zhuanlan.zhihu.com 蒙特遇见卡罗:结构力学中的优化分析(2) -- ...
- 网站推广过程中如遇网站降权应从网站推广中哪些细节着手分析?
通常站长在运营优化期间难免遇到网站被搜索引擎降权的情况发生,这不仅会对网站日常优化工作带来影响,更会影响用户对网站的日常访问.但是想要恢复网站权重也不简单,那么面对网站降权问题,站长应如何分析呢?下面 ...
- 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmContinueOptimizati() 函数分析 )
文章目录 前言 一.DexPrepare.cpp 中 dvmContinueOptimizati() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DEX 优化流程分析 | D ...
最新文章
- Codeforces Round #420 (Div. 2)
- 无法连接虚拟设备 ide1:0
- useradd、adduser和userdel在使用时的注意事项
- 【神经网络】神经网络结构在命名实体识别(NER)中的应用
- 创建 SSH Keys
- 三星GalaxyNote 10 Plus官方图曝光:前置相机竟换成了单摄?
- 关于OATUH中的AUTHRAZITON CODE和TOKEN的关系,实际上就是这么回事
- 克罗谈投资策略04_感觉与现实
- AspNetPager 万能分页存储过程(转来的)
- t_user is not mapped [from t_user as u where u.loginname = :loginname and u.password =:password]
- 【SegMap: 3D Segment Mapping using Data-Driven Descriptors】
- HorizontalScrollView 仿真 tabLayout
- 地球币earthcoin表情包征图大赛正式筹备准备中
- 计算x的n次方 高效算法
- FC6安装配置详细介绍
- 机器学习中的矩阵向量求导(一) 求导定义与求导布局
- 杭电1052-Tian Ji -- The Horse Racing 贪心算法(有思路和注释)
- 小米电视盒服务器维护,告别小白!小米电视/盒子不为人知的设置技巧
- zookeeper-系列2,简单实用
- python人员管理系统_python如何实现大学人员管理系统 python实现大学人员管理系统实例...
热门文章
- REST和RESTful详解到实战
- android+动画完成后不可点击,动画后,TranslateAnimated ImageView无法点击[Android]
- Java 并发编程之 LockSupport
- UNI使用蓝牙连接设备传输数据
- python提取pdf表格信息
- mysql创建数据库时使用sql/wordbench使主键(primary key)自增
- Linux(Ubuntu18.04)安装SEAL-python
- pandas读写csv
- java l1 l2缓存,Java 两级缓存框架
- git 小乌龟 配置_Git-Bash和TortoiseGit小乌龟客户端配置记录