最近、Microsoftは、Azure Web PubSubのプレビュー版を発表した。これはリアルタイムWebアプリケーションを構築するための新しいサービスである。Azure Web PubSubは、ネイティブおよびサーバレスWebSocketをサポートするフルマネージドサービスである。
WebSocketにより、単一のTCP接続を介した全二重通信チャネルが可能になる。開発者は、Webアプリケーションの実装でWebSocketを活用して、ユーザのブラウザとサーバの間の双方向の対話型通信セッションを開くことができる。これは、Webアプリケーションが高頻度のデータ更新を必要とするシナリオで役立つ。例えば、ゲーム、オークション、および、チャットボット、オンラインカスタマーサポート、リアルタイムショッピングアシスタントなどのライブチャットクロスプラットフォームをサポートするアプリケーションなどである。
製品管理のパートナーディレクターであるBalan Subramanian氏は、プレビューサービスに関するブログ投稿で次のように述べている。
WebSocketは、全二重通信を提供する標準化されたプロトコルです。これは、効率的なリアルタイムWebインタラクションを構築するための鍵であり、すべての主要なブラウザとWebサーバでサポートされています。
現在、Azure Web PubSubプレビュー版は、WebSocket APIを介してネイティブWebSocketとさまざまなプログラミング言語(C#、Python、Javaを含む)をサポートしている。開発者がリアルタイムのクロスプラットフォームアプリケーションを構築し、既存のWebSocketベースのアプリケーションを移行する柔軟性を提供する。さらに、このサービスはjson.webpubsub.azure.v1 subprotocolサブプロトコルも提供する。これにより、クライアントは、サービスとバックエンドサーバコードの間でデータをルーティングすることなく、効果的にパブリッシュ/サブスクライブを実行できる。また、このサービスはAzure Functionsとネイティブに統合されているため、開発者はWebSocketを使ってサーバレスC#、JavaScript、Python、Javaアプリケーションを構築できる。
Subramanian氏は、同じブログ投稿で次のように述べている。
Azure Functionsを使用してIoTデバイスからの位置データを統合・処理できます。そして、Azure Web PubSubサービスを利用して、位置データを複数のライブダッシュボードクライアントにブロードキャストし、顧客に対してリアルタイムの位置情報を視覚化できます。
Azure Web PubSubは、MicrosoftがAzureで提供しているリアルタイムサービスだけではない。Azure SignalRも提供される。これによって、開発者がHTTPを介してアプリケーションにリアルタイムのWeb機能を追加できるようになる。これも類似のシナリオをサポートする。Twitterのスレッドで、SignalRとASP.NET Coreの開発者であるMicrosoftの.NETのパートナーソフトウェアアーキテクトであるDavid Fowler氏が違いを説明している。
SignalRとはどう違うか。内部的には、同じ基盤技術に基づいて構築されていますが、大きな違いは、クライアント要件やプロトコル要件、BYOWL(利用者がWebSocketライブラリを持参)がないことです。
そして、次のようにも言っている。
SignalRとは異なり、Azure Web Pubsubは単なるWebSocketです。ロングポーリングやサーバ送信イベントのフォールバックや、自動再接続はありません。シンプルにあなたとあなたのWebSocketクライアントだけです。最後に、Azure SignalRを使っている場合は、他の場所での使用を制限するものがない限り、引き続き使用してください。そうでない場合、このサービスをあなたが使うメリットはありません。
最後に、Azure Web PubSubサービスの使用に関する詳細とガイダンスは、ドキュメントのランディングページとGithubコードサンプルで入手できる。