【问题标题】:Linux/Mac OS X equivalents for Windows Communication Foundation适用于 Windows Communication Foundation 的 Linux/Mac OS X 等效项
【发布时间】:2009-06-03 13:38:36
【问题描述】:

--编辑--

Linux 和 Mac OS X 的哪些应用程序开发框架/组件模型类似于 Windows Communication Foundation 和 COM,它们提供高级 IPC 机制来操作/与软件应用程序通信?

高级通信模型是指 RPC、发布/订阅等。

我正在为交互设备编写软件,这些软件可以绑定到某些软件中的计算和数据操作。到目前为止,我可能有一个带有物理滑块的控制面板,这些滑块绑定到 Excel、Calculate 或 Numbers 中加载的电子表格中的各个单元格。我有办法感知源自设备的事件,但交互子系统(X11、Explorer 等)无法扩展以处理新类型的交互事件,因此我需要捕获我自己的事件并将其传输到软件和从软件传输他们所绑定的。

此外,我想控制的大多数应用程序都无法修改以响应这些新类型的事件。并且模拟热键和快捷键序列的表现力不够,尽管它会利用现有的交互子系统。这就是我对特定于平台的框架感兴趣的原因,因此我可以利用预先存在的钩子来控制野外的软件。

由于这是用于用户交互,因此它需要具有低延迟。我也想选择无状态的异步通信。

我已经考虑过这个问题,我意识到我需要问两个问题。一个是关于高级 IPC,另一个是关于对象组件模型,它允许您在软件对象上调用方法。

--原始问题--

哪些通信/组件框架提供的功能最类似于 Linux 和 Mac OS X 上的 Windows Communications Foundation?

我的研究小组开始为交互式应用程序开发某种类型的应用程序开发框架,其中涉及新类型的设备来操作/与软件应用程序交互。我们希望使用适配器模式为设备/设备应用程序/应用程序或设备/应用程序通信提供抽象,以便使用此框架构建的软件可以跨 3 个主要操作系统平台移植。

【问题讨论】:

  • 问题形式为“平台 MNO 上的 XYZ 是什么?”应该说 XYZ 做了什么对他的提问很重要...以免对 MNO.FooBar.Framework 但不是 XYZ 非常熟悉的人无法回答。不是说这是一个讨厌的东西,或者其他什么,而是 ARRGGGHHH !!!!!!
  • 还有一个指向相关程序的传出链接也很有用。
  • 啊。好多了。谢谢。我发现自己想知道 X 是否提供了您所要求的那种通信层。

标签: windows linux wcf macos communication


【解决方案1】:

如果 Linux 应用程序足够现代,您或许可以利用 D-Bus。它主要是来自 KDE 的 DCop 的后代,在较小程度上是来自 GNOME 的 Bonobo,所以如果它更老,你可能会查找其中的一个。当然,这是假设它使用其中一个工具包。

如果它比这更早或使用没有任何高级 IPC 的工具包(例如 Motif(我认为)),您最终可能不得不求助于管道、套接字、fifos 以及我可能忘记的任何其他东西。当然,这假设该应用程序具有某种挂钩。

【讨论】:

  • 我希望我能接受两个答案,因为 supercheetah 和 stefanB 的答案结合起来回答了我的问题。我想我应该将这个问题作为两个单独的问题提出,一个针对 Mac,另一个针对 Linux。 D-Bus 维基百科文章提供了为什么 D-bus 是我在 Linux 上寻找的最佳理由。 en.wikipedia.org/wiki/D-Bus#Architecture - 操作系统 应用程序通信 - 发布/订阅通信模型 - 将功能公开为服务的能力
【解决方案2】:

这里是与 Mac OS X 上的网络相关的指南列表,它涵盖了从低级套接字通信到 http://developer.apple.com/documentation/Cocoa/Networking-date.html#doclist 的不同级别的网络

它涵盖:

  • Core Foundation 网络功能 使用低级 BSD 套接字。
  • 可可流类读取数据 从流中读取数据并将数据写入流。
  • Web 服务客户端框架 在 Mac OS X 中可用。
  • 可可或碳中的 Bonjour 应用程序。
  • URL 加载系统操作 URL 和传输 网址内容
  • 分布式对象编程 - Objective-C 不同对象之间的通信 线程或不同的进程

否则Mac OS X 是完全符合 Posix 的 unix 系统,因此您会发现与 Linux 上类似的 IPC 系统。

或者您可能正在使用 Mac OS X System Services,该系统允许一个应用程序访问另一个应用程序的功能。应用程序宣传他们提供的服务。有关更多详细信息,请阅读链接的 Apple 文档。

【讨论】:

  • 就像我之前所说的,我希望我能接受多个答案。在 Mac 端,有多种 IPC 机制。至于高级通信模型,有通知服务:developer.apple.com/documentation/UserExperience/Conceptual/… 考虑到各种 Mac 应用程序可通过 AppleScript 编写脚本的程度,必须有一个可以直接转换的定义良好的应用程序模型。无论哪种方式,我都有一些好的线索。
  • 我继续投票,因为我已被标记为答案。这似乎很公平。
【解决方案3】:

最近的表亲是 libsoap 和您选择的语言的等效 SOAP 库。

【讨论】:

  • 表哥有点过分了,SOAP只是WCF的一小部分。但如果 Corntoole 真正想要的只是一些通信,那么 SOAP 可能是一个好方法。
  • SOAP 的答案有点让我想要;也许作为一种消息格式,但我更关心低延迟通信机制,最好使用高级语义,如发布/订阅模型。此外,我对能够很好地连接到操作系统交互堆栈的通信感兴趣,因此我可以控制/与我无法修改的软件进行交互,而不是简单地模拟热键和键盘快捷键。也许我没有问正确的问题。
猜你喜欢
  • 2011-03-28
  • 1970-01-01
  • 2010-10-04
  • 2010-09-29
  • 2010-11-29
  • 2010-09-05
  • 2011-03-28
  • 1970-01-01
  • 2010-10-08
相关资源
最近更新 更多