バックグラウンド
いくつかの操作を提供するRESTfulAPIがあります。このRESTfulAPIは、APIの操作にアクセスするために、プラットフォームで認証および承認される必要があるサードパーティによって使用されます。
サードパーティは信頼性の高いデータ消費を必要とし、APIは一部のデータを消費するためのパブリッシャー/コンシューマーパターンベースのソリューションを提供する必要があります。
いわゆるAPIは車輪の再発明を行わないため、Windows AzureServiceBusを使用しようとしています。
問題
RESTful APIは、実際のサービスバスサービスを抽象化する必要があります。一方、Service Busは、独自のプラットフォームで信頼性の高いメッセージングを提供するソリューションです。
実際、Service Busはスタンドアロンのサービスではありませんが、一部のワークフローの一部です。サードパーティは、WindowsAzureの資格情報を持っているとは想定されていません。
サードパーティは、Service Busのトピック(つまり、メッセージキュー)へのアクセスを許可するAPI固有の資格情報を使用してWindows AzureServiceBusに接続する必要があります。
可能な解決策
a。WindowsAzureサービスバスへの直接アクセスを承認する
それは最も簡単な解決策のようです。フローを見てみましょう:
- サードパーティは、Windows Azure Service Bus接続文字列(資格情報)を取得するために、RESTfulAPIにリクエストを送信します。
- 接続文字列を取得すると、サードパーティはWindows Service Busに接続し、トピックサブスクリプションからのメッセージの受信を開始します。注:接続文字列はサーバー側で暗号化されており、承認されたクライアントのみが復号化できます。
長所
- 簡単。APIは、サードパーティがWindows Azure Service Busを使用することを許可し、その他の責任はありません。
- 独自のAPIは、トピックサブスクライバーの高負荷を管理しません。これは、WindowsAzureプラットフォームによって処理されます。
短所
- サードパーティは、WindowsAzureと非常に密接に関連しています。
- サードパーティは、しばらくの間、RESTfulAPIを簡単にバイパスできます。
b。WindowsAzureサービスバスへのプロキシアクセス
これは可能ですか?全体のフローは次のようになります。
- サードパーティは、Windows Azure Service Busトピックにサブスクライブするために、RESTfulAPIと同様のTCPAPIを要求します。
- TCP APIは接続を確立し、サービスバスI/OへのTCPAPI接続をサードパーティへのTCPAPIにミラーリングするためにプロキシを作成します。
- これで、サードパーティがプロキシに接続され、メッセージを送受信します。
長所
- サードパーティはプロキシを介して接続されています。つまり、サードパーティはWindows Azureクレデンシャルを所有しておらず、TCPまたはRESTfulAPIをバイパスできない可能性があります。
- メッセージングは、もはやWindowsAzureに完全に結び付けられているわけではありません。
短所
- Windows Azure Service Busが接続を閉じるとどうなりますか?
- プラットフォームプロキシがダウンした場合はどうなりますか?
c。Windows AzureServiceBusサーバーラッパー
これが定義とフローです。
- RESTful APIサーバーには、Windows AzureServiceBusサブスクリプション接続のプールがあります。
- サードパーティは、APIサーバーのTCPソケットまたはWebSocketにサブスクライブされています。
- Windows Azure Service Busにメッセージがある場合は常に、サードパーティの接続プールにルーティングされ、サードパーティがメッセージを受信します。
- サードパーティは、RESTfulAPIを使用してメッセージを送信します。
長所
- サードパーティは、サービスバステクノロジーに完全に依存していません。
短所
- bと同じ。アプローチ。
質問
bです。アプローチは可能ですか?
cについてのあなたのアドバイスは何ですか。Windows AzureServiceBusサーバーラッパー。回避可能な戦争は、稼働時間とWindows Azure Service BusからAPI、およびAPIからサードパーティへの同期の点で信頼性が低いと思いますか?
私は間違っていますか?これらのアプローチに代わるものがありますか?