web-dev-qa-db-ja.com

JSONまたはSOAP(XML)?

会社用の新しいアプリケーションを開発しています。アプリケーションは、iPhoneとの間でデータを交換する必要があります。

会社のサーバー側は.NETフレームワークを使用します。

たとえば、特定のCustomerNumberのクラス「Customer」(名前、住所など)を最初にサーバーからiphoneにダウンロードし、ローカルに保存してからアップロードして変更を適用します(そして、他の人が利用できるようにします)。並行性は問題になりません(少なくとも現時点では...)

いずれにしても、サーバー側(Webサービスなど)とiPhoneアプリの両方を開発する必要があります。

それを行うための最善の方法を自由に特定できます(これはアプリケーションの「ナンバーワン」であり、将来の「標準」になります)。

だから、あなたは私に何を提案しますか?

SOAP Webサービス(XML解析など)またはユーザーJSONを使用しますか?(より軽いようです...)SOAP(xml soapエンベロープをコーディングするのに非常に長い...私は避けます)が、JSONを使用して同じことを行うにはどうすればよいですか?

アプリケーションは日付値(例:last_visit_dateなど)を使用する必要があります。Jsonの日付はどうですか?

48
Fulkron

JSONにはXMLよりもいくつかの利点があります。はるかに小さく、肥大化が少ないので、ネットワークを介して渡すデータがはるかに少なくなります。モバイルデバイスの場合、大きな違いが生じます。

また、解析、抽出、および変換を行わずにデータパケットを直接JavaScript配列に渡すことができるため、JavaScriptコードでの使用も簡単になり、CPUの負荷も大幅に軽減されます。

XMLライブラリの代わりにこれを使用してコーディングするには、JSONライブラリが必要になります。日付はXMLの場合と同様に処理されます。日付を標準にエンコードし、ライブラリに認識させます。 (例 ここにライブラリがあります 日付が含まれるサンプル)

ここに入門書

41
gbjbaanb

ああ、大きな質問:JSON or XML

一般的に、XMLはテキストのラッピングとマークアップに優れているため、大量のテキストを渡す必要がある場合にのみXMLを好みます。

文字列のみが小さい(id、dateなど)小さいデータオブジェクトを渡す場合、JSONを使用する傾向があります。

また、XMLを選択しても、それは決してSOAPを使用する必要があるという意味ではないことに注意してください。 SOAPは、パートナー間の相互運用性のために設計された非常に重いプロトコルです。ここでクライアントとサーバーの両方を制御する場合、必ずしも意味をなさない。

33
Avi

IPhoneで結果をどのように使用するかを検討してください。 Webサービスの応答を読み取るために、どのようなメカニズムを使用しますか? NSXMLParser?

データの消費方法は、データの提供方法に最大の影響を及ぼします。

JSONとSOAPが唯一のオプションですか?RESTfulサービスはどうですか?

IPhoneクライアントがアクセスできるパブリックAPIを備えたWeb上の大企業を見てみましょう。

Twitter APIFriendFeed API

また、次の関連記事も確認してください。

9
JBRWilkinson

JSONには次の利点があります。

  1. ブール値と数値をエンコードできます... XMLではすべてが文字列です
  2. それははるかに明確なセマンティクスを持っています... jsonでは{"key":"someValue"}、XMLでは<data><key>someValue</key></data>または<data key="someValue" /> ... XMLノードは名前を持っている必要があります...これは常に意味がありません...そして、子はオブジェクトのプロパティを表す場合があります。 XMLメッセージのオブジェクト構造を本当に理解するには、対応するスキーマが必要です... JSONでは、JSONのみが必要です...
  3. より小さいため、解析/生成時に使用する帯域幅とメモリが少なくなります...

それとは別に、XMLとJSONの違いはありません...つまり、これは非常に互換性があります... JSONを使用してSOAPのセマンティクスをキャプチャすることができます...必要な場合は... SOAPは肥大化しています... SOAPを使用したい場合は、そのためにライブラリとジェネレーターを使用してください...それをすべて手作業で構築するのは楽しくも面白くもありません...

xML RPCまたはJSON RPCを使用すると、より速く動作するはずです...それはより軽量で、JSONまたはXMLを自由に使用します...しかし、クライアント<->サーバーアプリを作成するとき、私の目に非常に重要なことは、抽象化することです両側のトランスポート層...ビジネスロジック全体などは、通信に関しては小さなインターフェイス以上に依存するべきではなく、必要に応じてアプリにプロトコルをプラグインできます...

9
back2dos

単にSOAP対JSONよりも多くのオプションがあります。 XMLを使用して、RESTベースのプロトコル( Representational State Transfer )を実行できます。 SOAPよりも簡単に使用でき、設計したXSDの方がはるかに優れていると思います。ほとんどのクライアントがこのようなサービスにアクセスするのはかなり簡単です。

一方、JSONパーサーはほぼすべての言語で利用可能であり、AJAXを介して使用する場合、JavaScriptから簡単に呼び出すことができます。

ただし、SOAPは、エンタープライズ機能をサポートする多数の標準化された拡張機能により、かなり強力になります。

4
Norman

IPhone側でHessianKitを使用し、サーバー側でHessianC#を使用してHessianを使用することもできます。

大きなボーナスは次のとおりです。 2.どちらの側でもフォーマットについて心配する必要はありません。転送はプロキシで自動化されます。

したがって、サーバー側では、次のようなC#インターフェイスを定義するだけです。

public interface IFruitService {
  int FruitCount();
  string GetFruit(int index);
}

次に、CHessianHandlerをサブクラス化してIFruitServiceを実装するだけで、Webサービスが完了します。

IPhoneでは、対応するObjective-Cプロトコルを記述するだけです。

@protocol IFruitService
-(int)FruitCount;
-(NSString*)GetFruit:(int)index;
@end

その後、1行のコードでプロキシからアクセスできます。

id<IFruitService> fruitService = [CWHessianConnection proxyWithURL:serviceURL 
                                                          protocol:@protocol(IFruitService)];

リンク:

HessianKit: hessiankit

4
PeyloW

他の人がすでに指摘しているように、私は確かにJSONを使用します。それはより高速で、データサイズが小さくなります。 JSONModelのようなデータモデリングフレームワークを使用して、JSON構造を検証し、JSONオブジェクトをObj-Cオブジェクトに自動変換することもできます。

JSONModelには、ネットワーキングとAPIの操作のためのクラスも含まれています-json rpcメソッドも含まれています。

次のリンクをご覧ください。

JSONModelの短い使用例: http://www.touch-code-magazine.com/how-to-make-a-youtube-app-using-mgbox-and-jsonmodel/

これらが役に立つことを願って

1
Marin Todorov