RESTはWebのアーキテクチャスタイルです。 (p.75)
アーキテクチャスタイルは別名「(マクロ)アーキテクチャパターン」とも言い、複数のアーキテクチャに共通する性質、様式、作法あるいは流儀を指す言葉です。(p.75)
・アーキテクチャスタイルの例: MVC (Model-View-Controller), Pipe and Filter, Event System
抽象化レベル | Webでの例 |
---|---|
アーキテクチャスタイル | REST |
アーキテクチャ | ブラウザ、サーバ、プロキシ、HTTP、URI、HTML |
実装 | Apache、Firefox、Internet Exploerer |
リソース: Web上に存在する、名前 (URI) を持ったありとあらゆる情報
アドレス可能性 (Addressability): URIが備える、リソースをかんたんに指し示せる性質のこと
・1つのリソースは複数のURIを持つことができる
リソースの表現 (Resource Representation): サーバとクライアントの間でやりとりするデータ
RESTは以下のアーキテクチャスタイルをクライアント/サーバに追加したものである
・ステートレスサーバ (Stateless Server): クライアントのアプリケーション状態をサーバで管理しない
(※ Cookieを使ったセッション管理はステートフルな例外である)
・キャッシュ (Cache): 一度取得したリソースをクライアント側で鮮度に基づき使い回す
・統一インタフェース (Uniform Interface): リソースに対する操作を、統一した限定的なインタフェースで行う (ex. GETやPOSTなどの操作のこと)
・階層化システム (Layered System): システムをいくつかの階層に分離する (ex. ロードバランサ)
・コードオンデマンド (Code on Demand): プログラムコードをサーバからダウンロードし、クライアント側でそれを実行する。もともとはOptionalなスタイル
REST = ULCODC$SS | |
---|---|
クライアント/サーバ | ユーザインタフェースと処理を分離する |
ステートレスサーバ | サーバ側でアプリケーション状態を持たない |
キャッシュ | クライアントとサーバの通信回数と量を減らす |
統一インタフェース | インタフェースを固定する |
階層化システム | システムを階層に分離する |
コードオンデマンド | プログラムをクライアントにダウンロードして実行する |
たとえばP2P (Peer to Peer) は代表的なREST以外のアーキテクチャスタイルです。 (p.92)
・接続性 (Connectedness): リソースをリンクで接続することで1つのアプリケーションを構成するという考え方
・粗粒度 (Coarse-Grained): インターフェースの粒度が粗いため性能劣化を起こしにくい
(割愛)