Contenu connexe Similaire à C++ REST SDKを使ってWebサービスを利用する (20) C++ REST SDKを使ってWebサービスを利用する5. はじめに(1/7)
• RESTとは
– Representational State Transferの略称。
– 2000年にカリフォルニア大学 Irvine校のRoy
Fielding氏が提唱した、分散システムにおいて
複数のソフトウェアを連携させるのに適した
設計原則の集合。また狭義には、それをWeb
に適用したソフトウェアの設計様式のこと。
一般には後者の意味で用いられることがほと
んどである。
IT用語辞典 e-Wordsより
http://e-words.jp/w/REST.html
わんくま同盟 名古屋勉強会 #29
6. はじめに(2/7)
• RESTの設計原則
1. セッションなどの状態管理を行わない
• HTTP自体にはセッション管理の機構はない
2. 情報を操作する命令の体系が予め定義・共有さ
れている
• HTTPのGETやPOSTなどに相当
3. すべての情報は汎用的な構文で一意に識別され
る
• URLやURIに相当
4. 情報の内部に、別の情報や(その情報の別の)状
態へのリンクを含めることができる
• HTMLやXMLに相当
わんくま同盟 名古屋勉強会 #29
8. はじめに(4/7)
• C++言語とHTTP規格 (1/4)
– ここまで説明してきたRESTは、Webアプリ
ケーション/サービスの為の設計様式でした。
– RESTの基盤となるのはHTTP規格。大雑把に
説明すると、TCP/IPをプロトコルとしてWeb
サーバーとWebブラウザのクライアント/サー
バー方式による要求・応答のハンドシェイク
を行う仕組みです。
わんくま同盟 名古屋勉強会 #29
9. はじめに(5/7)
• C++言語とHTTP規格 (2/4)
– C++でRESTfulなプログラムを書こうと思っ
た場合、 C#やJava, Ruby, Pythonといった最
近よく使われる開発言語とは異なり、C++だ
けではHTTPを扱えないとう問題があります。
– まずC++言語の規格には、HTTPはもとよりそ
の基盤となるTCP/IPを行う為のsocket通信
APIについても含まれていません。
わんくま同盟 名古屋勉強会 #29
10. はじめに(6/7)
• C++言語とHTTP規格 (3/4)
– C++でTCP/IPを話せるようにするには、プ
ラットフォーム毎に提供されているソケット
通信APIを使ってHTTP通信処理を実装する必
要があります。
• Linux, FreeBSD環境
– BSD Socket API
• Windows環境
– WinSock API, WinHTTP API, WinINet API
• Mac OS X環境
– Cocoa API, Core Foundation API
わんくま同盟 名古屋勉強会 #29
11. はじめに(7/7)
• C++言語とHTTP規格 (4/4)
– API毎に実装方法が異なるのと、毎度毎度
HTTPを一部又はフルスタックで実装して車輪
の再発明するのは、不具合も起こりやすく無
駄な事なので、通常は共通ライブラリを使う
事になります。
• Boost. Asio - socket通信実装
– http://www.boost.org/doc/libs/release/doc/html/boos
t_asio.html
• cpp-netlib - HTTP実装
– http://cpp-netlib.org/
わんくま同盟 名古屋勉強会 #29
13. C++ REST SDKについて(1/7)
• C++ REST SDK
– 公式サイト
– http://casablanca.codeplex.com
– http://msdn.microsoft.com/library/jj969455.
aspx
• ネイティブなC++からRESTサービスにア
クセスする事が出来るライブラリ。
• 公式サイトから提供されるインストーラー
を使って導入する。(Windows向け)
わんくま同盟 名古屋勉強会 #29
14. C++ REST SDKについて(2/7)
• C++ REST SDKは、コードネーム
Casablancaとして2012年4月にMicrosoft
によって開発が始められたC++ライブラリ。
– http://blogs.msdn.com/b/vcblog/archive/20
12/04/30/10299181.aspx
• 2013年2月末にOSS(Apache ライセンス
Version 2.0)として公開されました。
– http://blogs.msdn.com/b/vcblog/archive/20
13/02/26/the-c-rest-sdk-quot-casablancaquot.aspx
わんくま同盟 名古屋勉強会 #29
15. C++ REST SDKについて(3/7)
• C++ REST SDKで提供されるもの(1/2)
1. HTTP, JSON, URIのC++実装による
Windows Vista, 7, 8環境でのRESTサービス
への接続。
2. WindowsストアアプリでのC++によるHTTP
クライアント側コード記述を補助する
VisualStudio向けSDK。
3. VisualStudioでの統合環境を含めたAzure向
けのネイティブなRESTの記述を補助する。
わんくま同盟 名古屋勉強会 #29
16. C++ REST SDKについて(4/7)
• C++ REST SDKで提供されるもの(2/2)
4. PaaS機能の入り口として、Azure
blob/queue ストレージに接続する使いやす
いライブラリ。
5. C++11を基盤とした非同期操作を構成する
パワフル且つ統一されたモデル。
• Parallel Patterns Library を利用
6. Erlangにインスパイアされたアクターモデル
プログラミングのC++実装。
• Asynchronous Agents Library は未使用
わんくま同盟 名古屋勉強会 #29
17. C++ REST SDKについて(5/7)
• C++ REST SDKの機能
1. HTTPクライアントを通じてサーバーに接続、
リクエスト送信、レスポンス処理。
2. URIの構築・使用
3. JSONの構築・解析・シリアライズ
4. ストリームやストリームバッファを媒介とし
た、非同期のバイトデータ処理。
5. プラットフォーム非依存の文字列
6. タスクによるプログラミング
※XMLパーサーなどは含まれない
わんくま同盟 名古屋勉強会 #29
18. C++ REST SDKについて(6/7)
• C++ REST SDKの実行環境
–
–
–
–
Microsoft Windows Vista以降
Microsoft Windows 8ストアアプリ
Linux
実験的サポート
• Microsoft Windows XP
• Microsoft Windows Phone 8
わんくま同盟 名古屋勉強会 #29
19. C++ REST SDKについて(7/7)
• C++ REST SDKの開発環境
– Microsoft VisualStudio 2010 SP1以降
• VS2010 SP1以降が必要な理由は、C++ REST SDK
がPPL(Parallel Patterns Library)を使っている為。
– Microsoft VisualStudio 2012
– Microsoft VisualStudio 2013
– Linux環境の場合はBoost C++ Libraryも必要。
C++11の型推論のautoが使える環境は必須。
わんくま同盟 名古屋勉強会 #29
21. 3. デモ(1/2)
• MSDNマガジン August 2013で紹介されて
いるC++ REST SDKの記事では、OAuth
を使ったサンプルコードになっています。
– C++ の開発者に RESTful サービスを
– http://msdn.microsoft.com/jajp/magazine/dn342869.aspx
• このサンプルは自前でOAuth処理を実装し
ているもので、ちょっと複雑です。今回は
もっと単純にURIにアクセスして結果を取
得するものでデモしたいと思います。
わんくま同盟 名古屋勉強会 #29
24. 4. まとめ(1/2)
• 今回C++ REST SDKを使ってみてちょっ
とビックリしたのが、PPL(Parallel
Patterns Library)やActor-Based
Programming Modelの部分でした。
• 但しこれらは.NET Framework 4.5からサ
ポートされたAsync/Awaitによる非同期プ
ログラミングと似た考え方なので、文法や
動作などを理解できれば、コードはスッキ
リしていると分かりました。
わんくま同盟 名古屋勉強会 #29
25. 4. まとめ(2/2)
• 逆を言えば、PPL(Parallel Patterns
Library)を使った実装サンプルとして、こ
のC++ REST SDKはとても参考になると
言えます。
• C++使わずに素直に他の言語で実装した
ら良いのでは?という突っ込みはさておき、
C++でも簡単にHTTP通信が行えるように
なるこのライブラリは便利ですね。
わんくま同盟 名古屋勉強会 #29