相同:都是基于功能划分的单位。比如说完成网络功能的组件、模块、完成统计功能的组件、模块; 这二者没有上下级的包含关系,模块可以由多个组件构建,独立的组件也通常由多个模块实现。
不同:

组件,偏向发行的概念(outside):

1、强调的是“跨项目的可重用性”这层意思。
比如“XXX采集卡通用远程监控组件”,表示这个东东是完成远程监控功能,并且是为了可重用而开发的. 这个组件本身由采集卡驱动、网路传输、信号处理等诸多模块共同实现。
2、作为需要被第三方客户使用的独立工具,组件一般都有独立的封装。
比如一个组件用符合COM接口规范的DLL发行,某些时候发行库大到包含一系列可执行文件、系统服务。

模块,偏向设计的概念(inside):

1、用于在项目中划分相对独立的功能。
比如说公司为了开发一套组件,请您设计了几个算法模块;在一些场合,模块本身就要引用多个组件,典型的是远程医学系统中视频会议模块就利用了多种第三方开发的组件。
2、模块更偏重逻辑上区分
模块更偏重逻辑上区分,封装上可以和其他模块混合,也许发行的时候,把所有模块合并为一个DLL一起发行(客户通常没必要知道你的系统由哪些模块组成)。