FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

サーバ/ブラウザ間通信方式

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アプリケーションに向く。
対応ブラウザがChromeOperaなどまだまだ少ない。

データ形式

データ形式 概要 メリット デメリット
JSON JSONは、構造化されたデータを記述するための、テキスト・ベースのデータ記述言語の一つ。JavaScriptECMAScript)でオブジェクト・リテラルを記述する構文をそのまま使っているため、人間が読んでわかりやすく、プログラムでも容易に処理できるという特徴がある。 XMLより軽量。
・記述が容易で人間が理解しやすいデータフォーマット。
JavaScriptJSONをパースして読み込むには、eval関数を作用させるだけでよい。
・複雑なデータ構造に向かない。
XML 統一的な記法を用いながら独自の意味や構造を持ったマークアップ言語を作成することができるため、ソフトウェア間の通信・情報交換に用いるデータ形式や、様々な種類のデータを保存するためのファイルフォーマットなどの定義に使われている。 ・細かい設定を指定できる。
・必要なデータを検索しやすい。
・空白の処理で悩む!
・テキストをまとめる/区切る方法がタグ以外にない(簡潔な囲み記号/区切り記号がない)。
・タグ/属性の名前を考えるのが苦痛となるときがある。
手書きする場合、タイピング量が多く、間違いやすい。
プログラミング言語とは、構文のテイストが異なり違和感がある。