2

私は現在、最初は Mac OS X (Cocoa を使用) に焦点を当てたプロジェクトで、分散モデル オブジェクト (つまり、複数の異なるコンピューターで実行される計算モデル) をサポートするさまざまな方法を検討しています。私の知る限り、クラス クラスターを使用する可能性がありますNSProxy。しかし、Objective-C をサポートする CORBA の実装もあるようです。

後で、Windows マシンもサポート/含める必要があるかもしれません。その場合、Windows 側で Gnustep のようなものを使用する必要があります (うまく機能する場合はオプションになる可能性があります)。または、両方のテクノロジの組み合わせを考え出す必要があります。または、何かを手動で記述します (もちろん、これは最も望ましくないオプションです)。

私の質問は次のとおりです。

  1. 両方のテクノロジー (Cocoa ネイティブ インフラストラクチャと CORBA) の経験がある場合は、どちらのアプローチの重要な機能や問題点を指摘できますか? (編集:このスレッドで既に指摘したように、リモート メソッドは今のところ iPhone と iPad では使用できません。一方、どちらのプラットフォームでも動作する CORBA 実装があります。たとえば、「AdORB - Mac OS X 用の CORBA ORBおよび iPhone OS ".)

  2. 上記の方法で Cocoa で Gnustep を使用することは可能ですか? [編集: Gnustep FAQ エントリ 1.1.5によると、これは不可能であるため、Cocoa のネイティブ インフラストラクチャを使用すると、このテクノロジに縛られてしまいます。]

  3. Cocoa のテクノロジを使用してすべての Mac OS クライアント間で通信し、CORBA を介して Windows クライアントと通信することは可能ですか? [編集:私が今学んだことから、これは可能ですが、確かに実現可能ではありません。メッセージは双方向に転送される必要があります。つまり、あるシステムから別のシステムに、またはその逆にメッセージを転送するための「プロキシ」が必要です。これは、ネットワーク層を手動で作成するのと本質的に同等であり、NSProxyクラス クラスタまたは CORBA のいずれからも実際的な利点はありません。]

更新:柔軟性と拡張性が懸念される場合は、CORBA の方が適しているようです。欠点は、学習と最初の使用がより複雑に見えることです。実用的な側面に関するさまざまな視点については、このスレッド(Kristopher Johnson によって提供されたリンク – ありがとう!) を参照してください。Web サービスは、通信パターンが十分に単純である限り実行可能なオプションです。iOS で適切に機能するオプションについては、このスレッドを参照してください。調査結果をこの記事にまとめました。

4

2 に答える 2

2

Cocoa で分散オブジェクトを実装する最も簡単な方法は、分散オブジェクト(または Mountain Lion、XPC ) を使用することです。これは、RMI を取得するための非常に簡単な方法です (ここに DO の完全な例があります)。ただし、これらのプロトコルは独自のものであり、Apple 以外のプラットフォームでは使用できません。GNUstep は DO を使用し、私はクロスプラットフォーム プロジェクトでその実装をうまく使用しましたが、それらのプロトコルは Apple のものと互換性がありません。したがって、Cocoa の代わりに Mac OS X のライブラリ コンボで GNUstep を使用するかgnu-gnu-gnu(これはお勧めしません)、別のアプローチを選択する必要があります。

CORBA は、そのような「異なるアプローチ」の 1 つです。CORBA と DO の主な違いは次のとおりです。

  • CORBA では、ObjC の生成に使用される IDL を使用してメッセージング インターフェイスを定義します。DO では、Objective-C を直接使用します。
  • CORBA は「ダック タイピング」をサポートしていません。これは厳密に型指定されているため、リモートで使用するすべてのメソッドをIDL で指定する必要があります。これはまた、あなたが使用するメソッドは、反対側で実装されることが保証されていることも意味します (もちろん、反対側が RMI 実装で利用可能であるとは保証されていません)。
  • CORBA のユーザー ベースのほとんどは ObjC を使用していません (Java と C++ がより一般的です)。
  • CORBA はより幅広いプラットフォームをサポートしています。
  • CORBA の実装は ObjC である必要はありません。
于 2010-10-14T10:29:42.137 に答える
1

FWIW、インターフェースが必要な既存の CORBA ベースのインフラストラクチャがない限り、私は CORBA を使用しません。

CORBA は当時は問題ありませんでしたが、「死にかけている」テクノロジーであり、今後必要なサポートを得るのに苦労するでしょう。また、かなり急な学習曲線もあります。

クロスプラットフォームが必要な場合は、OS X と iOS 以外ではあまりサポートされていないので、Cocoa/Gnustep も避けたいと思います。

これらのレガシー テクノロジを習得するよりも、Web サービス、SOAP、またはその他の主流のクロスプラットフォーム統合テクノロジの使用方法を理解することに時間を費やしたほうがよいと思います。

于 2010-08-23T14:26:44.937 に答える