サーバー側 - C# または Java
クライアント側の目的 C
C#\java でオブジェクトをシリアル化し、Objective C で逆シリアル化する方法が必要です。Objective C を初めて使用するので、この問題に関する情報をどこで入手できるか疑問に思っていました。
ありがとう。
サーバー側 - C# または Java
クライアント側の目的 C
C#\java でオブジェクトをシリアル化し、Objective C で逆シリアル化する方法が必要です。Objective C を初めて使用するので、この問題に関する情報をどこで入手できるか疑問に思っていました。
ありがとう。
明らかな JSON/XML ソリューションとは別に、protobufも興味深いかもしれません。そのための Java//c++/python バックエンドがあり、サード パーティは C# および Objective-C 用のバックエンドも作成しています (ただし、これは使用されていません)。
主な利点は、解析がはるかに高速であること[1]、バイナリ形式であるため非常に小さいこと[2]、およびバージョン管理が最初から重要な要素であったという事実です。
[1] XML と比較して 20 ~ 100 倍の Google クレーム
[2] 同出典によると3~10回
protobufs に似た別のテクノロジーはApache Thriftです。
Apache Thrift は、スケーラブルな言語間サービス開発のためのソフトウェア フレームワークです。Apache Thrift を使用すると、単純な定義ファイルでデータ型とサービス インターフェイスを定義できます。コンパイラは、そのファイルを入力として受け取り、プログラミング言語間でシームレスに通信する RPC クライアントとサーバーを簡単に構築するために使用されるコードを生成します。
比較的単純なオブジェクト グラフの場合は JSON より複雑なオブジェクト グラフの場合は XML/REST (配列/コレクション/ネストされた配列の区別など)
スズチ。私はそれを使用しています。i-os アプリから Web サービスを呼び出すのは非常に簡単です。
オブジェクトをシリアライズするコードを書く必要はありません。
次の理由から、 JSONがおそらく最良の選択です。
多くの場合、ある言語/プラットフォームには別の言語/プラットフォームからの概念を表現する効果的な方法がないため、より複雑なオブジェクトのシリアル化は移植性の観点からは良い考えではありません。たとえば、シリアル化されたオブジェクトの「タイプ」または「クラス」を宣言し始めるとすぐに、言語間でオブジェクト モデルが異なるという厄介な問題に直面します。
iOS には、Objective-C API を備えた JSON フレームワークとライブラリがいくつかあります。
おそらく最も顕著なものです。
JSONKitは高速でシンプルですが、JSON テキストの連続した部分しか解析できません。つまり、ダウンロードしたデータを一時ファイルに保存するか、ダウンロードしたすべての JSON テキストを NSMutableData オブジェクト (メモリに保持) に保存する必要があります。JSON テキストが完全にダウンロードされた後にのみ、解析を開始できます。
SBJsonはより柔軟に使用できます。追加の「SAX スタイル」インターフェースを提供し、部分的な入力を解析でき、「入力」ごとに複数の JSON ドキュメント (たとえば、ネットワーク接続ごとに複数の JSON ドキュメント) を解析できます。これは、接続ごとに多数の JSON ドキュメントを受信できる「ストリーミング API」 (Twitter ストリーミング API など) に接続する場合に非常に便利です。欠点は、JSONKit よりもはるかに遅いことです。
TouchJsonは SBJson よりもさらに遅くなります。
ただし、私の個人的な好みは別のものです。JSONKit よりも高速で (アームで 20% 高速)、SAX スタイルの API が追加され、「ストリーミング API」を処理でき、ダウンロードと解析を同時に実行でき、メモリ フットプリントに深刻な影響を与えることなく非常に大きな JSON 文字列を処理できます。特に NSURLConnection を使用すると簡単に使用できます。(まあ、私は著者なので偏見があるかもしれません)。
JPJson (Apache License v2)を見ることができます:
JPJson - ただし、まだベータ版です。