ASP.NET SignalR
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>OWIN]]
* 目次 [#c8bacd1e]
#contents
*概要 [#ie5a2a4e]
-ASP.NETに[[リアルタイム・ウェブ>WebSocket#d7dbcac1]]機能...
-WebSocketに依存しないので、WebSocketの新規採用の可能性が...
*仕組み [#hba6308a]
**下位トランスポート [#zd1c108f]
下位トランスポートには、
-[[WebSocket>#z777146e]]
-[[WebSocket以外>#u3d3cded]]
がある。
**API [#u240a58d]
SignalRには、[[PersistentConnection>#f06129de]]と[[Hub>#n...
***PersistentConnection [#f06129de]
-サーバとクライアントの間での「持続的な接続」を提供する。
-[[下位トランスポート>#zd1c108f]]の上位に実装されている。
-1つのメッセージを送受信する機能しかない。
-[[クライアントを管理するための機能>#g612a5a3]]も用意され...
***Hub [#n080d9a3]
-SignalRを使ったアプリの開発では主にHubを使う。
-[[PersistentConnection>#f06129de]]の上位に実装されている...
--クライアント/サーバ間のメソッド呼び出しという基本的な...
--[[ASP.NET MVCのアクション・フィルタ>ASP.NET MVCの用語#w...
---これを利用してクライアントの認証が実装されている。
---認証目的以外にも開発者が自由に拡張できる。
--オーバーヘッドが大きい。
---リクエストの解析
---リフレクションを使ったメソッド呼び出し
**Connection ID [#g612a5a3]
***Context [#j9d9f621]
-Contextプロパティ
--HttpContextなどの振る舞いは、[[下位トランスポート>#zd1c...
--例えば、WebSocketが[[下位トランスポート>#zd1c108f]]の場...
-Hub.Contextプロパティ
--HubCallerContextクラスのインスタンスがHub.Contextプロパ...
--
|#|プロパティ|説明|h
||Context.ConnectionIdプロパティ|クライアントのコネクショ...
||Context.Headersプロパティ|HTTPリクエスト・ヘッダーのコ...
||Context.QueryStringプロパティ|クエリ文字列のコレクション|
||Context.Requestプロパティ|今回のリクエスト情報|
||Context.RequestCookiesプロパティ|クッキーのコレクション|
||Context.Userプロパティ|ログイン中のユーザー情報|
***Groupsプロパティ [#lfd90be0]
グループ管理を行う。
|#|メソッド|説明|h
|1|Groups.Addメソッド|全てのクライアント|
|2|Groups.Removeメソッド|自分のみのクライアント|
***Clientsプロパティ [#de4cad54]
-全て、自分、自分以外のクライアントへのメッセージ送信
|#|プロパティのメソッド|説明|h
|1|Clients.Allプロパティのメソッド|全てのクライアント|
|2|Clients.Callerプロパティのメソッド|自分のみのクライア...
|3|Clients.Othersプロパティのメソッド|自分以外の全てのク...
-グループのクライアントへのメッセージ送信
|#|プロパティのメソッド|説明|h
|1|Clients.Group(string groupName)のメソッド|指定したグル...
**HubPipeline [#yf3120b4]
SignalRのバージョン1.0から「HubPipeline」と呼ばれる仕組み...
***概要 [#i588a8a0]
-ASP.NET MVCのアクション・フィルタのようにメソッドが実行...
-実体はIHubPipelineModuleインターフェイスを実装したクラス...
-IHubPipelineModuleインターフェイスを実装したクラスのBefo...
-Application_StartでGlobalHost.HubPipeline.AddModuleを使...
***認証 [#d8bf4400]
-ASP.NET MVCやWeb APIのようにAuthorize属性を付けるだけで...
-Notifyメッセージが送信されるのは認証済みのクライアントだ...
**スケールアウト [#ced4ca9b]
-スケールアウトの際は、メッセージング・サーバを用意する必...
-SignalR 1.1からはスケールアウトに必要な機能が内部的に共...
***Redis [#k5ec9908]
-KVS(Key-Valueストア)
-他のKVSに無いPub/Sub型のメッセージング・システムを持っ...
***Windows Azureサービス・バス [#w6954c88]
-サーバを用意する必要がないので簡単に開始できる。
-メッセージ量が増えるとスケールしなくなる。
***SQL Server [#g19a531c]
-「クエリ通知」という機構を利用している。
-AzureのSQLデータベースでは実行できない。
*開発 [#w81b50fa]
**サーバ [#w1ab30e7]
***処理順 [#u181436b]
-テンプレートを選択
-NuGetを使ってSignalRをインストール
-Global.asax.csファイルのApplication_Startで設定
--Hubクラスのルーティングを設定する。
--必要に応じて[[スケールアウト>#ced4ca9b]]に関する設定を...
GlobalHost.DependencyResolver.XXXX(config);
--必要に応じて[[HubPipeline]]を追加する設定する。
GlobalHost.HubPipeline.AddModule(new XXXXHubPipeline())
-通例的にHubsディレクトリを作成
-Hubクラスを作成(なるべくHubName属性を付与)
-Hubクラスのメソッドに、Clientsのプロパティを使用してレス...
***サーバ・ライブラリ [#z9f689c7]
-基本
--NuGet Gallery | Microsoft.AspNet.SignalR.Redis~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR/
-[[スケールアウト>#ced4ca9b]]
--NuGet Gallery | Microsoft.AspNet.SignalR.Redis~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR.R...
Install-Package Microsoft.AspNet.SignalR.Redis
---BookSleeveというRedisクライアント・ライブラリを利用
--NuGet Gallery | Microsoft.AspNet.SignalR.ServiceBus~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR.R...
Install-Package Microsoft.AspNet.SignalR.ServiceBus
--NuGet Gallery | Microsoft.AspNet.SignalR.SqlServer~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR.S...
Install-Package Microsoft.AspNet.SignalR.SqlServer
**クライアント [#qebcfbc8]
***処理順 [#v020ad82]
-サーバとの接続オブジェクトを作成
-Hubのプロキシ・オブジェクトを作成
-クライアントのメソッド(コールバック)を登録
-接続を開始
-サーバのメソッドを呼出
***クライアント・ライブラリ [#t45a798d]
-JavaScript~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR.JS/
-.NET用~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR.C...
-, etc.~
SignalR-ObjCなどもある。
*WebSocket [#z777146e]
**[[概要>WebSocket]] [#t43e2e33]
**利用方法 [#j222c864]
-Windows Server 2012から搭載されたIIS 8と.NET Framework 4...
-サーバ並びにブラウザ共にWebSocketをサポートしていた場合...
-WebSocketがサポートされない場合、[[WebSocket以外の選択肢...
**WebSocket以外 [#u3d3cded]
サーバの要件とブラウザ側の対応状況に基づいて、~
[[選択肢>#pd3703cf]]の中から最適な通信手段をSignalRが選択...
***選択肢 [#pd3703cf]
-iframe
-Comet (Ajax Long-polling)
-Server-Sent Events
***参考 [#ic48d18c]
詳しくは、[[コチラ>WebSocket#v5e26cae]]を参照。
*参考 [#cc76e278]
-SignalR | The ASP.NET Site~
https://www.asp.net/signalr
-ASP.NET SignalR~
http://signalr.net
-特集:最新技術を活用したWebアプリとは? - Build Insider~
https://www.buildinsider.net/web/signalrko
-SignalR カテゴリーの記事一覧 - しばやん雑記~
http://blog.shibayan.jp/archive/category/SignalR
-SignalR カテゴリーの記事一覧 - かずきのBlog@hatena~
http://blog.okazuki.jp/archive/category/SignalR
-「SignalR」の検索結果 - Qiita~
https://qiita.com/search?page=2&q=SignalR
-ASP.NET MVC 5 アプリにSignalRの機能を足す方法 - 銀の光と...
http://tech.tanaka733.net/entry/2014/10/06/ASP.NET_MVC_5_...
**Wikipedia [#jc55b567]
-WebSocket~
https://ja.wikipedia.org/wiki/WebSocket
-Microsoft ASP.NET SignalR~
https://ja.wikipedia.org/wiki/Microsoft_ASP.NET_SignalR
**Qiita [#h7b1b350]
-SignalRによる双方向通信~
https://qiita.com/mash0510/items/a36f4d341edc50064d90
-ASP.NET Coreでリアルタイムで接続するWebアプリケーション...
https://qiita.com/s_saito/items/39cfe82b0985a1bd10dc
**@IT [#c40a75d4]
-特集:ASP.NET SignalR入門~
http://www.atmarkit.co.jp/ait/series/1048/
--ASP.NET SignalRを知る~
http://www.atmarkit.co.jp/ait/articles/1303/19/news099.html
--ASP.NET SignalRの高度な機能~
http://www.atmarkit.co.jp/ait/articles/1307/08/news110.html
**Microsoft Docs [#h166fac6]
-SignalR~
https://docs.microsoft.com/ja-jp/aspnet/signalr/
--SignalR の概要~
https://docs.microsoft.com/ja-jp/aspnet/signalr/overview/...
----
Tags: [[:.NET開発]], [[:OWIN]], [[:ASP.NET]], [[:ASP.NET ...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>OWIN]]
* 目次 [#c8bacd1e]
#contents
*概要 [#ie5a2a4e]
-ASP.NETに[[リアルタイム・ウェブ>WebSocket#d7dbcac1]]機能...
-WebSocketに依存しないので、WebSocketの新規採用の可能性が...
*仕組み [#hba6308a]
**下位トランスポート [#zd1c108f]
下位トランスポートには、
-[[WebSocket>#z777146e]]
-[[WebSocket以外>#u3d3cded]]
がある。
**API [#u240a58d]
SignalRには、[[PersistentConnection>#f06129de]]と[[Hub>#n...
***PersistentConnection [#f06129de]
-サーバとクライアントの間での「持続的な接続」を提供する。
-[[下位トランスポート>#zd1c108f]]の上位に実装されている。
-1つのメッセージを送受信する機能しかない。
-[[クライアントを管理するための機能>#g612a5a3]]も用意され...
***Hub [#n080d9a3]
-SignalRを使ったアプリの開発では主にHubを使う。
-[[PersistentConnection>#f06129de]]の上位に実装されている...
--クライアント/サーバ間のメソッド呼び出しという基本的な...
--[[ASP.NET MVCのアクション・フィルタ>ASP.NET MVCの用語#w...
---これを利用してクライアントの認証が実装されている。
---認証目的以外にも開発者が自由に拡張できる。
--オーバーヘッドが大きい。
---リクエストの解析
---リフレクションを使ったメソッド呼び出し
**Connection ID [#g612a5a3]
***Context [#j9d9f621]
-Contextプロパティ
--HttpContextなどの振る舞いは、[[下位トランスポート>#zd1c...
--例えば、WebSocketが[[下位トランスポート>#zd1c108f]]の場...
-Hub.Contextプロパティ
--HubCallerContextクラスのインスタンスがHub.Contextプロパ...
--
|#|プロパティ|説明|h
||Context.ConnectionIdプロパティ|クライアントのコネクショ...
||Context.Headersプロパティ|HTTPリクエスト・ヘッダーのコ...
||Context.QueryStringプロパティ|クエリ文字列のコレクション|
||Context.Requestプロパティ|今回のリクエスト情報|
||Context.RequestCookiesプロパティ|クッキーのコレクション|
||Context.Userプロパティ|ログイン中のユーザー情報|
***Groupsプロパティ [#lfd90be0]
グループ管理を行う。
|#|メソッド|説明|h
|1|Groups.Addメソッド|全てのクライアント|
|2|Groups.Removeメソッド|自分のみのクライアント|
***Clientsプロパティ [#de4cad54]
-全て、自分、自分以外のクライアントへのメッセージ送信
|#|プロパティのメソッド|説明|h
|1|Clients.Allプロパティのメソッド|全てのクライアント|
|2|Clients.Callerプロパティのメソッド|自分のみのクライア...
|3|Clients.Othersプロパティのメソッド|自分以外の全てのク...
-グループのクライアントへのメッセージ送信
|#|プロパティのメソッド|説明|h
|1|Clients.Group(string groupName)のメソッド|指定したグル...
**HubPipeline [#yf3120b4]
SignalRのバージョン1.0から「HubPipeline」と呼ばれる仕組み...
***概要 [#i588a8a0]
-ASP.NET MVCのアクション・フィルタのようにメソッドが実行...
-実体はIHubPipelineModuleインターフェイスを実装したクラス...
-IHubPipelineModuleインターフェイスを実装したクラスのBefo...
-Application_StartでGlobalHost.HubPipeline.AddModuleを使...
***認証 [#d8bf4400]
-ASP.NET MVCやWeb APIのようにAuthorize属性を付けるだけで...
-Notifyメッセージが送信されるのは認証済みのクライアントだ...
**スケールアウト [#ced4ca9b]
-スケールアウトの際は、メッセージング・サーバを用意する必...
-SignalR 1.1からはスケールアウトに必要な機能が内部的に共...
***Redis [#k5ec9908]
-KVS(Key-Valueストア)
-他のKVSに無いPub/Sub型のメッセージング・システムを持っ...
***Windows Azureサービス・バス [#w6954c88]
-サーバを用意する必要がないので簡単に開始できる。
-メッセージ量が増えるとスケールしなくなる。
***SQL Server [#g19a531c]
-「クエリ通知」という機構を利用している。
-AzureのSQLデータベースでは実行できない。
*開発 [#w81b50fa]
**サーバ [#w1ab30e7]
***処理順 [#u181436b]
-テンプレートを選択
-NuGetを使ってSignalRをインストール
-Global.asax.csファイルのApplication_Startで設定
--Hubクラスのルーティングを設定する。
--必要に応じて[[スケールアウト>#ced4ca9b]]に関する設定を...
GlobalHost.DependencyResolver.XXXX(config);
--必要に応じて[[HubPipeline]]を追加する設定する。
GlobalHost.HubPipeline.AddModule(new XXXXHubPipeline())
-通例的にHubsディレクトリを作成
-Hubクラスを作成(なるべくHubName属性を付与)
-Hubクラスのメソッドに、Clientsのプロパティを使用してレス...
***サーバ・ライブラリ [#z9f689c7]
-基本
--NuGet Gallery | Microsoft.AspNet.SignalR.Redis~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR/
-[[スケールアウト>#ced4ca9b]]
--NuGet Gallery | Microsoft.AspNet.SignalR.Redis~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR.R...
Install-Package Microsoft.AspNet.SignalR.Redis
---BookSleeveというRedisクライアント・ライブラリを利用
--NuGet Gallery | Microsoft.AspNet.SignalR.ServiceBus~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR.R...
Install-Package Microsoft.AspNet.SignalR.ServiceBus
--NuGet Gallery | Microsoft.AspNet.SignalR.SqlServer~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR.S...
Install-Package Microsoft.AspNet.SignalR.SqlServer
**クライアント [#qebcfbc8]
***処理順 [#v020ad82]
-サーバとの接続オブジェクトを作成
-Hubのプロキシ・オブジェクトを作成
-クライアントのメソッド(コールバック)を登録
-接続を開始
-サーバのメソッドを呼出
***クライアント・ライブラリ [#t45a798d]
-JavaScript~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR.JS/
-.NET用~
https://www.nuget.org/packages/Microsoft.AspNet.SignalR.C...
-, etc.~
SignalR-ObjCなどもある。
*WebSocket [#z777146e]
**[[概要>WebSocket]] [#t43e2e33]
**利用方法 [#j222c864]
-Windows Server 2012から搭載されたIIS 8と.NET Framework 4...
-サーバ並びにブラウザ共にWebSocketをサポートしていた場合...
-WebSocketがサポートされない場合、[[WebSocket以外の選択肢...
**WebSocket以外 [#u3d3cded]
サーバの要件とブラウザ側の対応状況に基づいて、~
[[選択肢>#pd3703cf]]の中から最適な通信手段をSignalRが選択...
***選択肢 [#pd3703cf]
-iframe
-Comet (Ajax Long-polling)
-Server-Sent Events
***参考 [#ic48d18c]
詳しくは、[[コチラ>WebSocket#v5e26cae]]を参照。
*参考 [#cc76e278]
-SignalR | The ASP.NET Site~
https://www.asp.net/signalr
-ASP.NET SignalR~
http://signalr.net
-特集:最新技術を活用したWebアプリとは? - Build Insider~
https://www.buildinsider.net/web/signalrko
-SignalR カテゴリーの記事一覧 - しばやん雑記~
http://blog.shibayan.jp/archive/category/SignalR
-SignalR カテゴリーの記事一覧 - かずきのBlog@hatena~
http://blog.okazuki.jp/archive/category/SignalR
-「SignalR」の検索結果 - Qiita~
https://qiita.com/search?page=2&q=SignalR
-ASP.NET MVC 5 アプリにSignalRの機能を足す方法 - 銀の光と...
http://tech.tanaka733.net/entry/2014/10/06/ASP.NET_MVC_5_...
**Wikipedia [#jc55b567]
-WebSocket~
https://ja.wikipedia.org/wiki/WebSocket
-Microsoft ASP.NET SignalR~
https://ja.wikipedia.org/wiki/Microsoft_ASP.NET_SignalR
**Qiita [#h7b1b350]
-SignalRによる双方向通信~
https://qiita.com/mash0510/items/a36f4d341edc50064d90
-ASP.NET Coreでリアルタイムで接続するWebアプリケーション...
https://qiita.com/s_saito/items/39cfe82b0985a1bd10dc
**@IT [#c40a75d4]
-特集:ASP.NET SignalR入門~
http://www.atmarkit.co.jp/ait/series/1048/
--ASP.NET SignalRを知る~
http://www.atmarkit.co.jp/ait/articles/1303/19/news099.html
--ASP.NET SignalRの高度な機能~
http://www.atmarkit.co.jp/ait/articles/1307/08/news110.html
**Microsoft Docs [#h166fac6]
-SignalR~
https://docs.microsoft.com/ja-jp/aspnet/signalr/
--SignalR の概要~
https://docs.microsoft.com/ja-jp/aspnet/signalr/overview/...
----
Tags: [[:.NET開発]], [[:OWIN]], [[:ASP.NET]], [[:ASP.NET ...
ページ名: