クラウド上での リアルタイム・非同期・双方向通信アプリケーション開発基礎

Slides:



Advertisements
Similar presentations
Wiki と Web サービス API. Wiki と Web サービス API ( 1 )  Web サービス API の流行 Blog が投稿用の Web サービス API を提供 Amazon 、 Google 、 Yahoo などが各種情報 取得のための Web サービス API を提供.
Advertisements

WINDOWS AZURE上での ACTIVE DIRECTORY構築入門 Windows Azure ハンズオン トレーニング.
マイクロソフトがホスティングする拡張性に優れたサービス ベース アプリケーション プラットフォーム.
Oracle Application Express アーキテクチャ. © 2009 Oracle Corporation アーキテクチャ概要 データベース 9iR2 、 10g 、 11g 、 XE 内に統合 メタデータ駆動型 APEX リスナー、組込みゲートウェイ、または ModPLSQL を使用.
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
Windows Azure ハンズオン トレーニング Windows Azure Web サイト入門.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
Curlの特徴.
ストリーミング配信 惑星物理学研究室 修士2年 土屋 貴志.
ASP入門 - Windows 2000 Server 活用 -.
IIS 4.0で開発をするコツ Webアプリケーション構築.
インターネット ショップを開設するための要件
Windows HPC Server を使ってみる
ZKプラグインで、Grailsの Viewをリッチに楽しく
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
JPAを利用した RESTful Webサービスの開発
Novell Linuxブリッジ・キャンペーン 期間:2004年11月25日~2005年1月末日迄
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
Docker.
Ad / Press Release Plan (Draft)
Windows Azure 仮想マシン 入門.
Hot Pepper for iPod touch
Microsoft Office Project 2007
アプレット (Applet)について.
SoftLayerへのお引越し方法 お客様環境(或いは他社クラウド)からSoftLayerへの移行は簡単です。
PaaSの起源とxaaSの今後.
双方の機能、サービス、デバイスに応じたシステム開発が必要
Visual Studio LightSwitchの概要
はじめてのASP.NET 楽しいアプリ制作の会 #1 TWorks.
Windows Azure で作る ボットアプリ?
Live Framework 入門 その2 JZ5(松江) 2009/8/22.
サーバ構成と運用 ここから私林がサーバ構成と運用について話します.
2013/06/22 つくばC#勉強会 Officeで始めるC# 2013/06/22 つくばC#勉強会
視聴回数や端末毎の視聴状況など優れたログ分析機能
RMI ソフトウェア特論 第6回 /
Windows Phone 7.5 の データ アクセスとクラウド連携
Windows Azure 仮想ネットワーク
11/9/2018 3:35 AM Windows Azure Platform ハンズオン トレーニング Windows Azure アプリケーション開発概要 ~ Windows Azure 入門編 ~ © 2007 Microsoft Corporation. All rights reserved.
初めてのTSF 囚人.
Windows Azure で作る ボットアプリ?
SharePointによるSQL BI 2012年8月4日.
Windows Azure (CTP) 触ってみた
WebサービスII (第7回) 2007年11月7日 植田龍男.
Emoneαプログラミング入門 初音 玲.
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
インターネットにおける真に プライベートなネットワークの構築
仕事: SystemVerilogを使いたい
すぐできるBOOK -基本設定編-.
ツールと Python で戯れる Azure データサービス 【第一弾】 ~準備編~
OSSAJ 事務局 株式会社ウィズ.アール 古木 良子
Web - 01 IIS を インストールしよう.
~ 第5回 認証のためのプロキシー Web Application Proxy
初めてのTSF 囚人.
SaaS/PaaSの起源とこれから 株式会社アプライド・マーケティング 大越 章司
Windows Azure (CTP) 触ってみた
W3CがHTML5を勧告として公開 ( ).
Firebaseを用いた 位置情報共有システム
ネットワークをシンプルにする エンタープライズ NFV
PaaSの起源.
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
コースのタイトル 教師の名前 | コース メンバー.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
フィンテック企業が Linux で SQL Server の パフォーマンスと スケーラビリティを取得
異種セグメント端末による 分散型仮想LAN構築機構の設計と実装
Windows Azureの 料金体系 日本マイクロソフト株式会社.
Microsoft Office Project Server 2007
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
P2P & JXTA Memo For Beginners
HTTPプロトコルの詳細 M1 峯 肇史.
Presentation transcript:

クラウド上での リアルタイム・非同期・双方向通信アプリケーション開発基礎

アジェンダ Windows Azure 概要 SignalR ハンズオン ラボについて 情報リソース

Windows Azure 概要

(ACS & Active Directory) Windows Azure 概要 Windows Azure のサービス群 仮想マシン (Virtual Machines) クラウド サービス (Cloud Services) Web サイト (Web Sites) SQL データベース (SQL Database) ストレージ (Storage) コンテンツ配信 (CDN) メディア配信 (Media) アクセス制御&AD (ACS & Active Directory) サービス バス (Service Bus) キャッシュ (Caching) 仮想ネットワーク (Virtual Network) トラフィック管理 (Traffic Manager)

Windows Azure 概要 Windows Azure のデータセンター データセンター CDN

Windows Azure 概要 コンピューティングの 3 つの選択肢 オンプレミス アプリケーション アプリケーション アプリケーション 仮想マシン クラウド サービス Web サイト アプリケーション アプリケーション アプリケーション アプリケーション データ データ データ データ ファイアウォール ファイアウォール ファイアウォール ネットワーク 仮想ネットワーク 仮想ネットワーク OS OS 仮想化 ハードウェア オンプレミス

SignalR

SignalR SignalR とは? リアルタイムかつ双方向の通信を簡単に実現 NuGet (パッケージマネージャ)を通じて提供 考え方はリモートプロシージャコール サーバからクライアントへのプッシュが可能 NuGet (パッケージマネージャ)を通じて提供

SignalR SignalR を利用するシナリオ サーバからのプッシュを利用する リアルタイム、双方向通信を利用する ステータスの変化を即座に通知 (Ex. Windows Azure 管理ポータル, Facebook) リアルタイム、双方向通信を利用する メッセージの送受信 (Ex. チャット、サービス内 API)

SignalR SignalR のアーキテクチャ クライアント SignalR サーバ サーバのレスポンス サーバへのリクエスト (ブロードキャスト) サーバへのリクエスト (メソッド呼び出し)

SignalR サーバサイドの仕組み ASP.NET 上に構築されている API エンドポイント “Hub” Web Forms, MVC, Web Pages などと共存可能 API エンドポイント “Hub” クライアントから呼び出し可能なメソッドの集合 http://***.cloudapp.net/signalr SomeMethod_1 SomeMethod_2 Hub_1 SomeMethod_1 Hub_2

SignalR サーバサイドの実装 Hub の実装例 クライアントに公開する名前 クライアントから呼び出し可能なメソッド [HubName("chat")] public class ChatHub : Hub { public void SendMessage(string text) Clients.ReceiveMessage(text); } クライアントから呼び出し可能なメソッド

SignalR サーバから利用できる情報 Hub クラスに実装されているプロパティ Context Groups Clients 現在のリクエスト情報を保持 Groups グループを管理するクラス Clients SignalR で管理している全てのクライアントを表す Caller リクエストを行ったクライアントを表す

SignalR サーバ-クライアント間接続の仕組み SignalR がクライアントを管理 クライアントごとに一意なコネクションIDを発行 ネゴシエーション ConnectionId = CAB9F88C-0372-4237-A150-1A870583BCDA コネクションID発行

クライアントとサーバのメソッド名 が対応している SignalR クライアントからサーバ サーバに用意されたメソッドを呼び出す クライアントは戻り値を取ることが出来る サーバの メソッド呼び出し chat.invoke("SendMessage", text); public void SendMessage(string text) { } クライアントとサーバのメソッド名 が対応している

クライアントとサーバのメソッド名 が対応している SignalR サーバからクライアント クライアントに登録されたメソッドを呼び出す サーバは戻り値を取ることが出来ない クライアントの メソッド呼び出し chat.on("ReceiveMessage", function(text) { }); Clients.ReceiveMessage(text); クライアントとサーバのメソッド名 が対応している

SignalR 接続のグルーピング クライアントをグループ化して管理 グループごとの 操作が可能 グループA グループB

SignalR 接続のグルーピング グループに接続を追加する実装 [HubName("chat")] public class ChatHub : Hub { public void JoinGroup(string groupName) Groups.Add(Context.ConnectionId, groupName); } public void LeaveGroup(string groupName) Groups.Remove(Context.ConnectionId, groupName); グループに追加 グループから削除

SignalR グループへのメソッド呼び出し グループへのメソッド呼び出し [HubName("chat")] public class ChatHub : Hub { public void SendMessage(string groupName, string text) Clients[groupName].ReceiveMessage(text); } グループに対してメソッド呼び出し

SignalR クライアントサイドの実装 各種クライアントライブラリを提供 SignalR と同様に NuGet を通じて提供 JavaScript (SignalR と同時にインストール) .NET Framework 4.5 / Windows Store アプリ Silverlight 4 / 5 SignalR と同様に NuGet を通じて提供

SignalR クライアントサイドのライブラリ JavaScript コールバック、jQuery.Deferred を使う var connection = $.hubConnection(); var chat = connection.createProxy("chat"); chat.on("ReceiveMessage", function(message) { alert(message); }); connection.start(function() { chat.invoke("SendMessage", "text message");

SignalR クライアントサイドのライブラリ .NET Framework 4.5 / Windows Store アプリ async / await 記法を使う var connection = new HubConnection("http://localhost:12345/"); var chat = connection.CreateProxy("chat"); chat.On<string>("ReceiveMessage", message => MessageBox.Show(message)); await connection.Start(); chat.Invoke("SendMessage", "text message");

SignalR クライアントサイドのライブラリ Silverlight 4 / 5 Task ベースの API をそのまま使う var connection = new HubConnection("http://localhost:12345/"); var chat = connection.CreateProxy("chat"); chat.On<string>("ReceiveMessage", message => MessageBox.Show(message)); connection.Start().ContinueWith(p => { chat.Invoke("SendMessage", "text message"); });

WebSocket, SSE, Frame, Long-polling SignalR SignalR で使われている技術 複数のトランスポート(接続)をサポート WebSocket (IIS 8 と .NET 4.5 の組み合わせ) Server-Sent Events (SSE) Infinity Frame Long-polling トランスポート WebSocket, SSE, Frame, Long-polling

> > > SignalR トランスポートとブラウザの関係 自動的にトランスポートを切り替える WebSocket : Server-Sent Events : Infinity Frame : Long-polling : 古いブラウザ > > >

SignalR スケールアウトの問題点 永続的なコネクションをインスタンス毎に作成 単純に数を増やすだけでは対応できない インスタンス0 インスタンス1

SignalR スケールアウト インスタンス間で接続を共有する必要がある メッセージングを利用する 接続情報の共有 インスタンス0 インスタンス1

SignalR メッセージングを使ってスケールアウト Pub/Sub 型のメッセージングを利用 プラグインとして NuGet 経由で提供 Windows Azure サービスバス Redis (Windows Azure Virtual Machine) プラグインとして NuGet 経由で提供 SignalR.WindowsAzureServiceBus SignalR.Redis

SignalR Pub/Sub 型のメッセージング Windows Azure サービスバス メッセージの流れ トピック1 サブスクライバー (インスタンス1) トピック2 パブリッシャー (インスタンス0) サブスクライバー (インスタンス2) トピック3

SignalR 実際のスケールアウト例 Windows Azure サービスバス Redis インスタンス0 インスタンス1 接続情報の共有

SignalR Windows Azure と Redis の比較 メッセージ数課金 スケールアウト 時間課金 スケールアウト \0.88/10000 メッセージ スケールアウト トピック数を増やす 時間課金 Sインスタンス \7.00/h スケールアウト サーバを増やす 非常に容易 Redis 自体の知識が要求される

SignalR まとめ SignalR を利用するメリット 開発者は機能の実装に 集中できる シンプルなクライアント・サーバ API 非同期・マルチスレッドで動作 最新・最適な通信方式を自動選択 スケールアウトが非常に容易 クライアント・グループ管理が用意済み 開発者は機能の実装に 集中できる

ハンズオン ラボについて

ハンズオン ラボの演習内容 演習1:簡単なSignalRアプリケーションの開発 演習2:チャットアプリケーションの開発 Windows Azure Web Sites へのデプロイまで 演習2:チャットアプリケーションの開発 より実践的なアプリケーションの開発 演習3:(おまけ)Windows Azureへ配置し、 スケールアウトを行う 複数インスタンス上での動作を確認

情報リソース

情報リソース Windows Azure 関連 Windows Azure 管理ポータルサイト Windows Azure 情報サイト http://manage.windowsazure.com/ Windows Azure 情報サイト http://www.windowsazure.com/ Windows Azure SDK ドキュメント http://msdn.microsoft.com/ja-jp/library/dd163896.aspx Windows Azure Team Blog (英語) http://blogs.msdn.com/b/windowsazure/ Windows Azure 開発ツール ダウンロード http://www.windowsazure.com/ja-jp/develop/downloads/ Windows Azure 管理ツール ダウンロード http://www.windowsazure.com/ja-jp/manage/downloads/ Windows Azure Platform Training Kit (英語) http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78

情報リソース SignalR 関連 SignalR 公式サイト (英語) SignalR – GitHub プロジェクトサイト (英語) http://signalr.net/ SignalR – GitHub プロジェクトサイト (英語) http://github.com/SignalR SignalR – Wiki ページ (英語) http://github.com/SignalR/SignalR/wiki SignalR – Twitter (英語) http://twitter.com/SignalR SignalR – NuGet Gallery http://nuget.org/packages/SignalR