SlideShare a Scribd company logo
1 of 36
Download to read offline
Using the Right Networking
API for Your UWP App
サーバでの利用 シナリオ要件
バックグラウンド
実行
移植性性能考慮点 コード容易性
ユーザ認証付HTTPS
クラウドとの双方向通信
ソケット経由のデバイス間通信
コンテンツ送受信のバックグラウンド実行
Windows.Web.Http System.Net.Http
対応プログラミング言語 すべてのUWP言語 C#/VB
プライベートCA/オレオレ証明書 ○ ○
サーバー証明書の独自検証 ○ (新機能) × (将来予定)
認証画面が組み込まれているか ○ ×
クライアント証明書対応 ○ 一部対応
Xamarin対応 × ○
var filter = new
HttpBaseProtocolFilter();
filter.ClientCertificate =
myCertificate;
var client = new HttpClient(filter);
HttpResponseMessage response =
await client.GetAsync(uri);
Demo: Online Auction App
要件:
1. サーバー証明書の独自検証
2. クライアント証明書
使用API:
Windows.Web.Http.HttpClient
http://aka.ms/httpclientblogpost
HttpClient WebSockets
メッセージパターン Request-response Bidirectional
同時通信 半二重 全二重
レイテンシー/オーバーヘッド 高 低
プロキシー/ファイアウォール対応 ○ ○
サーバー証明書の独自検証 ○ (新機能!) ○ (新機能!)
RESTful実装 クラスに組込済 コード実装必要
キャッシュとデータ圧縮の実装 クラスに組込済 コード実装必要
MessageWebSocket StreamWebSocket
メッセージフォーマット 不連続な
WebSocketメッセージ
連続データストリーム
UTF 8 / JSONデータ ○ ×
バイナリ―データ ○ ○
推奨データサイズ 小 (bytes/KB) 大 (MB)
推奨データ形式 Strings, JSON形式 Audio, Video, Photos
var socket= new MessageWebSocket();
socket.MessageReceived =
myReceivingHandler;
socket.Closed = myClosedHandler;
await socket.ConnectAsync(serverUri);
// Send data.
socket.Close(code, reason);
Demo: Online Auction App
要件:
1. 真の双方向通信
2. クライアントから入札を他のクライアントにサーバーで中継
3. レイテンシーやオーバーヘッドを最小に
使用API:
Windows.Networking.Sockets.MessageWebSocket
Wireshark trace for WebSocket run
Wireshark trace for HttpClient run
Bytes on the
wire
Windows.Networking.Sockets System.Net.Sockets WinSock
使用言語 C++/CX ○ × ○
JavaScript ○ × ×
C#/VB ○ ○ ×
バックグラウンド
実行
○ × ×
SocketActivityTrigger
socketTaskBuilder.TaskEntryPoint =
"SocketActivityBackgroundTask.SocketActivity
Task";
var trigger = new SocketActivityTrigger();
socketTaskBuilder.SetTrigger(trigger);
var task = socketTaskBuilder.Register();
socket.EnableTransferOwnership(task.TaskId,
SocketActivityConnectedStandbyAction.Wake);
await socket.ConnectAsync(target, port);
備考:
• ソケットの所有権をもつ唯一のコンポーネントであること
• サービスが使用するソケット所有者のリストを表示:
SocketActivityInformation.AllSockets
• ソケットがリストにないのは、すでにソケットが閉じられているこ
とを意味します。
socket.TransferOwnership(socketId);
Demo: Multi-player Game
要件:
1. ソケット経由のアプリケーション間通信
2. アプリが実行していない場合でも、ソケット経由で要求を
受け取れる
使用API:
Windows.Networking.Sockets
HttpClient
(バックグラウンドタスク)
Windows.Networking.
BackgroundTransfer
プロトコル HTTP HTTP/FTP
データ格納場所 メモリ及びファイル ファイルのみ
推奨データサイズ 小 (KB) 大 (MB)
耐障害性
(ネットワーク切断/リブート)
コード実装必要 中断したところから
再開可能
通信料削減 コード実装必要 クラスに組込済
消費電力削減 コード実装必要 クラスに組込済
BackgroundDownloader downloader = new
BackgroundDownloader();
DownloadOperation download =
downloader.CreateDownload(new
Uri(downloadlocation), file);
Task<DownloadOperation> startTask =
download.StartAsync().AsTask();
downloads = await
BackgroundDownloader.GetCurrentDownloadsAsync
();
await
download.AttachAsync().AsTask(cts.Token,
progressCallback);
Task<DownloadOperation> startTask =
download.StartAsync().AsTask();
Task continueTask =
startTask.ContinueWith(OnDownloadCompleted);
BackgroundTransferCompletionGroup completionGroup
= new BackgroundTransferCompletionGroup();
//Create background task builder
builder.SetTrigger(completionGroup.Trigger);
BackgroundDownloader downloader = new
BackgroundDownloader(completionGroup);
Demo: Multi-player Game
要件:
1. バックグラウンドで新しゲームレベルをダウンロード
2. ダウンロードが完了したらトースト通知
使用API:
Windows.Networking.BackgroundTransfer
http://aka.ms/NetworkApiChoice
https://github.com/Microsoft/Windows-universal-samples/
• HttpClient
• WebSockets
• SocketActivityStreamSocket
• BackgroundTransfer
http://aka.ms/WinDevUserVoice
UWPアプリにおける正しいnetworking APIの使い方

More Related Content

Similar to UWPアプリにおける正しいnetworking APIの使い方

今後のビジネス モデルに対応する Azure プラットフォーム技術の活用
今後のビジネス モデルに対応する Azure プラットフォーム技術の活用今後のビジネス モデルに対応する Azure プラットフォーム技術の活用
今後のビジネス モデルに対応する Azure プラットフォーム技術の活用
Kazuyuki Nomura
 
Windows Phone で Active Directory 認証 2011.12.1版
Windows Phone で Active Directory 認証 2011.12.1版Windows Phone で Active Directory 認証 2011.12.1版
Windows Phone で Active Directory 認証 2011.12.1版
junichi anno
 
SmartBBSとデスクトップアプリ
SmartBBSとデスクトップアプリSmartBBSとデスクトップアプリ
SmartBBSとデスクトップアプリ
kstmshinshu
 
Aws summits2014 エンタープライズ向けawscdpネットワーク編
Aws summits2014 エンタープライズ向けawscdpネットワーク編Aws summits2014 エンタープライズ向けawscdpネットワーク編
Aws summits2014 エンタープライズ向けawscdpネットワーク編
Boss4434
 

Similar to UWPアプリにおける正しいnetworking APIの使い方 (20)

Mobile Web
Mobile WebMobile Web
Mobile Web
 
amiPro - Open source Passkeys server
amiPro - Open source Passkeys serveramiPro - Open source Passkeys server
amiPro - Open source Passkeys server
 
今後のビジネス モデルに対応する Azure プラットフォーム技術の活用
今後のビジネス モデルに対応する Azure プラットフォーム技術の活用今後のビジネス モデルに対応する Azure プラットフォーム技術の活用
今後のビジネス モデルに対応する Azure プラットフォーム技術の活用
 
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
 
Windows Phone で Active Directory 認証 2011.12.1版
Windows Phone で Active Directory 認証 2011.12.1版Windows Phone で Active Directory 認証 2011.12.1版
Windows Phone で Active Directory 認証 2011.12.1版
 
Cloud で Active Directory を活用するには
Cloud で Active Directory を活用するにはCloud で Active Directory を活用するには
Cloud で Active Directory を活用するには
 
DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~
DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~
DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~
 
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
 
Kong meetup tokyo 2018.10.26 ブリスコラ
Kong meetup tokyo 2018.10.26 ブリスコラKong meetup tokyo 2018.10.26 ブリスコラ
Kong meetup tokyo 2018.10.26 ブリスコラ
 
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure ADAzure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
 
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
 
Scale Your Business without Servers
Scale Your Business without ServersScale Your Business without Servers
Scale Your Business without Servers
 
Build ハイライト アップデート
Build ハイライト アップデートBuild ハイライト アップデート
Build ハイライト アップデート
 
Hands on ARM template
Hands on ARM templateHands on ARM template
Hands on ARM template
 
[SC14] IoT のセキュリティアーキテクチャと実装モデル
[SC14] IoT のセキュリティアーキテクチャと実装モデル[SC14] IoT のセキュリティアーキテクチャと実装モデル
[SC14] IoT のセキュリティアーキテクチャと実装モデル
 
SmartBBSとデスクトップアプリ
SmartBBSとデスクトップアプリSmartBBSとデスクトップアプリ
SmartBBSとデスクトップアプリ
 
リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~
リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~ リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~
リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~
 
Aws summits2014 エンタープライズ向けawscdpネットワーク編
Aws summits2014 エンタープライズ向けawscdpネットワーク編Aws summits2014 エンタープライズ向けawscdpネットワーク編
Aws summits2014 エンタープライズ向けawscdpネットワーク編
 
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
 
AWS Black Belt Techシリーズ Amazon VPC
AWS Black Belt Techシリーズ Amazon VPCAWS Black Belt Techシリーズ Amazon VPC
AWS Black Belt Techシリーズ Amazon VPC
 

Recently uploaded

The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
 

Recently uploaded (7)

The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 

UWPアプリにおける正しいnetworking APIの使い方