Azure Web PubSubは、アプリケーションにリアルタイム通信を追加する複数の方法を提供します。 柔軟なメッセージングのプリミティブから始めるか、確立されたプロトコルやプログラミングモデルを維持するか、特定のアプリケーションシナリオ向けに設計されたAPIを使うことができます。
適切な選択をすれば、アプリケーションを差別化しない機能を構築・運用するのを避けることができます。 この記事では、各オプションが何を提供し、何があなたの管理下にあり、どの選択肢が最も価値をもたらすかを説明します。
自分が作りたいものを選んでください
| 必要な場合は | まずは... | なぜでしょうか |
|---|---|---|
| ダッシュボード、ゲーム、通知、AIトークンストリーミング、シグナリング、その他のアプリケーションシナリオ向けにカスタムリアルタイム挙動を設計します | Web PubSub(ベースサービス) | アプリケーションプロトコルとビジネスロジックを管理し、Azureが接続とメッセージ配信を管理します。 |
| 既存の Socket.IO アプリケーションをスケールさせるか、Socket.IO APIやエコシステムを利用するか | Socket.IO Azure | 接続インフラやアダプターを操作せずに Socket.IO プログラミングモデル Socket.IO 維持できます。 |
| WebSocketを介してMQTTクライアントを接続したり、MQTTとWeb PubSubクライアント間でメッセージを交換したり | MQTTサポート | MQTTクライアントライブラリを使い、Web PubSubで対応済みのMQTTとネイティブの概念間で翻訳してもらうことができます。 |
| ルーム、会員資格、メッセージの順序管理、履歴を含む1対1またはグループチャットを追加しましょう | ウェブ PubSubチャット | 低レベルのメッセージングプリミティブから設計するのではなく、チャット専用のAPIや管理されたチャット機能が得られます。 |
能力の違いを理解する
基本的なWeb PubSubを柔軟なリアルタイムの基盤と考えてください。 接続、ユーザー、グループ、イベントなどの構成要素を提供します。 その構成要素が応募書類で何を意味するかは自分で決めます。
その他の機能は、より具体的なニーズのために作業を軽減します:
- Socket.IO on Azureは、Socket.IO 開発者がすでに知っているプログラミングモデルを維持しています。
- MQTTサポート は、MQTTのサポートの一部をWeb PubSubに適応させ、MQTTクライアントがリアルタイムメッセージングに参加できるようにします。
- Web PubSubチャット は、部屋、メンバー、メッセージ、履歴に関するより高度なアプリケーションモデルを提供します。
同じAPIに対しては同じ名前ではありません。 最良の選択肢は、アプリケーションがすでに使っている抽象化や、通常は構築しなければならない抽象化に合致するものです。
| 分野 | Web PubSub(ベースサービス) | Socket.IO Azure | MQTT サポート | ウェブ PubSubチャット |
|---|---|---|---|---|
| プライマリ値 | 柔軟なリアルタイムビルディングブロック | セルフホストのスケーリングなしの親しみ Socket.IO 開発 | MQTTクライアント互換性とプロトコル相互運用性 | すぐに使えるチャットモデル |
| プログラミング・サーフェス | Web PubSub SDK、WebSocket サブプロトコル、イベントハンドラ、REST API | Socket.IO クライアントおよびサーバーAPIです | WebSocket上でのサポートMQTTパケットと概念 | チャットクライアントおよびサーバーAPI |
| 主な応用概念 | 接続、ユーザー、グループ、イベント | ソケット、部屋、名前空間、イベント | クライアント、トピック、サブスクリプション、メッセージ | ユーザー、ルーム、メンバー、メッセージ、履歴 |
| Azure handles | 接続ライフサイクル、スケーリング、ルーティング、メッセージファンアウト | 接続ホスティング、スケーリング、アプリサーバー間の調整 | サポートされているMQTTとWeb PubSub概念間の翻訳 | リアルタイム配信、ファンアウト、ルームメンバーシップ、メッセージの順序付け、そして持続性 |
| あなたはデザインを設計します | イベントモデル、ペイロード、認可フロー、ビジネスロジック、そしてあらゆる永続性 | アプリケーションイベントとビジネスロジック | トピック設計、ビジネスロジック、サポートMQTTサブセット外の機能 | チャット経験、アプリケーション識別、認可割り当て、ビジネスロジック |
| 最適 | カスタムまたは混合リアルタイムワークロード | 新規または既存の Socket.IO アプリケーション | MQTTライブラリまたはMQTTとWeb PubSubの混合クライアントを使用するウェブクライアント | チャットが製品機能であるアプリケーション |
Web PubSub(ベースサービス)
柔軟性が目的に限定されたアプリケーションモデルよりも価値がある場合は、ベースのWeb PubSubを選びましょう。 イベントモデルやビジネス行動を管理しつつ、リアルタイムの管理された輸送とルーティングを提供します。
例えば、あなたの申請書は以下の通りです:
- 接続されたすべてのクライアント、グループ、1ユーザー、または1つの接続にアップデートを送信します。
- アプリケーションサーバーやAzure Functionsでクライアントイベントを受け取る。
- 認可されたクライアントがグループに直接メッセージを公開できるようにします。
- アプリケーション固有のワークフローにはカスタムペイロードやイベントを活用しましょう。
この柔軟性は、ライブダッシュボード、マルチプレイヤーの連携、通知、コラボレーション体験、デバイス更新、シグナリング、AIトークンストリーミングなどに役立ちます。 WebSocketサーバーの運用は避けますが、アプリケーションが必要な場合はメッセージの永続性、履歴、チャットメンバーシップなどのドメイン機能を設計します。
Socket.IO Azure
チームがすでに Socket.IO を利用している場合やイベント駆動型APIやエコシステムを希望している場合、Azure Socket.IO を選択してください。
セルフホスト型 Socket.IO アプリケーションでは、チームはアダプタを使って複数の Socket.IO サーバーをステートフルなクライアント接続を維持し、協調しなければなりません。 Socket.IO on Azureは接続インフラとサーバーの調整を管理しています。 この管理により、アプリケーションサーバーはイベント処理やビジネスロジックに集中できます。
重要な価値は継続性です。Socket.IO プログラミングモデルを維持しつつ、既存のアプリケーションを制限的なコード変更だけで移行でき、異なるリアルタイムAPIを中心に再設計する必要はなくなります。
詳細については、Azureの Socket.IO 概要をご覧ください。
MQTT サポート
クライアントがMQTTライブラリを使用しWebSocket経由で接続する場合や、MQTTクライアントがネイティブのWeb PubSubクライアントとメッセージを交換する必要がある場合は、MQTTサポートを選択してください。
Web PubSubは対応するMQTTメッセージを認識し、トピックや購読などのMQTT概念をWeb PubSubの概念にマッピングします。 このマッピングにより、別のプロトコル変換レイヤーを構築し運用する手間を省きます。
Web PubSubにおけるMQTTサポートは軽量な適応であり、完全なMQTTブローカーではありません。 Web PubSubに対応するMQTT機能のみをサポートしています。 ワイルドカード購読、保持メッセージ、共有購読、トピック別名などの機能はサポートされていません。
包括的なMQTTブローカーが必要な場合は、Azure Event GridでのMQTTサポートを検討してください。 サポートされるWeb PubSubシナリオやプロトコルの詳細については、Azure Web PubSubサービス内のMQTTを参照してください。
ウェブ PubSubチャット
チャットが製品機能であり、基盤となるチャットモデルを作るよりもユーザー体験に開発時間を費やしたい場合、Web PubSubチャットを選択してください。
ベースのWeb PubSubを使えばカスタムチャットを作成できますが、チームはメッセージの対象を定義し、部屋、会員、メッセージの順序付け、履歴などの懸念を実装します。 Web PubSubチャットは、目的に合わせて構築されたAPIやSDKを通じてこれらの概念を提供します。
Web PubSubチャットは、Web PubSubのリアルタイムインフラを基盤とした高レベルの機能です。 次の機能を提供します。
- マンツーマンやグループチャット。
- 部屋と会員管理。
- リアルタイムのメッセージを注文しました。
- メッセージの永続性とルーム履歴。
- チャット操作の役割と許可。
あなたは引き続きアプリケーションのアイデンティティ統合、ユーザー体験、ビジネスルールを所有し、サービスは共通のチャットインフラを管理します。
詳しくは「 Web PubSubチャットとは何か?」をご覧ください。
選択を迫ってください
以下の質問を使って決定を絞り込みます:
- Socket.IO APIを保持する必要があるのか、それとも Socket.IO アプリケーションの移行が必要ですか? Azure Socket.IO を選びましょう。
- クライアントはWebSocket上でサポートされているMQTTプロトコルを使って通信する必要がありますか? MQTTサポートを選択してください。
- チャット体験のために、組み込みのルーム、メンバー、メッセージの並び順、メッセージ履歴が必要ですか? Web PubSubチャットを選択してください。
- カスタムイベントモデルや、前のオプションに合わないリアルタイムシナリオが必要ですか? Web PubSub(基本サービス)を選択してください。
より専門的な機能を選ぶことで、Azureはアプリケーションモデルの多くを提供するため開発時間を短縮できます。 ベースサービスを選ぶことで、ニーズが独自にある場合によりコントロールが進められます。 まずはニーズに合った最上位の機能から始め、その柔軟性がアプリケーションに価値をもたらす場合は基本サービスを利用しましょう。