kakeyangです。
以前(と言ってもだいぶ前ですが)サーバとブラウザ間で非同期通信する処理を実装する時に、
どういう方法を採用するか検討したことがありましたので、まとめてみました。
※参考サイト:http://www.xmlconsortium.org/wg/web2.0/teigensho/4--REST-SOAP.html
ちなみに、JSONを動的に作る場合、debugはこれを使っていました。
どこの構造が崩れているんじゃ〜!というときに便利です。
http://www.ctrlshift.net/jsonprettyprinter/
通信方式
通信方式 | 概要 | メリット | デメリット |
---|---|---|---|
soap通信 | SOAPによる通信では、XML文書にエンベロープ(封筒)と呼ばれる付帯情報が付いたメッセージを、HTTPなどのプロトコルで交換する。サービスを利用するクライアントと、サービスを提供するサーバの双方がSOAPの生成・解釈エンジンを持つことで、異なる環境間でのオブジェクト呼び出しを可能にしている。 | ・高機能。 ・大量のデータ登録、システム間連携やB2Bなどに向いている。 |
・初期の学習コストが高い。 ・使用するミドルウエアについても学習しなければならない。 ・WS-*を必須とする場合には、SOAPでなければならない(※さまざまなSOAPの機能拡張の総称)。 |
REST | (1)名前を付けられるすべての情報を「リソース」として、それらを指し示すURL(実際には、より包括的なURI=Uniform Resource Identifier)を持たせること、(2)リソースをHTTPの四つの動詞(GET、POST、PUT、DELETE)で操作できるようにすること、 (3)サーバーがステートレス(状態を持たない)であること、などが必要。 概念と実際の情報を結びつけるのがサーバーの役目で、リソースを要求されるとサーバーがその時点でそのリソースに対応する最も適切な「表現(representation)」を返す、という考え。 |
・利用しやすい。 ・確認しやすい。 ・初期の学習コストが低い。 |
・GETを使っているので、入力パラメータが少ない。 |
Web Sockets | Web Sockets APIはブラウザとサーバの双方向通信を規定するもので、Webアプリケーションの開発をより簡単にし、動作をよりシンプルで高速なものにする。 XMLHttpRequestと違いWeb Sockets APIでは通信が双方向になり、リクエストに返信する形ではなくサーバからブラウザへ直接データを送れるようになる。サーバからのデータを受け取ると JavaScriptにおけるイベントとして処理される。 | ・サーバからブラウザへ直接データを送れるようになる。 ・AjaxやCometに比べてコードがシンプル。 ・通信トラフィックを抑えられる。 ・リアルタイム性の高いWebアプリケーションに向く。 |
対応ブラウザがChrome、Operaなどまだまだ少ない。 |
データ形式
データ形式 | 概要 | メリット | デメリット |
---|---|---|---|
JSON | JSONは、構造化されたデータを記述するための、テキスト・ベースのデータ記述言語の一つ。JavaScript(ECMAScript)でオブジェクト・リテラルを記述する構文をそのまま使っているため、人間が読んでわかりやすく、プログラムでも容易に処理できるという特徴がある。 | ・XMLより軽量。 ・記述が容易で人間が理解しやすいデータフォーマット。 ・JavaScriptでJSONをパースして読み込むには、eval関数を作用させるだけでよい。 |
・複雑なデータ構造に向かない。 |
XML | 統一的な記法を用いながら独自の意味や構造を持ったマークアップ言語を作成することができるため、ソフトウェア間の通信・情報交換に用いるデータ形式や、様々な種類のデータを保存するためのファイルフォーマットなどの定義に使われている。 | ・細かい設定を指定できる。 ・必要なデータを検索しやすい。 |
・空白の処理で悩む! ・テキストをまとめる/区切る方法がタグ以外にない(簡潔な囲み記号/区切り記号がない)。 ・タグ/属性の名前を考えるのが苦痛となるときがある。 ・手書きする場合、タイピング量が多く、間違いやすい。 ・プログラミング言語とは、構文のテイストが異なり違和感がある。 |