RESTは複数のアーキテクチャスタイルを組み合わせて構築した複合アーキテクチャスタイル。
本記事ではRESTを構成するアーキテクチャスタイルについて記述しています。
統一インターフェース
統一インターフェースとは、URIで指し示したリソースに対する操作を、統一した限定的なインターフェースで行うアーキテクチャスタイルのこと。
例えば、HTTP1.1ではGETやPOSTなど8個のメソッドだけが定義されており、通常これ以上はメソッドは増えない。メソッドが8個に限定されていて拡張できないのは、一般的なプログラミング言語の感覚から考えると厳しい制約にも感じる。
利点
- インターフェースの柔軟性に制限を加えることで全体のアーキテクチャがシンプルに
- クライアントとサーバの実装の独立性が向上する
現在のWebが多様なクライアントやサーバの実装で構成されているのは、統一インターフェースが一役買っている。統一インターフェースはRESTを最も特徴付けるアーキテクチャスタイル。
階層化システム
統一インターフェースの利点の一つに、システム全体が階層化しやすいことが挙げられる。例えばWebサービスでは、サーバとクライアントの間にロードバランサを設置して負荷分散をしたり、プロキシを設置してアクセスを制限したりします。クライアントからするとサーバもプロキシも同じインターフェースで接続できるので、接続先からプロキシに変わったことを意識する必要がない。
これは、サーバやプロキシなどの各コンポーネント間のインターフェースをHTTPで統一しているから実現ができる。
このようにシステムをいくつかの階層に分離するアーキテクチャスタイルのことを階層化システムと呼ぶ。
コードオンデマンド
コードオンデマンドは、プログラムコードをサーバからダウンロードし、クライアント側でそれを実行するアーキテクチャスタイル。
利点
- クライアントを後から拡張できること
クライアントプログラムにあらかじめ用意した機能ではなく、新しい機能を追加していける。JavaScriptなどをふんだんに使った派手なWebサービスはコードオンデマンドの恩恵を受けている。
欠点
- ネットワーク通信におけるプロトコルの可視性が低下すること
HTTPというアプリケーションプロトコルに従って通信している間は、通信の意味やアクセスするリソースが明白。一方、コードオンデマンドでプログラムをダウンロードし、クライアント側で実行してしまうと、アプリケーションプロトコルの可視性が低下する。
参考文献
技術評論者「Webを支える技術」