我对windows COM及其背后的理念有一定的了解.我试图理解*nix系统是否有一个类似功能,或者为什么没有?

推荐答案

Unix模型基于轻量级进程的思想构建,这些进程通过套接字、管道、信号和命令行相互通信.从历史上看,Unix没有线程(POSIX线程模型只有大约10年历史的IIRC),但Unix上的进程总是比Windows上的进程便宜得多,因此将功能分解到单独的可执行文件中比允许单个程序变大和单一更有效.

在COM中,定义允许共享内存通信的二进制接口.COM与object-oriented个范例相关联.在classic 的Unix模型中,您定义了面向流的接口,允许通过管道进行通信,而无需共享内存.从概念上讲,这更接近functional编程范例.

Unix模型鼓励生成可通过轻量级"shell"轻松耦合在一起的小程序,而COM模型鼓励生成可供其他大型程序重用的公开"组件"的大型程序.这实际上是一个苹果和橙子的比较,因为这两种模型都为不同的场景提供了优点和缺点.

当然,现代Unix系统可以有类似COM的功能.Mozilla拥有XPCOM,这是一个基于与COM相同的原则构建的跨平台框架.GNOME很长一段时间都使用Bonobo,这在概念上与微软的OLE非常相似,后者是COM的先驱.但GNOME的最新版本已经从倭黑猩猩转向D-Bus,D-Bus更像是一种事件/消息传递模式.

Linux相关问答推荐

将UTC字符串日期时间转换为毫秒UTC时间戳

Aarch64在Linux上是否有红色区域,如果有,是16个字节还是128个字节?

如何限制SLURM中并行执行的程序数量

我想显示包含一个方括号的行,方括号可以是开括号,也可以是闭括号.

将(覆盖)文件移动到不同位置的同名文件夹中

如何比较 2 个文件并将第二个文件的所有行打印到输出文件 awk

如何在 linux 上为 JNI 应用程序编译动态库?

Linux 进程在后台 - 在作业(job)中 Stopped停止?

用于 GCC/G++ 的宏来区分 Linux 和 Mac OSX?

如何克隆 OpenLDAP 数据库

自动化 Amazon EBS 快照 任何人在 linux 上都有一个好的脚本或解决方案

在 linux 上查看文件大小

从文本文件中删除奇数行或偶数行

将 jiffies 转换为毫秒

我可以打开一个套接字并将其传递给 Linux 中的另一个进程吗

如何从 Linux 内核模块的 init_module 代码创建设备 node ?

`cd //` 中的双斜杠 // 在 Linux 中是什么意思?

Linux 的文本编辑器(除了 Vi)?

readelf vs. objdump:为什么都需要

Linux cmd 在 jar 中搜索类文件,而不考虑 jar 路径