代码之家  ›  专栏  ›  技术社区  ›  user8472

Mac OS X上的CORBA(可可)

  •  2
  • user8472  · 技术社区  · 15 年前

    我目前正在研究在一个项目中支持分布式模型对象(即运行在多台不同计算机上的计算模型)的不同方法,该项目最初侧重于Mac OS X(使用COCO)。据我所知,有可能使用周围的类集群 NSProxy . 但似乎也有一些带有Objective-C支持的CORBA实现。

    稍后可能还需要支持/包括Windows计算机。在这种情况下,我需要在Windows端使用类似gnustep的东西(如果它工作得很好,这可能是一个选项),或者结合使用这两种技术。或者手动写一些东西(当然,这是最不可取的选择)。

    我的问题是:

    1. 如果您对这两种技术都有经验(Cocoa本地基础设施与CORBA),您能指出这两种方法的一些关键特性/问题吗?( 编辑: 正如我已经指出的 this thread 到目前为止,iPhone和iPad还没有远程方法。另一方面,CORBA实现可以在任何一个平台上工作,例如。” AdORB - CORBA ORB for Mac OS X and iPhone OS “。”

    2. 可以用上面解释的方式将gnustep与cocoa一起使用吗? [ 编辑: 根据 Gnustep FAQ entry 1.1.5 这是不可能的,所以使用Cocoa的本地基础设施将我锁定在这项技术中。]

    3. 使用Cocoa的技术在所有Mac OS客户机之间进行通信,以及通过CORBA与Windows客户机进行通信,是否有可能(并且合理可行,即比手动编写网络层更简单)?[ 编辑: 从我现在学到的,这是可能的,但肯定是不可行的。消息必须以两种方式转发,即一种需要一个“代理”来将消息从一个系统转发到另一个系统,反之亦然。这基本上等同于手动编写一个网络层,而没有实际的好处。 NS-代理 分类群集或CORBA。]

    更新: 当考虑到灵活性和可扩展性时,CORBA似乎真的是一个更好的匹配。缺点是,学习和最初使用起来似乎更复杂。 this thread (克里斯托弗·约翰逊提供的链接-谢谢!)在实践方面的不同观点。只要通信模式足够简单,WebServices就是一个可行的选项,请参见 this thread 对于iOS上运行良好的选项。我已经总结了我的发现 in this article .

    2 回复  |  直到 12 年前
        1
  •  2
  •   user23743    12 年前

    在Cocoa中实现分布式对象的最简单方法是, Distributed Objects (或在山狮上, XPC )这是一个非常简单的方法来获得RMI( here's a full example of DO )然而,这些协议是专有的,不能与非苹果平台一起使用;虽然gnustp确实使用do,而且我已经在跨平台项目中成功地使用了它们的实现,但是它们的协议与苹果的不兼容。因此,您要么在其 gnu-gnu-gnu MacOSX上的库组合而不是Cocoa(这不是我推荐的),或者选择不同的方法。

    CORBA就是这样一种“不同的方法”。CORBA和DO的主要区别在于:

    • 在CORBA中,您使用IDL定义消息传递接口,IDL用于生成objc。对于do,直接使用objective-c。
    • CORBA不支持“duck-typing”;它是强类型的,所以您打算远程使用的每个方法 必须 在IDL中指定。这也意味着,您使用的任何方法都保证在另一端实现(当然,另一端不保证在任何RMI实现中都可用)。
    • 大多数CORBA的用户基础不在Objc上(Java和C++更为常见)。
    • CORBA具有更广泛的平台支持。
    • CORBA实现不需要在objc中。
        2
  •  1
  •   Kristopher Johnson    14 年前

    fwiw,我不会使用CORBA,除非您有需要与之交互的基于CORBA的现有基础设施。

    CORBA在当时还不错,但它是一种“垂死的”技术,你很难获得必要的支持。还有一个相当陡峭的学习曲线。

    如果你想要跨平台的东西,我也会远离cocoa/gnustep的东西,因为除了OS X和iOS,它在任何地方都没有很好的支持。

    我认为,与其掌握这些遗留技术,不如花些时间来研究如何使用Web服务、SOAP或其他主流跨平台集成技术。