Mac OS X 是不是有 Microsoft RPC 等价物?
Posted
技术标签:
【中文标题】Mac OS X 是不是有 Microsoft RPC 等价物?【英文标题】:Does Mac OS X have an Microsoft RPC equivalent?Mac OS X 是否有 Microsoft RPC 等价物? 【发布时间】:2013-11-08 18:18:24 【问题描述】:Microsoft RPC 提供了一种可以以函数调用方式完成的 IPC 机制。这对我的项目非常有帮助,我的主服务将任务委托给子进程,并且可以调用子进程中的函数,就好像它们在主服务中实现一样。这消除了在使用其他 IPC 机制(例如命名管道、套接字、protobuf 等)时必须序列化抽象数据和定义自定义协议的负担。我知道 RPC 确实在内部使用它们。
我在implementing COM for Mac OS X 上读过一篇文章,这可能是最接近我需要的东西。如果我找不到其他方法来实现我需要的 IPC 类型,我可能会选择 COM,但我想我会确保我没有遗漏任何东西。
【问题讨论】:
【参考方案1】:看看"XPC Services"。来自文档:
XPC 服务由 launchd 管理,并为单个 应用。它们通常用于将应用程序划分为 较小的部分。这可用于通过限制 进程崩溃时的影响,并通过限制 如果进程受到损害会产生影响。
在该指南的后面部分:
NSXPCConnection
API 是一个基于 Objective-C 的 API,它提供了一个 远程过程调用机制,允许客户端应用程序 代理对象上的调用方法,这些方法透明地将这些调用中继到 服务助手中的相应对象,反之亦然。
【讨论】:
我最初应该提到这一点,但我需要它在 10.7+ 上工作(NSXPCConnection API 来自 10.8),并且我需要能够让子进程能够在任一系统中运行或用户上下文。 XPC 服务只能在用户上下文中运行。我可能最终会使用 COM,但由于每个人的要求不同,我将其标记为答案。以上是关于Mac OS X 是不是有 Microsoft RPC 等价物?的主要内容,如果未能解决你的问题,请参考以下文章