Mac OS中COM的等价物是什么?

Mac OS中COM的等价物是什么?,com,macos,Com,Macos,我是Mac编程的新手。有人能告诉我Mac中可重用COM组件的等价物是什么,以及开始使用的好资源的一些链接(创建可重用COM类组件并从调用的应用程序引用这些组件)吗?多谢各位 澄清: -我想知道是否存在操作系统级支持的类似技术。 -我问这个问题是因为我想把我的一些应用程序(这些应用程序利用了Windows和我制作的现有类型库)移植到Mac上。 -我是否可以为现有的(窗口)类型库创建包装类,并从Mac应用程序中引用它们?嗯,有。Cocoa/Objective-C对象几乎就是您所需要的所有对象。在更高

我是Mac编程的新手。有人能告诉我Mac中可重用COM组件的等价物是什么,以及开始使用的好资源的一些链接(创建可重用COM类组件并从调用的应用程序引用这些组件)吗?多谢各位

澄清:
-我想知道是否存在操作系统级支持的类似技术。
-我问这个问题是因为我想把我的一些应用程序(这些应用程序利用了Windows和我制作的现有类型库)移植到Mac上。

-我是否可以为现有的(窗口)类型库创建包装类,并从Mac应用程序中引用它们?

嗯,有。

Cocoa/Objective-C对象几乎就是您所需要的所有对象。在更高的层次上,NIB可以在应用程序之间重用,尽管我认为这并没有得到广泛的应用

您可以为Interface Builder编写插件,以使用自己的组件,如标准组件

Apple Events和AppleScript是标准的IPC和脚本技术


但是,与Windows世界中的COM不同,对于通过标准接口相互交互、生活在标准容器中、参与事务等的组件,实际上没有标准约定。没有类似于类型库或IDL的约定(尽管脚本字典可能很接近).

在Mac OS X中没有什么能与COM相比(我想你说的是OS X,而不是经典的Mac OS)。如果您想编写可重用组件或Cocoa应用程序,其实非常简单:

  • 写你的课程
  • 创建共享库项目
  • 建立图书馆并分发
  • 对于iter过程通信和COM的嵌入部分,实际上没有任何标准化

    我认为从Mac开发中心开始将是一个很好的起点。就我所知,在整个操作系统中没有与COM/OLE直接等价的东西,但是XPCOM和CORBA可以用于某些场景


    可能是寻找传统Mac解决方案的最佳地方,可以让应用程序彼此对话。

    您可能想看看。尽管它不允许您直接重用现有的特定于Windows的COM代码,但它确实为您提供了跨不同编程语言(任何具有CLI编译器的语言)甚至不同操作系统(例如Windows、Mac、Linux)的可重用组件的类似范例

    我还建议直接连接到本机Mac OS X库。

    可能吧

    :

    核心基础框架对象CFPlugin实现了一个小的 Microsoft组件对象模型(COM)标准的子集。组件对象模型 允许您以面向对象的方式实例化C函数和数据 运行时的方式


    它最初致力于插件体系结构,但似乎可以用作COM等效物,请参阅Joe Zobkiw的旧帖子和“Mac OS X高级开发技术”第5章(碳插件)。很遗憾,我找不到更多的例子。

    具体要求是什么?例如,您是否需要IPC/封送处理?RPC?永久存储?用户界面嵌入?RTTI/DispInvoke/scripting?作为在Mac、RPC、UI中开始的一种嵌入,可能太多了。但分派/调用/脚本更可能是我所需要的。对于IPC,OS X有Apple Events/AppleScript和可移植的分布式对象。这已经是二十年来的标准了。这听起来更像是一个DLL,而不是COM。@威尔——在某种程度上,除了DLL+对象和接口的系统,COM是什么?在Mac OS中,.dylib提供前者,而objC运行时提供后者。Chuck,虽然我并不反对AppleeEvents和PDO的存在,但它们并不是COM IPC的完全替代品。您可以在PDO上实现一个接口枚举系统,但它实际上并没有提供任何现成的功能。而且(据我所知)没有任何东西能提供与COM容器相当的功能。很多Cocoa应用程序都为可加载的捆绑包提供了一个接口,但同样,没有功能的枚举(除非应用程序开发人员指定一个),因此你不能做像将通用组件嵌入多个应用程序这样的把戏。XPCOM是mozilla的事情。除非你正在构建浏览器插件,否则它并不是真正相关的。人们可以在Mozilla之外使用XPCOM,而在二进制级别上,它实际上只是COM(相同的vtable布局,相同的基本接口…)。但它当然不是通用的,所以它只能用于两个特别同意使用它的应用程序之间的通信。