组件是软件的部署单元,是整个软件系统在部署过程中可以独立完成部署的最小实体。在静态语言中,体现在编译过后的二进制文件。在动态语言中,体验现在一组源代码文件。
设计良好的组件都应该永远保持可被独立部署的特性。
组件发展史
在很久以前,存储设备十分缓慢,内存非常昂贵。所以编译会很慢,大型软件通常需要几个小时。为了缩短编译时间,程序员们将库函数的源代码单独编译。
重定位技术
相当于将源代码都单独编译后,程序要运行,多个组件需要联动,重定位技术将编译后的二进制文件链接到当前运行的程序内存中,实现组件的相互调用和联动。
链接器
链接器可以将程序切分多个可被分别编译,加载的程序段,在外部链接比较少,程序规模小的情况下,这个方案可用。随着规模增长,这种模式变得不可行了。这样还是太慢了。
最后程序员们将加载过程和链接过程进行分离。将耗时的链接部分,单独放到程序中运行,这个程序就是链接器。但随着规模变大,这个链接器也越来越慢。
如今我们直接使用共享库的方式,即已经编译好的二进制文件,加上硬件的飞速发展,我么已经可以很快的编译软件了。
本章小结
组件概念就是由此产生的,为了编译速度提升。