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