学IT,好工作,就读北大青鸟

北大青鸟电话028-86763871
×

当前位置: 首页 > 青鸟知识 > .Net

.NET框架解决DLL Hell问题:问题描述

2016-04-12

.NET框架与DLL Hell问题:版本问题BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

从客户的角度,最常见的版本问题就是我们所说的 DLL Hell 问题。简单地讲, DLL Hell 是指当多个应用程序试图共享一个公用组件(如某个动态连接库(DLL)或某个组件对象模型(COM)类)时所引发的一系列问题。最典型的情况是,某个应用程序将要安装一个新版本的共享组件,而该组件与机器上的现有版本不向后兼容。虽然刚安装的应用程序运行正常,但原来依赖前一版本共享组件的应用程序也许已无法再工作。在某些情况下,问题的起因更加难以预料。比如,当用户浏览某些 Web 站点时会同时下载某个 Microsoft ActiveX? 控件。如果下载该控件,它将替换机器上原有的任何版本的控件。如果机器上的某个应用程序恰好使用该控件,则很可能也会停止工作。BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

在许多情况下,用户需要很长时间才会发现应用程序已停止工作。结果往往很难记起是何时的机器变化影响到了该应用程序。用户可能会回忆起一周前安装了一些东西,但安装与目前看到的状态并没有任何明显的关联。 更糟的是,现在很少有诊断工具帮助用户(或帮助他们的技术支持人员)确定有什么问题。BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

这些问题的原因是应用程序不同组件的版本信息没有由系统记录或加强。而且,系统为某个应用程序所做的改变会影响机器上的所有应用程序—现在建立完全从变化中隔离出来的应用程序并不容易。 BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

很难建立一个隔离应用程序的一个原因是当前运行时环境只允许单独版本组件或应用程序的安装。这个限制意味着组件的编写者必须以向后兼容的方式编写他们的代码,否则当他们安装新组件的时候会有终止已有应用程序的风险。实际上,如果可能的话,编写永远向后兼容的代码是非常难的。在 .NET 中,side by side 概念是版本问题的核心。"Side by side" 是在同一台机器上同时运行不同版本的相同组件的能力。使用支持并列的组件,编程人员不必努力维护严格的向后兼容,因为不同的应用程序自由使用某个共享组件的不同版本。BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

.NET框架与DLL Hell问题:发布和安装BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

现在安装应用程序是多步过程。一般,安装一个应用程序包括复制许多软件组件到磁盘,和在系统中进行一系列描述那些组件的注册项。 BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

注册表中的项和磁盘上文件的分隔使复制应用程序和卸载他们非常困难。而且,在注册表中完全描述某个 COM 类所需的许多项之间关系非常松散。这些项常常包括联合类、接口、类型库和 DCOM app ID 的项,不涉及任何放在注册表文档扩展或组件类别的项。要时常手工保持这些项的同步。BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

最后,需要该注册足迹激活任何 COM 类。这极大地复杂了发布分布式应用程序的过程,因为必须到每个客户端的机器进行适当的注册项。BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

如今另一个共同问题是:对一个正在运行的应用程序进行更新是不现实的。这是 Web 应用程序最大的问题,Web 应用程序必须停止工作然后重启动以更新应用程序使用的 COM 类。 BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

这些问题主要由从组件自己分离传来的组件描述引起的。换句话说,应用程序不是自描述的和独立的。BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

以上就对需要.NET框架解决的DLL Hell问题进行了简单的描述。BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站


BW8北大青鸟_北大青鸟计算机培训学校_北大青鸟优越教育官方网站

  • 成都总部地址:成都市武侯区天益街38理想中心3栋3楼
    咨询电话:028-86763871
    面授课程:启蒙星课程、软件开发工程师课程、网络工程师课程、Java全栈工程师课程、WEB全栈课程、.Net工程师课程、全栈软件测试培训、UI/UE设计师课程、大数据培训、云计算课程
  • 北京佳音旗舰校区地址:北京市西城区北礼士路100号
    咨询电话:400-601-0802
    面授课程:启蒙星课程、软件开发工程师课程、网络工程师课程、Java全栈工程师课程、WEB全栈课程、.Net工程师课程、全栈软件测试培训、UI/UE设计师课程、大数据培训、云计算课程
  • 贵阳优越校区地址:贵阳市高新区国家数字内容产业园
    咨询电话:400-680-0851
    面授课程:启蒙星课程、软件开发工程师课程、网络工程师课程、Java全栈工程师课程、WEB全栈课程、.Net工程师课程、全栈软件测试培训、UI/UE设计师课程、大数据培训、云计算课程
  • 沈阳三好校区地址:沈阳市和平区三好街54号
    咨询电话:400-855-1066
    面授课程:启蒙星课程、软件开发工程师课程、网络工程师课程、Java全栈工程师课程、WEB全栈课程、.Net工程师课程、全栈软件测试培训、UI/UE设计师课程、大数据培训、云计算课程
  • 兰州优越校区地址:兰州市安宁区兴安路教育港
    咨询电话:0931-7701993
    面授课程:启蒙星课程、软件开发工程师课程、网络工程师课程、Java全栈工程师课程、WEB全栈课程、.Net工程师课程、全栈软件测试培训、UI/UE设计师课程、大数据培训、云计算课程
  • 上海人民广场校区地址:上海市黄浦区云南北路59号六合大厦13楼(人民广场地铁口5号出,正北方向500米)
    宝山校区地址:上海市宝山区纪蕴路588号5号楼B区2楼
    咨询电话:021-61113200
    面授课程:启蒙星课程、软件开发工程师课程、网络工程师课程、Java全栈工程师课程、WEB全栈课程、.Net工程师课程、全栈软件测试培训、UI/UE设计师课程、大数据培训、云计算课程