RyB*_*olt 35 unix architecture linux com
我对windows COM及其背后的想法有所了解.我试图了解*nix系统是否具有等价物或为什么不具有等价物?
Dan*_*den 41
Unix模型围绕轻量级进程的思想构建,这些进程通过套接字,管道,信号和命令行相互通信.从历史上看,Unix没有线程(POSIX线程模型只有10年左右的IIRC),但Unix上的进程总是比在Windows上便宜得多,因此将功能分解为单独的可执行文件比使用单个程序,以增长大型和单片.
在COM中,您可以定义允许共享内存通信的二进制接口.COM与面向对象的范例联系在一起.在经典的Unix模型中,您可以定义面向流的接口,允许通过管道进行通信,而无需共享内存.从概念上讲,这更接近函数式编程范式.
Unix模型鼓励制作可以通过轻量级"shell"轻松耦合在一起的小程序,而COM模型鼓励制作大型程序,以暴露可被其他大型程序重用的"组件".它实际上是苹果和橙子的比较,因为这两种模型都为不同的场景提供了好处和缺点.
当然,现代Unix系统可以具有类似COM的功能.Mozilla拥有XPCOM,这是一个基于与COM相同原则构建的跨平台框架.GNOME很长一段时间都使用了Bonobo,它在概念上非常类似于Microsoft OLE,它是COM的先驱.但最近版本的GNOME已经从Bonobo转向支持D-Bus,而D-Bus更像是一种事件/消息模式.
Jör*_*tag 30
最接近的可能是D-Bus.D-Bus是一种轻量级的IPC协议和对象请求代理(ORB),非常类似于COM,受到COM和D-Bus的前身DCOP(KDE)和CORBA(GNOME)以及Netlink(Linux内核)的启发.
在D-Bus之前,两个主要的Unix桌面环境都有自己的组件模型和桌面总线.GNOME有基于CORBA的Bonobo,KDE有基于DCOP的KParts.Linux内核具有Netlink,它是内核和用户空间之间的通信协议,iproute2只要您配置网络接口,就可以使用该工具.
内核开发人员不断要求释放Netlink作为用户空间程序之间通信的单独部分,但他们担心这会导致功能膨胀和维护问题.最后,在Free Desktop组织的保护下,其目标是创建跨桌面标准,KDE和GNOME开发人员共同开发基于DCOP和Netlink最佳部分的IPC消息系统,结果是D-Bus.
在GNOME和KDE的当前版本中,D-Bus完全取代了CORBA和DCOP,因此可以在KDE中运行GNOME应用程序,反之亦然,具有更高的保真度.D-Bus也被许多其他桌面环境和应用程序所采用,不仅在Linux上,而且在其他Unix系统,以及OSX甚至Windows上.
至少应该提到的另一种选择是Mozilla的XPCOM,它是一个受CORBA和COM启发的跨平台对象模型.(实际上,XPCOM是跨平台组件对象模型的首字母缩写.)它使用与CORBA非常相似的IDL,称为XPIDL.然而,据我所知,没有人真正使用XPCOM,它被评论家以及Firefox和其他Mozilla应用程序的开发人员认为是膨胀的主要来源之一,Mozila开发人员实际上正在积极努力减少使用XPCOM特别是像Gecko这样的组件内部.
然而,正如@Daniel Pryden所指出的那样,在不需要与桌面紧密集成的情况下,Unix中已有很多东西比D-Bus 更受欢迎.我说的是管道,命名管道和插座等东西.
| 归档时间: |
|
| 查看次数: |
8726 次 |
| 最近记录: |