动态数据库动态数据库Dd字母对于你来说一定很熟悉吧,它是Dynamic database 的缩写形式,函数的可执行代码位于一个 动态数据库中,该 动态数据库 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数
动态数据库还有助于共享数据和资源
多个应用程序可同时访问内存中单个 动态数据库 副本的内容
动态数据库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源
由于动态数据库代码使用了内存共享技术,在某些地方windows也给了动态数据库一些更高的权限,因而动态数据库中可以实现一些一般程序所不能实现的功能,如实现windows的HOOK、ISAPI等
同时,动态数据库还为不同语言间代码共享提供了一条方便的途径
因而动态数据库在编程时应用较为广泛,本文将介绍如何在 Delphi 中建立和使用动态数据库
从使用效果看,动态数据库和unit 很像,它们都可以被别的工程模块所调用,但二者在内部的实现机制上确存在着差别
如果一个程序模块中用uses语句引用了某个unit,编译程序在编译该模块时,便会连同unit一起编译,并把编译后的可执行代码链接到本程序模块中,这就是一个程序模块能够调用所引用unit中过程和函数的原因
当同一个unit被多个工程所引用时,则每个工程中都含有该unit的可执行代码,当含有该unit的多个工程同时执行时,unit的可执行代码会随不同工程而多次被调入内存,造成内存资源的浪费
动态数据库则不同,它即使被某个工程调用,编译后仍是独立的
也就是说编译后,一个动态数据库形成一个单独的可执行文件,而不与任何其它的可执行文件连接在一起,因而动态数据库并不从属于某个特定的工程,当多个工程调用同一个动态数据库时只有第一个工程把动态数据库调入内存,其余工程并不重复调入同一个动态数据库到内存,而是到同一个共享内存区读取
并且,动态数据库的执行代码是在程序运行期间动态调入的,而不是如unit在程序运行时就与整个工程一起调入内存
这样便可消除unit带来的相同代码多处占用内存的弊病
Delphi中动态数据库的建立在Delphi环境中,编写一个动态数据库同编写一个一般的应用程序并没有太大的区别
事实上作为动态数据库主体的动态数据库函数的编写,除了在内存、资源的管理上有所不同外,并不需要其它特别的手段
一般工程文件的格式为:program 工程标题;uses 子句;程序体而DLLs工程文件的格式为:library 工程标题;uses 子句;exprots 子句;
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。