0

私は現在、API を秘密に保つために、モバイル アプリとサード パーティの Web サービスの間のプロキシとして機能する Azure ホスト Web サービスの開発を検討しています。紺碧のアーキテクチャの経験があまりなく、誰かが何らかのガイダンスを提供できるかどうか疑問に思っていました.

この問題について考えると、私の最初の考えは、azure で asp.net Web API をホストし、電話からのデータをプロキシとして機能する azure API に送信して、Web 要求を受信し、情報を転送することです。別の httpwebrequest を介して Web サービスへの API シークレットを使用し、その応答を元の API 呼び出し応答として返します。

まず、これは機能しますか?次に、このタスクを実行する Web ロールが 1 つある場合、一度に 1 つのリクエストしか処理できず、別の電話からリクエストを送信する前に、サード パーティから 1 つのリクエストが返されるのを待たなければならないのでしょうか? これは、サードパーティへの呼び出しに 1 秒ほどかかる場合、スケーラビリティの点で問題になる可能性があります。

これを行う方法に関する他のアーキテクチャの提案は大歓迎です!

4

2 に答える 2

2

私の知る限り、ASP.NET Web API は Azure でまだサポートされていません (まだ)。Windows Azure は .NET 4 ランタイムのみを実行します。これを回避して Azure で MVC 4 を実行する方法はありますが、まだ公式にはサポートされていません。

確かに、リクエストをインターセプトして中継するプロキシ サービスを使用できます。アーキテクチャは少し複雑に聞こえますが、正当な理由がある場合があります。クライアントからのすべての通信に HTTP (REST) を採用して相互運用性を最大限に高め、待ち時間を短縮しようと思います。

2 番目の質問は、スケール アウトに関するものです。Web ロールのインスタンスを 1 つも実行しないでください。これは、Azure SLA (最低 2 つ) を満たしていないためです。また、インターネットでスケーラブルなアプリを構築する場合は、常に非同期プログラミング/設計に努める必要があります。ステートレス WCF サービスを構築すると、より多くのトラフィックに対応するために水平方向にスケーリングできます。消費者からのグローバルなリーチがある場合は、地理的に位置付けられたサービスのインスタンス全体で Windows Azure Traffic Manager を使用することもできますhttp://msdn.microsoft.com/en-us/gg197529

HTH

于 2012-04-24T11:11:54.290 に答える
1

プロキシ設定が通常の Web サービスとして機能することを意味する場合は「機能」しますが、API を秘密に保つ可能性はあまりないと思います。学習したい人は、簡単に学習できます (ネットワーク トラフィックを確認するだけで済みます)。

2 番目の質問: IIS/Azure で複数のスレッドが実行されています (何も構成する必要はありません)。待ち時間は明らかな理由 (1 つではなく 2 つの要求) でサイトの速度を低下させ、プロキシ リクエスト中の待ち時間は他の場合よりも多くのワーカー スレッドを占有します。ただし、サイトへの大量のトラフィックが予想される場合を除き、これは大きな問題ではありません。

于 2012-04-24T10:48:11.800 に答える