質問

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

私は経験豊富なWeb開発者であり、Pythonが大好きです。しかし、Cocoaは初めてです。私が書くことをいじっているアプリケーションは、大病院の患者管理システムです。システムは、長期間にわたって大量のデータを保存することが期待されますが、単一セッション中に転送されるデータは非常に軽いです(ほとんどがテキスト)。通信は、ローカルネットワーク(有線または無線)で行われると想定されています。もちろん、非常に安全でなければなりません。

私が思いつく最高の方法は、Python REST Webサービスを記述し、Cocoaアプリを介して接続することです。 Pythonを使用してCocoaアプリ自体をコーディングすることもあります。

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

あなたはどう思いますか

実世界の例は大歓迎です。

事前に感謝します。

役に立ちましたか?

解決

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

上記の要件があまりにも制限されている場合、Cocoaの世界ではまだ多くのオプションを利用できます:

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

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

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

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

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

他のヒント

Cocoaにはポータブル分散オブジェクトがあり、クライアント/サーバーアプリケーションを純粋に構築できますプロセス間またはネットワークを介して通信できるObjective-CおよびCocoa。

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

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

一般に、他のすべてのクライアント/サーバーフレームワークのアイデアが適用可能です。

次のリンクをご覧ください: http://developer.apple.com/ internet / webservices / webservicescoreandcfnetwork.html

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

NSConnection および NSDownload にネットワーク接続を処理します。 NSString クラスにもメソッドがあります + stringWithContentsOfURL:encoding:error:便利かもしれません。

そして、 NSXMLParser および NSXMLDocument (xmlの読み取り用)データ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top