控件:是编程中用到的,按钮就算是一个控件,窗口也是等等
组件:是软件的一部分.软件的组成部分.
插件:网页中用到的,flash插件,没有它浏览器不能播放flash.
首先范围最广的应该是组件,英文component,提起组件我们不应该把他和具体的技术,什么dll文件,ocx控件,activex等等联系起来,因为组件仅仅是一个概念,如果非要解释的话,那就是凡是在软件开发中用到了软件的复用,被复用的部分都可以称为组件。构件的英文也是component,所以说构件和组件其实是一个意思只是翻译的不同而已。
其实我认为最有意思的应该是插件,顾名思义,“插件”是允许我们动态插入的,而不是在编程的时候静态的写入的,这就是与普通的组件的区别,因为普通的组件是在编程的时候引入的。我们以硬件为例子,例如USB接口,主机设定了标准的接口,而不必考虑外部接口具体是什么设备只要这种设备实现主机提供的接口,两者就可以通讯。这种插件有个最大的优点就是即插即用,即支持动态的插入。
插件是组件(构件)的一种,我们可以这样给插件进行定义,那就是凡是在应用程序中已经预留接口的组件就是插件,例如:java中jdbc技术,jdbc只是一个接口,任何一个插件制造商只要实现这个接口都可以被java平台所使用。我们还可以拿IE插件作为例子,IE中之所以可以嵌入很多的应用程序,那是因为IE允许他们插入,说的明白一点,那就是在IE的源程序中已经为这些应用程序预留了接口,只要把通知浏览器已经加载了什么插件,浏览器就会调用预留的接口调用这些所谓的插件。
当然控件也是组件(构件)的一种,按照网上的说法,控件就是可视化的组件,我也同意这种说法,其实再从普通组件中分解出控件完全是没有必要的,因为对于开发人员来讲,可不可视对于非软件人员来说可能很重要,但是对于软件人员来说又有什么区别呢?