我对Windows COM及其背后的想法有所了解。我想了解* nix系统是否具有等效功能,或者为什么没有?
Unix模型是围绕轻量级进程的概念构建的,该进程通过套接字,管道,信号和命令行相互通信。从历史上看,Unix没有线程(POSIX线程模型只有大约10年的IIRC年代),但是Unix上的进程总是比Windows上便宜得多,因此将功能分解为单独的可执行文件比允许创建一个可执行文件更具性能。单个程序可以变得庞大且庞大。
在COM中,您定义允许共享内存通信的二进制接口。COM与 面向对象的 范例相关联。在经典的Unix模型中,您定义了面向流的接口,这些接口允许通过管道进行通信,而无需共享内存。从概念上讲,这更接近于 功能 编程范例。
Unix模型鼓励创建可以通过轻量级“外壳”轻松耦合在一起的小程序,而COM模型鼓励创建暴露“组件”的大型程序,这些组件可以被其他大型程序重用。这实际上是一个“橘子橘子”的比较,因为这两种模型都针对不同的情况提供了利弊。
当然,现代Unix系统可以具有类似COM的功能。Mozilla具有XPCOM,它是一种跨平台框架,建立在与COM相同的原则上。GNOME长期以来一直使用Bonobo,Bonobo在概念上与Microsoft OLE非常相似,后者是COM的先驱。但是GNOME的最新版本已经从Bonobo转移到了D-Bus,而D-Bus更像是事件/消息传递模式。