10

多層またはクライアント サーバー アプリケーションを作成するための現在のベスト プラクティスと見なされている Cocoa の方法はありますか?

私は経験豊富な Web 開発者で、Python が大好きです。私はココアに不慣れです。私が書いているアプリケーションは、大病院の患者管理システムです。システムは時間の経過とともに膨大な量のデータを保存することが予想されますが、1 回のセッションで転送されるデータは非常に軽量です (ほとんどがテキストのみ)。通信は、ローカル ネットワーク (有線または無線) 経由で行われると想定されています。もちろん、安全性が高い必要があります。

私が思いついた最善の方法は、Python REST Web サービスを作成し、Cocoa アプリを介して接続することです。おそらく、Python を使用して Cocoa アプリ自体をコーディングすることもあるでしょう。

Cocoa を見ると、Cocoa には CoreData のような非常に優れたテクノロジが見られますが、クライアント サーバー開発に類似したものは見つかりませんでした。何も見逃していないことを確認したいだけです。

どう思いますか?

実際の例は非常に高く評価されます。

前もって感謝します。

4

5 に答える 5

6

クライアントとサーバーの両方を制御でき、クライアントを OS X のみに制限できる場合は、Marc の回答を支持します。Cocoa の分散オブジェクトは驚くべきテクノロジであり、RPC スタイルのクライアント/サーバー アプリケーションを非常に簡単にします。

上記の要件が制限的すぎる場合でも、Cocoa の世界では多くのオプションを利用できます。

  1. PyObjC を使用して、クライアント アプリ全体を Python でコーディングできます。このアプローチでは、使い慣れた Python 標準ライブラリの標準ネットワーク コードを使用できます。Twistedは Cocoa の実行ループ (PyObjC サンプル コードの例) ともうまく統合されており、私は Twisted を使用して Cocoa アプリからのネットワーク通信に多くの成功を収めてきました。この方法を選択した場合は、Objective-C でクライアント アプリをコーディングし、Python コードをプラグインとして (NSBundle を使用して) ロードすることをお勧めします。PyObjCpy2appは、Python コードからロード可能なバンドルをコンパイルできます。

  2. HTTP ベースのサーバーへの高レベルのアクセスに NSURLConnection を使用できます。

  3. 抽象化のレベルを下げると、Cocoa の NSStream を使用してネットワーク プロトコルを実装できます。クラスのドキュメントはこちらで、HTTP および SOAP プロトコルを示すコード例へのリンクがあります。

  4. さらにレベルを下げて、CFNetwork クラスを使用できます。NSStream は CFNetwork に基づいていますが、CFNetwork を使用して回線をより低レベルで制御できます。

最後に、クライアント サーバー アーキテクチャ向けの Apple テクノロジは、WebObjectsフレームワークです。

于 2009-01-03T21:51:49.793 に答える
3

Cocoa にはPortable Distributed Objectsがあり、プロセス間またはネットワーク間で通信できる純粋な Objective-C および Cocoa でクライアント/サーバー アプリケーションを構築できます。

残念ながら、これは Cocoa で学ぶのが最も難しいことの 1 つです。分散オブジェクトはバインディングなどの新しいテクノロジーに対応するために更新されておらず、多くの例やドキュメントがありません (チュートリアルの多くは古く、OS X よりも古いものもあります)。また、経験豊富な Cocoa プログラマーであっても、オブジェクトがコピーまたはプロキシ オブジェクトとしてネットワークを介して送信される方法には、多くの「落とし穴」があります。たとえば、サーバーから NSURL を送信できます。これを文字列に変換したり、デバッガーで調べたりすると問題ないように見えますが、NSURLConnection で使用しようとすると、クライアントがクラッシュします。

経験によっては、Web サービスを使用する方が簡単で速い場合もありますが、プロジェクト全体を Cocoa に保持したい場合は、検討する価値があります。例を見たい場合は、こちらのチュートリアルをご覧ください。

于 2009-01-03T20:48:13.543 に答える
1

一般に、他のすべてのクライアント/サーバー フレームワークの考え方が適用されます。

このリンクを見てください: http://developer.apple.com/internet/webservices/webservicescoreandcfnetwork.html

于 2009-01-03T17:39:43.033 に答える
0

Cocoa で使用するサーバーとクライアント クラスを作成しました。これらのクラスを使用すると、ソケットや C に関する知識がなくても、サーバーまたはクライアント アプリケーションを非常に簡単に作成できます

于 2009-05-06T13:25:52.643 に答える
-1

NSConnectionNSDownloadの API を調べて、ネットワーク接続を処理します。NSStringクラスには + stringWithContentsOfURL:encoding:error: のような便利なメソッドもあります

次に、xml データを読み取るためのNSXMLParserNSXMLDocumentがあります。

于 2009-01-03T17:45:45.640 に答える