您好、欢迎来到现金彩票网!
当前位置:彩之网 > 专用程序集 >

程序集和应用程序域

发布时间:2019-07-10 06:38 来源:未知 编辑:admin

  对它们有相关的说明,但是不好理解。个人对它们的理解:程序集是发布的软件的基本单元(

  首先:程序集是代码的逻辑单元,是逻辑上的概念。它不完全等价于编译好的DLL物理文件,但一般我们认为静态专用程序集与编译出的DLL文件或EXE文件是一致的。

  最后:它是是面向.NET Framework的。意味着它虽然被编译了,但仍需要依托于.NET Framework来运行。

  一个程序集可以是一个包括元数据的DLL或EXE,也可以由多个文件组成,例如资源文件、元数据、DLL和EXE。

  注意:Win32的DLL(动态链接库)和DotNet中的DLL(程序集文件)的扩展名虽然都是DLL,但是二者内部的数据组织是不一样的,所以千万不要把二者混为一谈。

  静态程序集:静态程序集包括中间语言元数据(MSIL,类似于Java字节码的东西),以及该程序集的资源(位图、JPEG文件、资源文件等)。静态程序集存储硬盘文件中。

  动态程序集:动态程序集直接从内存运行并且在执行前不存储到磁盘上,如ASP.NET 2.0中的网站程序运行的时候产生的是动态程序集。

  专用程序集一般附带在某些软件上,且只为该软件提供专用的类库,这些库包含的代码只能用于该应用程序。一般专用程序集是与应用程序放在同一目录下的,在部署的时候与应用程序一起复制到目标机器上即可。

  共享程序集是其他应用程序可以使用的公共库,一般是安装到系统GAC中。因为其他软件可以访问共享程序集,所以所有共享程序集必须带有强名称(由发行者签名)。

  本地应用程序目录可用于存储专用程序集,所以专用程序集一般不会有版本冲突问题。其他应用程序都不会重写私有的程序集。当然,仍可以使用私有程序集的版本号,这样有助于代码的修改与管理,但它不是.NET所必须的。这种专用程序集是大多数程序员所喜欢的,它可以很好地避免DLL Hell的问题。但这种专用程序集只能部署在应用程序所在的目录之中,而无法像以往的Win32 DLL那样放置在System32目录中供多个应用程序共享,但有的时候设计人员仍有共享程序集的需求(把程序集部署到GAC目录中),这样一来又带来了我们似乎又看到DELL HELL又在慢慢地逼近我们,其实DLL共享程序集中根本不可能出现DELL HELL。因为共享程序集并不是简单地把私有程序集复制到GAC所在目录中,开发人员只能使用相关工具把强命名程序集(Strong-name Assembly)放在GAC所在目录中。在GAC中可以允许同名称但是不同版本号的程序集存在,当不同版本的强命名程序集安装在GAC中后,不同的应用程序会根据版本号信息去调用不同的程序集,这样就不会产生DLL程序集冲突的问题了。

  在操作系统中,程序和程序之间应实现某种形式的隔离,防止程序和程序之间产生不可预知的影响,这种隔离是必须的。在DotNet技术之前,通常采用进程来形成隔离边界。每一个应用程序被加载到单独的进程中,每个进程都有其私有的内存,运行在一个进程中的应用程序不能写入另一个应用程序的内存,您也不能在两个进程间进行直接调用。

  在.NET结构中,应用程序有一个新的边界:应用程序域。应用程序域是一个用于隔离应用程序的“轻量级分界线”。所谓的“轻量级”是因为多个应用程序域可以存在于单个操作系统进程中。

  应用程序域可以确保在一个域中运行的代码不会影响进程中的其他应用程序;能够在不停止整个进程的情况下停止单个应用程序。

  进程2321有两个应用程序域。在应用程序域A中,实例化了对象1和2,对象1在程序集1中,对象2在程序集2中。在进程2322中,第二个应用程序域有实例1。实例和静态成员不能在应用程序域之间共享,也不能直接访问另一个应用程序域中的对象。

  ExecuteAssembly()执行应用程序域中的程序集。它可用来执行另一个应用程序域中的代码。

  Unload()执行域的正常卸载。只有应用程序域中正在运行的所有线程都已停止或域中不再有运行的线程之后,才卸载该应用程序域。

  在程序中需要卸载之前加载的Assembly,不知道在如何实现,在网上看到了这篇文章,感觉写的不错,在此贴出来,谢谢原创作者。微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外。车...博文来自:fengjiji的专栏

  请用通俗的话解释,便于理解,对于书上或网上一大堆长篇大论我真的没法理解,谢谢!论坛

  一、进程Process:   进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。进程之间是相对独立的,一个进程无法直接访问另一个进程的数据(除非利用分布式计...博文来自:zhulongxi的博客

  在.net中有了一个AppDomain——应用程序域的新概念,.NET程序通过AppDomain这个媒介来运行在进程中。我们运行一个.NET应用程序或者一个运行库宿主时,OS会首先建立一个进程,然...博文来自:yfdong21_2009的博客

  为自己写的程序添加插件真的是一个相当常见的功能,然而如果只是简单加载程序集然后去执行程序集中的代码,会让宿主应用程序暴露在非常危险的境地!因为只要插件能够运行任何一行代码,就能将宿主应用程序修改得天翻...博文来自:walterlv的专栏

  进程运行中的应用程序,拥有自己独立内空间和资源,进程之间相互隔离,不能直接共享内存。线程是进程内部的一个执行单元,是操作系统分配处理器时间的基本单位。一个进程可以有一个或多个线程组成,且至少有一个线程...博文来自:王小波的博客

  请教一下,在C#.Net中,应用程序域,程序集的概念到底是什么?rn进程,线程这些东西在C#.Net中,到底是一种什么样的存在?rn在MSDN中,说应用程序域中包含多个进程,但是一个进程可以属于多个应用程序域,rn不知道是我的理解错误还是什么,这些概念让我很是糊涂。rn请各位大虾指点一下迷津论坛

  应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域提供了一个更安全、用途更广的处理单元,公...博文来自:水滴石穿!学习小积累!

  我对程序集和应用程序域这两个概念,看了MSDN上的一些论述,到现在还是头晕晕的rn引入这两个东东对于编程到底有什么用rnrn哪位大大来谈谈对这两个概念的领悟吧?论坛

  一.应用程序域(AppDomain)的基本概念   .net可执行程序集(.exe)在运行时都寄宿在操作系统进程中,同时程序集又需要运行在托管环境中,但操作系统进程只提供基本的服务,并不了解托管代码。...博文来自:江心一点红的博客

  深入介绍了.Net中关键组件的内部运作原理,包括CLR垃圾收集器、程序集加载器、应用程序域以及类型元数据等,还有反编译等介绍

  课程内容 程序的托管执行(Managed Execution) 程序集(Assemblies) 名称空间(Namespaces) 委托(Delegates) 线程 应用程序域(AppDomains) Framework类 程序中的属性(P...

  在《C# Web Services》书中第八章中:rn在一个服务器中安装两个Services:s1和s2,并且s1使用http通道,s2使用tcp通道,应如何实现?论坛

  程序集、应用程序域在.net中应该算是很重要的两个概念了,曾经看过自带的文档,可惜总是似懂非懂,各位有什么看法或是心得请在这指点指点。谢谢。论坛

  win32下的进程大家都了了,一个win32程序是直接承载在进程中的,而.net的应用程序域是在进程中的你个逻辑分区中,一个进程可以包含多个AppDomain。       如此一来,不...博文来自:爱喝普洱茶的程序员

  比如几个客户端访问 服务器上的 web程序,rnrn是不是每个客户端访问服务器都会为每个客户端创建一个默认的隔离的应用程序域?rnrn看书看得晕乎乎的?rnrn谁能通俗解释下论坛

  .Net应用程序域的作用就是建立一种逻辑上的隔离,使应用程序更加的稳定和可靠。启动了CLR的进程至少会拥有三个应用程序域,一般程序不会显示的创建任何应用程序域。Demo简单创建一个命令行程序,子程序中...博文来自:Jay的专栏

  程序集,对于C#程序员来说一定不陌生,不就是VS生成的那些exe,dll么。是的,程序集(.net中exe与dll的区别就是exe有程序接入口,即Main函数)就是.net框架下,可以被CLR加载并运...博文来自:q247538614的博客

  假设有一个ITest接口,它有两个实现分别是TestClass1,和TestClass2,这时候如果需要一个TestClass4类但是现有程序里又没有这个类,就可以在运行时生成一个这样的类这个应该是可...博文来自:The_Eyes的博客

  1.程序集清单,包含描述该程序集中各元素彼此如何关联的数据集合,还包含指定该程序集的版本要求和安全标识所需的所有元数据,以及定义该程序集的范围和解析对资源和类的应用所需的全部元数据。2.元数据,提供有...博文来自:NL的博客

  说道程序集和命名空间这两个名词,就觉得特别的晕,真的是傻傻分不清,不知道为什么会有这样的名字,而它们的作用又是什么,真的完全无厘头,只知道这个名称。好了,接下来我要好好研究一篇了,不可以这样稀里糊涂的...博文来自:张旭 廊坊师范学院信息技术提高班 十二期

  程序集版本号:在.net框架中和CLR运行时钟引用,如使用程序集的强命名时就会使用.按照我的理解,你所使用的库如log4net,常见的有2.0和4.0的,那么你下载的库是否是你工程中用的库,就要看这个...博文来自:along

  在.NET之前的技术中,进程作为独立的边界来使用,每个进程都有其私有的虚拟内存。运行在一个进程中的应用程序不能写入另一个应用程序的内存,也不会因为这种方式破坏其他应用程序。进程可以看做应用程序之间的一...博文来自:weixin_34409822的博客

  swf文件中的所有代码定义都存在于应用程序域中,可以使用应用程序域划分位于同一个安全域中的类,这允许同一个类存在多个定义,并且还允许子级重用父级定义。1.加载到子域类似于“继承”,子域可以直接获得父域...博文来自:webdesign-cn

  各位大哥,谁能给个进程、线程、应用程序域、上下文、程序集、托管堆之间的关系图啊?谢谢了,越学这个越迷糊啊。论坛

  这种情况你遇到过吗?当你新建MVC项目时,也许你选择了新建带有权限控制的项目,后来,你发现Startup那个文件你不需要,把它删了,运行会出现如上报错,那怎么办呢?不急,这个只要在fig...博文来自:janny_flower的博客

  前言:相信很多小伙伴在调试代码的时候都会遇到一些问题,今天就给大家分享一个简单的问题的解决办法。问题截图: 问题原因:缺少该命名空间的引用问题解决:右击引用管理器-选中对应目标-确定(如果...博文来自:天天开心鸭!

  一、什么是应用程序域?应用程序域是一个逻辑容器,它允许多个程序集在同一个进程内进行,但会组织它们直接访问属于其他程序的内存,此外应用程序域还提供了错误隔离机制,这是因为未处理的异常不会影响到其他应用程...博文来自:剑挥清风指明月·笔走狂澜舞镹天

  asp.net未能加载程序集“App_Web_XXXXXX”。请确保在访问该页之前已经编译了此程序集. index.aspx和bin目录我放在了网站一个二级目录,就有这个错误。把bin放根目录就好了....博文来自:neo_Wordsworth的博客

  C#出现混合模式程序集的问题是因为2.0版本在4.0时不适用,这时候只需要通过向app.config里的lt;startupgt;添加适用2.0版本的配置,即添加红色部分即可。&a...博文来自:Abaqus3_0的博客

  完整错误信息:“System.IO.FileNotFoundException”类型的未经处理的异常在未知模块中发生未能加载文件或程序集“UTFS.Core.dll”或它的某一个依赖项。找不到指定的模...博文来自:Stay Hungry

  由于FastDFS集群搭建非常复杂,对于初期学习FastDFS来说,搭建个单机版的作为入门更为实际一些。n第一步:搭建虚拟环境n        FastDFS需要在Linux系统上安装,我们一般使用的...博文来自:u012453843的专栏

  jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn...博文来自:Websites

  局部异常因子算法-Local Outlier Factor(LOF)在数据挖掘方面,经常需要在做特征工程和模型训练之前对数据进行清洗,剔除无效数据和异常数据。异常检测也是数据挖掘的一个方向,用于反...博文来自:wangyibo0201的博客

  1. 前言rn隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别、文本翻译、序列预测、中文分词等多个领域。虽然近年来,由于RNN等深度学习方法的发展,HMM模型...博文来自:tostq的专栏

  扫二维码关注,获取更多技术分享nnn 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗!nnDocker的三大核心概念:镜像、容器、仓库n镜像:类似虚拟机的镜像、用俗话说就是安装文件。n容器:类似一个轻量...博文来自:我走小路的博客

  webService学习(二)—— 调用自定义对象参数rn本文主要内容:rn1、如何通过idea进行webService Client的简单实现(不再使用wsimport的方式,其实是ide帮我们做了...博文来自:止水的专栏

  链表是数据结构中最基本常用的,C++语言中单链表是利用指针操作实现的,python作为面向对象编程的,可以使用创建一个Node类来实现链表,利用类的属性引用来代替指针操作。n 下面我们创建了一个...博文来自:令狐公子的博客

  前言本文是对之前的一篇文章Spring+SpringMVC+mybatis+Quartz整合代码部分做的一个修改和补充, 其中最大的变化就是后台框架变成了Spring Boot。本工程所用到的技术或工...博文来自:天降风云的博客

http://alamedapdx.net/zhuanyongchengxuji/195.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有