はじめに
「Webを支える技術」を読んで,その内容を自分の知識と織り交ぜながら自分なりにまとめました.
(「Webを支える技術」のリンクは最後の参考文献に記載しています.)
Webとは何か
文書を公開,閲覧するためのシステム.
Web上の文章は,ハイパーテキストという言語で記述されている.
World Wide Webの略.
Webの用途
- Webサイト
- 検索サイト,ブログ,etc
- UI
- デバイスの設定画面,HTMLを用いたファイルの記述
- API
- Web API
Webを支える技術
- HTTP,URI,HTML
- HTTP:Webサーバがクライアントとやりとりする際の通信プロトコル(get,post etc)
- URI:Web上のあらゆる情報を識別するための識別子のようなもの
- HTML:ハイパーテキストを記述するための言語
- ハイパーメディア
- 色々なメディアをハイパーリンク(Webページの参照)で繋げて構成したシステム
- 分散システム
- 複数のコンピュータによって構成されたシステム
- 負荷分散,故障・障害に強い,低コスト
REST
Webのアーキテクチャスタイル.
クライアントサーバ方式にいくつかの制約を追加してできたアーキテクチャスタイル.
リソースについて
RESTにおける重要な概念の一つ.
WEB上に存在する名前をもったありとあらゆる情報.
RESTの構成
RESTは,次の6つを組み合わせたアーキテクチャスタイルのこと.
一部の構成要素を除外しても,RESTと呼んでも問題ない.
次節以降にこの6つの要素について説明する.
- クライアント/サーバ
- ステートレスサーバ
- キャッシュ
- 統一インタフェース
- 階層化システム
- コードオンデマンド
クライアント/サーバ
ネットワークシステムのアーキテクチャ.
HTTPでクライアントとサーバが通信している.
クライアントとサーバにわけて処理を行う.
ステートレスサーバ
クライアント/サーバに最初に追加するアーキテクチャスタイル
サーバ側でアプリケーションの状態を管理しない方式.
→サーバ側での実装を簡略化できる.
逆のステートフルの方式として,Cookieなどが挙げられる.
キャッシュ
一度取得したリソースをクライアントサイドで再利用する方式.
→サーバとクライアント間の通信を減らすことができ,ネットワークの帯域の利用や処理時間の縮小に貢献.効率的な処理が可能に.
統一インタフェース
URIで指し示したリソースに対する操作を統一した限定的なインターフェースで実施すること.
HTTP1.1では,GET,POSTなど8メソッドに限定されている.
→全体のアーキテクチャがシンプルになる
階層化システム
システムをいくつかの階層にわけるアーキテクチャスタイルのこと.
ex)サーバとクライアントの間にロードバランサを入れる場合,クライアントは同じインタフェースから接続できるため,サーバかproxyかを考えなくてよい.
コードオンデマンド
プログラムコードをサーバからダウンロードし、クライアント側でそれを実行するアーキテクチャスタイルのこと.
ex)Jsなど
→メリット:クライアントを後から拡張できる.
→デメリット:ネットワークの可視性が低下する