クールな Windows 8.1 New API #2:Windows.Web.Http.HttpClient

皆様、こんにちは!

Windows 8.1 Preview 製品ガイド (開発者向け)

image5

こちらのガイドに沿って、新しいWindows 8.1 新しいAPIを一つずつご紹介していくシリーズ、今回の#2は、下記のセクションから、#2として、 Windows.Web.Http.HttpClient API についてご紹介します。

--- Windows 8.1 Preview 製品ガイド (開発者向け)  

ネットワークの強化

世界はより接続性が高まり、クラウド内の Web サービスに接続するアプリは例外ではなく、標準的なものになっています。Windows 8.1 Preview では、ネットワーク プラットフォームで さまざまな機能強化が図られており、Windows で優れた接続型アプリを作成するために役立ちます。

Windows.Web.HTTP

Windows 8.1 Preview では、HTTP または REST ベースのサービスを対象とするアプリのために、 新しい HTTP API (英語) が用意されています。この API は、現在の接続型アプリをサポートするために、追加機能と優れたパフォーマンスを提供しています。この HTTP 機能は Windows に緊密に統合されており、API は十分に柔軟であるために基本的な HTTP の開発シナリオ、サイト固有の HTTP のシナリオ、および高度な HTTP のシナリオに対応します。

強化された Web 認証ブローカー

Windows 8.1 Preview とシングル サインオンにより、資格情報は IE から Web 認証ブローカー (英語)、そしてユーザーが操作するその他のサービスへと実質的に共有されます。その結果、資格情報のローミングが大幅に向上し、ユーザーは操作する各サービスについて個別に資格情報を管理する必要なく、1 回サインオンするだけで済みます。

HTTP プリフェッチ

ほぼすべてのアプリがサービスに接続します。Windows 8.1 Preview では、アプリはそのコンテンツを実際に必要になる前に HTTP を通じてプリフェッチできるので、ユーザーが希望時にコンテンツを直ちに利用できます。この API を使うと、バックグラウンド タスクでプリフェッチする必要がある URI リソースの一覧によりコンテンツをダウンロードできます。ユーザーが関連するアプリを起動すると、コストがかかるサーバーへの往復処理なしで、コンテンツが新規に表示されます。

強化されたバックグラウンド ネットワーク

新しいリアルタイム通信 (RTC) 機能により、バックグラウンド ネットワークを使うアプリのユーザー エクスペリエンスが向上します。このサポートにより、PC が低電力状態 (スタンバイ) であっても、ロック画面上で一部のアプリがネットワーク パケットを受信できる Windows デバイス向けの特別な電源状態である コネクト スタンバイ モードが可能になります。 アプリはこの機能を使うことによって、ユーザーの許可を受けて、通常は中断される可能性のあるダウンロードまたはアップロードを続行することを要求できます。また、ユーザーが選択した時間にバックグラウンド タスク、ファイル転送、プッシュ通知、およびリアルタイム通信に対する制御を提供する "静寂時間" 機能を使用できます。

---

HTML/JavaScript の開発者の方にとって、次の最も重要な Windows 8.1 における追加 API は、Windows.Web.Http.HttpClient API (とその関連するクラス)です。 こちらの書籍Second Edition Preview の Chapter 4 でも書かれています(PDFでダウンロード可能)。

一般的には、当該 API は、きわめてシンプルな実装がなされ、かつ簡単に使えるようになっています。ただ他の利用可能な API と若干機能が被るところもあります。たとえば、WinJS.xhr 関数(XMLHttpRequest) がそれに該当しますし、 .NET(C#/XAML) 側では、HttpClient API がこれにあたります。このような意味においては、当該 Web.Http.HttpClient API は、C++ 開発者が使える膨大な HTTP API を保持しています。

しかしながら、若干詳細に触れると、この新しい API は、既存の API 群よりはるかに出来が良く、同時に、他のものを一気に時代遅れにする可能性もあります。たとえば一例をあげると、この新しい API はキャッシュコントロールとクッキーへのアクセスにおいて、既存の API とは異なるのです。.NET の API と比較してみると、この新しい WinRT の API は、WinINet cache 上で作動します。したがって、Internet Explorer や、または、Windows.Networking.BackgroundTransfer.ContentPrefetcher クラスのプリキャッシュ API にあるどんなキャッシュ技術からも、恩恵を得ることができるのです。

当該新 API はまた、フィルター(filters) とよばれるローレベルのフッキングメカニズム を提供します。これは、アプリのロジックのレベルのを超えた、コードのハンドリングを可能にします。サンプルである HttpClient sample は既に利用可能です。この中で、認証503リトライ、等の目的のために、フィルターをどう作るのかを示しており、これによりアプリの残りの部分ではこのような懸念点を無視することができるということになります。

--- HttpClient sample

This sample shows the use of asynchronous GET and POST requests using HttpClient. The sample also shows the use of caching and filters. Example filters are provided to handle retries and metered network connections.

---

これはすなわち、アプリの中ですべての HTTP リクエストをどのように保持するべきかを考える必要がなく、フィルターにそれをやらせることができるわけです。コードの残りの部分はまさにデータを取得するかしないかの処理の部分で、これにより全体の処理の記述は更にシンプルになります。

追加情報として、 build 2013 での Peter Smith のセッションを参考にしてください:

Five Great Reasons to Use the New HttpClient API to Connect to Web Services.

image

 

次回は、#3 として、新しい WinJS control を取り上げる予定です。

それでは、また!

鈴木章太郎