Post on 15-Jan-2016
description
わんくま同盟 東京勉強会 #25
ASP.NET 2.0 によるWeb サービスの構築
2008 年 10 月 18 日こくぶんまさひろ
わんくま同盟 東京勉強会 #25
自己紹介• 三十路の仲間入りをしました• 社会人9年生です• 5年目位まで、ずっとテスターをやってました• 去年まで ASP.NET な某有名システムの開発に 携わっていました• 最近は公官庁系の財務システムのハード更改作業で調べ
ものばかりしています• 好きな言語は Perl, C# です• ここのところ、頑張って VB もやってます• 次は Windows Mobile と WPF をやってみようかなと
か
わんくま同盟 東京勉強会 #25
自己紹介• はてなで blog 書いてます http://d.hatena.ne.jp/masa-k/• Web サイトもあります http://mk-net.jp/• 技術系サイトも構築予定(絶賛停滞中 ^^;; ) http://dmng.jp/
• Twitter もやってます♪ http://twitter.com/masak
わんくま同盟 東京勉強会 #25
Agenda• 自己紹介• Web サービスとは
– Web サービスの仕組み– Web サービスの種類
SOAPRESTRPC など
• ASP.NET 2.0 による実装– SOAP– REST
わんくま同盟 東京勉強会 #25
Web サービスとは
わんくま同盟 東京勉強会 #25
【おさらい】HTTP (HyperText Transfer Protocol)
リクエスト(ex. http://example.jp/foo/buz.html)
ファイル(ex. HTML 文書 , 画像ファイル )
動的な処理(リクエストの情報を処理 etc. )が出来ない!
わんくま同盟 東京勉強会 #25
【おさらい】CGI (Common Gateway Interface)
リクエスト(ex. http://example.jp/foo/buz.cgi?var=hoge)
ファイル(ex. HTML 文書 , 画像ファイル )
perl.exe
var=hoge を処理リクエスト毎にプロセスが起動する。
わんくま同盟 東京勉強会 #25
【おさらい】CGI (Common Gateway Interface)
perl.exe
大量アクセスがあるとリソースが。。。
perl.exeperl.exe
perl.exeperl.exeperl.exe
perl.exeperl.exe
わんくま同盟 東京勉強会 #25
【おさらい】Web アプリケーション (JSP, ASP.NET)
リクエスト(ex. http://example.jp/foo/buz.aspx?var=hoge)
ファイル(ex. HTML 文書 , 画像ファイル )
inetinfo.exe
var=hoge を処理起動するプロセスはひとつ。
わんくま同盟 東京勉強会 #25
【おさらい】 Web アプリケーション (JSP, ASP.NET)
プロセスは一つ。スレッドで管理する。
inetinfo.exe
わんくま同盟 東京勉強会 #25
【ちなみに】FastCGI
本質的には変わっていない……よね。
perl.exeperl.exe
perl.exeperl.exeperl.exe
perl.exeperl.exe
perl.exe
わんくま同盟 東京勉強会 #25
Web サービス
リクエスト(ex. http://example.jp/foo/buz?var=hoge)
XML データ
hoge.exe
var=hoge を処理CGI や Web アプリケーションと同じ。
わんくま同盟 東京勉強会 #25
Web サービスの種類
わんくま同盟 東京勉強会 #25
Web サービスの種類• SOAP• REST• RPC etc..
わんくま同盟 東京勉強会 #25
SOAP
わんくま同盟 東京勉強会 #25
SOAP(Simple Object Access Protocol)
hoge.exe
リクエストを処理
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <getProductDetails xmlns="http://ws.example.jp/soap"> <productId>827635</productId> </getProductDetails> </SOAP-ENV:Body></SOAP-ENV:Envelope>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <getProductDetailsResponse xmlns="http://warehouse.example.com/ws"> <getProductDetailsResult> <productName>Toptimate 3-Piece Set</productName> <productId>827635</productId> <description>3-Piece luggage set. Black Polyester.</description> <price>96.50</price> <inStock>true</inStock> </getProductDetailsResult> </getProductDetailsResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
わんくま同盟 東京勉強会 #25
SOAP
様々な型のデータのやり取りが可能W3C によって仕様が策定、公開されているASP.NET でのサポートが充実している
•利点
通信の双方で XML 型のデータをやり取りするため、通信量が大きい
実装が複雑 (ミドルウェアがないと扱いにくい)
•欠点
わんくま同盟 東京勉強会 #25
REST
わんくま同盟 東京勉強会 #25
REST(REpresentational State Transfer)
リクエスト(ex. http://example.jp/foo/buz?var=hoge)
XML データ
hoge.exe
var=hoge を処理
わんくま同盟 東京勉強会 #25
REST
利用側は URI とパラメータでデータを送るため、通信量が SOAP より少なくて済む
任意のデータ形式を実装できる利用者側の実装が楽
•利点
実装側で任意の形式で返却するため、仕様がバラバラになりやすい(亜種の大量発生)
•欠点
わんくま同盟 東京勉強会 #25
ASP.NET 2.0 による実装
わんくま同盟 東京勉強会 #25
SOAP
わんくま同盟 東京勉強会 #25
SOAP
わんくま同盟 東京勉強会 #25
Demo~ SOAP ~
わんくま同盟 東京勉強会 #25
REST
わんくま同盟 東京勉強会 #25
REST• ASP.NET で RESTful な Web サービスを作成するのは
結構大変• 外部パッケージなどを利用すれば、 URL によるサービ
スの指定等を含めて対応は可能
今回は、外部パッケージは利用せず、 ASP.NET のみで
単純に URI パラメータで値を渡して XML 型で返却する
ところだけを紹介。
わんくま同盟 東京勉強会 #25
Demo~ REST ~
わんくま同盟 東京勉強会 #25
今日のお話(まとめ)• Web サービスは(そんなに)難しくない• SOAP 型サービスなら ASP.NET で簡単に作れる• REST 型サービスも Web アプリケーションとほぼ一緒
Web サービスを使って情報の相互提供を進めよう!