我对windows COM和它背后的思想有一定的了解。我想知道*nix系统是否有等价物,或者为什么没有?
发布于 2010-06-18 00:17:02
Unix模型是围绕轻量级进程的概念构建的,这些轻量级进程通过套接字、管道、信号和命令行相互通信。从历史上看,Unix没有线程( POSIX线程模型只有10年左右的历史),但Unix上的进程总是比Windows上的进程便宜得多,因此将功能分解到单独的可执行文件中要比让单个程序变得更大更有性能。
在COM中,您可以定义允许共享内存通信的二进制接口。COM与面向对象的范例绑定在一起。在经典的Unix模型中,您定义了面向流的接口,允许在没有共享内存的情况下通过管道进行通信。从概念上讲,这更接近于函数式编程范例。
Unix模型鼓励制作可以通过轻量级“外壳”轻松耦合在一起的小程序,而COM模型鼓励制作公开可供其他大型程序重用的“组件”的大型程序。这实际上是一种苹果和橙子的比较,因为这两种模型都针对不同的场景提供了优点和缺点。
当然,现代Unix系统可以具有类似COM的功能。Mozilla拥有XPCOM,这是一个基于与COM相同的原则构建的跨平台框架。GNOME很长一段时间都在使用Bonobo,它在概念上与COM的前身Microsoft OLE非常相似。但最近版本的GNOME已经从Bonobo转向了D-Bus,后者更像是一种事件/消息传递模式。
https://stackoverflow.com/questions/3063321
复制相似问题