Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
WEBWEB
EnvironmentsEnvironments
nasa9084nasa9084
自己紹介自己紹介
名前
北村壮大 : Masahiro Kitamura
HN : nasa9084
所属
北海道大学
工学部
情報エレクトロニクス学科
コンピュータサイエンスコース
情報認識学研究室
ServerServer
何らかのサービスを提供するソフトウェア何らかのサービスを提供するソフトウェア
Web Server
Application Server
Mail Server
Database Server
FTP Server
Proxy Server
今...
Web ServerWeb Server
クライアントからのHTTPリクエストに対してHTTPレスポンスでリソースを返す
→HTTP Server
図にすると図にすると
代表的なHTTP Server代表的なHTTP Server
Application ServerApplication Server
アプリケーションを呼び出して仕事をしてくれる
HTTPの復習HTTPの復習
クライアントがリクエストメッセージをサーバに送る
サーバがレスポンスメッセージをクライアントに返す
メッセージメッセージ
ヘッダとボディで構成される
テキスト
CGICGI
Common Gateway Interface
Web Serverでプログラムを動かす仕組み
動作動作
リクエストを受け取る1.
CGIプログラムを起動する2.
CGIプログラムが結果を返す3.
クライアントにレスポンスを返す4.
標準入出力標準入出力
HTTPリクエストのボディは標準入力へ
標準出力は そのまま クライアントに送られる
環境変数(environment variable)環境変数(environment variable)
OS上のタスクがデータを共有するための変数
QUERY_STRING
クライアントが要求したURIのうち、検索文字列部
CONTENT_L...
WSGIWSGI
Web Server Gateway Interface
Python WebアプリケーションとWeb Serverを接続するための標準仕様
今は昔今は昔
Python Webアプリケーションの実装方法Python Webアプリケーションの実装方法
CGI
FastCGI
mod_python
統一したい!
WSGIの誕生WSGIの誕生
動作動作
リクエストを受け取る1.
アプリケーションのエントリポイントをcallする2.
アプリケーションの返り値を使ってレスポンスを作る3.
callcall
WSGIアプリケーションはcallableオブジェクトを持つ
→コレを呼び出す
callableオブジェクトcallableオブジェクト
callable == 呼び出し可能
hoge()のような形
関数
__call__が定義されたクラス
アプリケーション引数アプリケーション引数
環境変数(env)1.
start_responseオブジェクト2.
start_responseオブジェクトstart_responseオブジェクト
ステータスコードやHTTPレスポンスヘッダを入れる
→コレをもとにサーバがレスポンスをつくる
ボディボディ
iterableオブジェクトの形で返す
iterableiterable
iterable == 反復可能
list
tuple
dict
RackRack
Ruby用の仕様Ruby用の仕様
Rubyの人が思ったRubyの人が思った
"WSGIいいな。。。""WSGIいいな。。。"
Rackの誕生Rackの誕生
動作動作
リクエストを受け取る1.
アプリケーションのエントリポイントをcallする2.
アプリケーションの返り値でレスポンスを作る3.
アプリケーション引数アプリケーション引数
環境変数(env)
アプリケーションの返り値アプリケーションの返り値
ステータスコード(status)
HTTPヘッダ(headers)
ボディ(body)
→3つまとめて配列にして返す
PSGIPSGI
Perl Web Server Gateway Interface
Perl用Perl用
Perlの人が思ったPerlの人が思った
"WSGIとかRackとかいいな。。。""WSGIとかRackとかいいな。。。"
PSGIの誕生PSGIの誕生
動作動作
大体Rackと同じ大体Rackと同じ
Web三層構成Web三層構成
THANK YOUTHANK YOU
Web Environments
Web Environments
Upcoming SlideShare
Loading in …5
×

Web Environments

102 views

Published on

http://digiporo.connpass.com/event/32206/
2016/06/26

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Web Environments

  1. 1. WEBWEB EnvironmentsEnvironments nasa9084nasa9084
  2. 2. 自己紹介自己紹介 名前 北村壮大 : Masahiro Kitamura HN : nasa9084 所属 北海道大学 工学部 情報エレクトロニクス学科 コンピュータサイエンスコース 情報認識学研究室
  3. 3. ServerServer
  4. 4. 何らかのサービスを提供するソフトウェア何らかのサービスを提供するソフトウェア Web Server Application Server Mail Server Database Server FTP Server Proxy Server 今回はHTTP ServerとApplication Serverが登場
  5. 5. Web ServerWeb Server クライアントからのHTTPリクエストに対してHTTPレスポンスでリソースを返す →HTTP Server
  6. 6. 図にすると図にすると
  7. 7. 代表的なHTTP Server代表的なHTTP Server
  8. 8. Application ServerApplication Server アプリケーションを呼び出して仕事をしてくれる
  9. 9. HTTPの復習HTTPの復習 クライアントがリクエストメッセージをサーバに送る サーバがレスポンスメッセージをクライアントに返す
  10. 10. メッセージメッセージ ヘッダとボディで構成される テキスト
  11. 11. CGICGI Common Gateway Interface Web Serverでプログラムを動かす仕組み
  12. 12. 動作動作 リクエストを受け取る1. CGIプログラムを起動する2. CGIプログラムが結果を返す3. クライアントにレスポンスを返す4.
  13. 13. 標準入出力標準入出力 HTTPリクエストのボディは標準入力へ 標準出力は そのまま クライアントに送られる
  14. 14. 環境変数(environment variable)環境変数(environment variable) OS上のタスクがデータを共有するための変数 QUERY_STRING クライアントが要求したURIのうち、検索文字列部 CONTENT_LENGTH クライアントからのHTTPリクエストのボディ部の長さ PATH_INFO CGIプログラムに対応する仮想パスの後ろに続いた余分のパス PATH_TRANSLATED PATH_INFOを物理パスに対応させたもの
  15. 15. WSGIWSGI Web Server Gateway Interface Python WebアプリケーションとWeb Serverを接続するための標準仕様
  16. 16. 今は昔今は昔
  17. 17. Python Webアプリケーションの実装方法Python Webアプリケーションの実装方法 CGI FastCGI mod_python 統一したい!
  18. 18. WSGIの誕生WSGIの誕生
  19. 19. 動作動作 リクエストを受け取る1. アプリケーションのエントリポイントをcallする2. アプリケーションの返り値を使ってレスポンスを作る3.
  20. 20. callcall WSGIアプリケーションはcallableオブジェクトを持つ →コレを呼び出す
  21. 21. callableオブジェクトcallableオブジェクト callable == 呼び出し可能 hoge()のような形 関数 __call__が定義されたクラス
  22. 22. アプリケーション引数アプリケーション引数 環境変数(env)1. start_responseオブジェクト2.
  23. 23. start_responseオブジェクトstart_responseオブジェクト ステータスコードやHTTPレスポンスヘッダを入れる →コレをもとにサーバがレスポンスをつくる
  24. 24. ボディボディ iterableオブジェクトの形で返す
  25. 25. iterableiterable iterable == 反復可能 list tuple dict
  26. 26. RackRack
  27. 27. Ruby用の仕様Ruby用の仕様
  28. 28. Rubyの人が思ったRubyの人が思った
  29. 29. "WSGIいいな。。。""WSGIいいな。。。"
  30. 30. Rackの誕生Rackの誕生
  31. 31. 動作動作 リクエストを受け取る1. アプリケーションのエントリポイントをcallする2. アプリケーションの返り値でレスポンスを作る3.
  32. 32. アプリケーション引数アプリケーション引数 環境変数(env)
  33. 33. アプリケーションの返り値アプリケーションの返り値 ステータスコード(status) HTTPヘッダ(headers) ボディ(body) →3つまとめて配列にして返す
  34. 34. PSGIPSGI Perl Web Server Gateway Interface
  35. 35. Perl用Perl用
  36. 36. Perlの人が思ったPerlの人が思った
  37. 37. "WSGIとかRackとかいいな。。。""WSGIとかRackとかいいな。。。"
  38. 38. PSGIの誕生PSGIの誕生
  39. 39. 動作動作
  40. 40. 大体Rackと同じ大体Rackと同じ
  41. 41. Web三層構成Web三層構成
  42. 42. THANK YOUTHANK YOU

×