zoukankan      html  css  js  c++  java
  • 包的学习1:编译时包和运行时包

    《DELPHI 5开发人员指南》
    21.4 组件包
    Delphi 3引入了包的概念,这样就可以把应用程序的一部分放到一个单独的模块中,让其他应用程序共享。包类似于动态链接库( DLL),但用法不一样。包主要收集组件并把它们放到一个独立的、可共享的模块(一个Borland Packages Library或.BPL文件)中。在应用程序开发过程中,包就像动态链接库一样,它也是在运行期动态地链接到应用程序中的,而不是在编译链接期链接的。因为代码是放在. b p l文件中的,所以.EXE或者.DLL文件变得很小。包与D L L不同的是,它是Delphi VCL 专用的。D e l p h i的包在其他语言写的应用程序无法使用(C++ Builder例外)。使用包的原因是使用D L L具有一些缺陷。在Delphi早期版本的VCL总要把至少150 KB到200KB的代码加到每一个可执行文件中。这样,即使把应用程序分成若干个DLL,每个DLL 和应用程序都包含这些冗余代码。尤其是,如果开发的是一个套件,问题更为明显。包的引入,便很好地解决了这些问题。
    21.4.1 为什么使用包
    为什么使用包,其原因有若干,下面讨论其中的3个。
    1. 减少代码
    使用包的最主要理由就是缩减了应用程序和DLL的大小。Delphi总是把V C L分成若干个逻辑组即包。事实上,在编译的时候,就已经存在许多包了。
    2. 使应用程序更容易分发
    你将发现许多应用程序的完全版、演示版和更新版,都可以通过Internet分发。假想一下,如果用户安装了一个程序的某一个版本,这时允许用户只下载该程序的片段,而不是整个应用程序,那有多好呢!通过把应用程序拆成若干个包,用户就可以只需要更新需要更新的地方。不过,请注意版本一致性的问题。
    3. 包容组件
    使用包的另一个非常重要的理由就是分发第三方的组件。如果你是一个组件销售商,就必须了解怎样创建包。其原因是因为组件、属性编辑器、向导和专家等,一般都是打成包分发的。
    21.4.2 什么情况下不使用包
    一般不要使用运行期包,除非你能确信其他应用程序也使用运行期包。否则,与其让包占用空间,还不如把包直接编译到应用程序中。为什么会这样呢?假如使用了包,应用程序的长度将200KB减小到30 KB,这样看似节省了不少空间。不过,还得分发包,可能还有Vc150 .dcp包,这个包的大小是2 MB。这样看来,就不像所想的那样节省空间。我们建议,如果是几个应用程序需要共享代码,这时就应当考虑使用包。请注意,这仅仅适用于运行期包。如果你是个组件编写者,必须提供包含组件的设计期包。
    21.4.3 包的类型
    包分为4种类型:
    • 运行期包。运行期包包含了应用程序在运行时所需要的代码。如果一个应用程序使用了运行期包,这个包必须与应用程序一起分发,没有这个包,该应用程序将无法运行。

    • 设计期包。设计期包包含组件、属性或组件编辑器、专家等,这些都是在设计时IDE需要用到的。该类型的包只适用于Delph i环境,并且不随应用程序一起分发。
    • 运行期和设计期包。这种包既是运行期包,又是设计期包。这种包一般不包含设计期专用的东西,譬如属性或组件编辑器、专家等。使用这种包,可以简化应用程序的开发和分发。不过,如果这种包包含了设计期专用的东西,那么应用程序就会含有冗余的东西。我们建议创建这种包时,避免包含设计期专用的东西。
    • 既不是运行期包,也不是设计期包。这种包很少用,,它一般由其他包使用,并不由应用程序或在设计环境中直接使用。

  • 相关阅读:
    zTree根据json选中节点,并且设置其他节点不可选
    点击一次按钮,发生多次ajax请求
    sublimeText3 中配置sass环境,并将编译后文件保存到指定文件夹
    MD5加密
    c# Http请求之HttpClient
    xml与object 之间的ORM
    wpf和winform的那点区别
    c# http请求ajax页面
    c# https请求
    python爬虫框架Pyspider初次接触
  • 原文地址:https://www.cnblogs.com/jshchg/p/1777089.html
Copyright © 2011-2022 走看看