Comments
Description
Transcript
プレゼン資料(PDF)
REST アーキテクチャ スタイル なんで必要? 牛丼だと 牛めし @明治時代 某Y、フラン チャイズ開始 @1973 • 華原朋美 つゆだく発言 • 華原朋美 つゆだく発言 • 吉野家コピペ 国民的人気食へ 欠点&拡張案 • チーズ牛丼 • 牛丼バーガー • チーズ牛丼 • 牛丼バーガー • 牛丼PC • チーズ牛丼 牛丼って ナニ・・? 牛丼を示す 何かが必要 牛丼 アーキテクチャ スタイル アーキテクチャ スタイル アーキテクチャ スタイル 制約の集合 HBB Structure Head Body Bowl 制約はメリット とデメリットを もたらす メリット • 早い(簡単) • 安い • 旨い(誰でも調理可能) デメリット • スタイルの固定 牛丼バーガー 拡張 X 牛丼バーガー 拡張 制約が牛丼らし さを生み出す アーキテクチャスタイル • 制約の集合 アーキテクチャスタイル • 変更の俯瞰・ • 実装を定める 検討 で、web 1990/11/12 WorldWideWeb: ハイパーテキスト プロジェクトの提案 by TBL 1990/12/25 1 1995/08 1 1 18,957 1997/04 18,957 18,957 1,000,000 2000/09 1,000,000 1,000,000 20,000,000 利用者の変化 CERN 研究者 CERN 個人・企業・ビジネス 研究者 CERN 運用の変化 1req/page 1req/page *req/page 問題指摘 改善提案 製品 ∩___∩ | ノ ヽ / > < | | //// ( _●_) ミ 彡、 l͡l ノ / __ \ \ヽ . (___) \__) . O| / | /\ \ | / ) ) ∪ ( \ \,,_) ∩___∩ | ノ ヽ / > < | | //// ( _●_) ミ 彡、 l͡l ノ / __ \ \ヽ . (___) \__) . O| / | /\ \ | / ) ) ∪ ( \ \,,_) 評価が必要 アーキテクチャ スタイルの導入 REST 問題点の把握 改善提案の評価 by REST 開発者も web にマッチし た開発を促す より使いやすい、 支持される アプリケーション RESTを知ろう RESTの考え方 スタイル for what 一発芸人 芸人 ジャンプ ストーリー シナリオ スタイル REST for what 分散ハイパーメ ディアシステム ハイパーメディア REST Representational State Transfer Representational State Transfer Representational State Transfer State-Machine(状態マシン) Representational State Transfer 渋谷ランチ State-Machine(状態マシン) Representational State Transfer フォルナーチェ 渋谷ランチ State-Machine(状態マシン) Representational State Transfer フォルナーチェ 渋谷ランチ 今日のリゾット State-Machine(状態マシン) Representational State Transfer フォルナーチェ 渋谷ランチ State Transition (状態変遷) 今日のリゾット State-Machine(状態マシン) RESTの中身 アーキテクチャ スタイル 制約の集合 REST の制約を知る REST を知る REST の制約 REST の制約 • クライアント・サーバ REST の制約 • クライアント・サーバ • ステートレス REST の制約 • クライアント・サーバ • ステートレス • キャッシュ REST の制約 • クライアント・サーバ • ステートレス • キャッシュ • 統一インタフェース REST の制約 • クライアント・サーバ • ステートレス • キャッシュ • 統一インタフェース • 階層化システム REST の制約 • クライアント・サーバ • ステートレス • キャッシュ • 統一インタフェース • 階層化システム • コードオンデマンド 1. Client-Server クライアント・サーバ CS: Client-Server CS: Client-Server Server Client 関心を分離する (インタフェース <-> ストレージ) 2.Stateless CSS: Client-Stateless-Server Server Client CSS: Client-Stateless-Server Server Client リクエストには、 処理に必要な情報の全てを含む 可視性、信頼性、 スケーラビリティ Server Client 可視性、信頼性、 スケーラビリティ /order?注文=チーズバーガー Server Client /order?注文=チーズバーガー& ポテト=はい&ドリンク=珈琲 3.Cache C$SS: Client-Cache-Stateless-Server Server Client C$SS: Client-Cache-Stateless-Server $ Server Client $ キャッシュ可能なら キャッシュする 4.Uniform Interface (統一インタフェース) REST を 特徴づける制約 UC$SS: Uniform-Client-Cache-Stateless-Server $ Client $ $ UC$SS: Uniform-Client-Cache-Stateless-Server $ Client $ $ コンポーネント間の インタフェースを固定する 5. Layered System ULC$SS: Uniform-Layered-Client-CacheStateless-Server $ $ $ $ $ $ $ $ ULC$SS: Uniform-Layered-Client-CacheStateless-Server $ $ $ $ $ $ $ $ コンポーネントは、 階層を越えて知る事ができない 6. Code-OnDemand ULCODC$SS: Uniform-Layered-Code-on-DemandClient-Cache-Stateless-Server $ $ $ $ $ $ $ $ ULCODC$SS: Uniform-Layered-Code-on-DemandClient-Cache-Stateless-Server $ $ $ $ $ $ $ $ クライアントは、実行可能なコードを ダウンロード&実行する機能を持つ 詳しくは • Roy.F論文5章 • RESTとROA ありがとうござい ました