2016-05-16 16 views
1

私は現在、異なるWeb APIサービスを使用してAzureでSOAベースのアーキテクチャを開発しています(おそらくMicroservicesとして認定されるでしょうが、この用語を使用することを躊躇しています)。Azure Web API - サービス間の通信方法

私はAzureスケジューラによってトリガされるサービスを持っています。いくつかの「もの」を行い、別のWeb API(HttpClient経由)を呼び出す必要があります。これを行うには、2番目のサービスのURIを知る必要があります。ローカルで実行する場合、それは私が(のみアクセスレベルなどの内部を使用して)のAzureにデプロイする

POSTしかしhttp://localhost:1234/2ndService/api/action

、のようなものがあるように、これは、それが難読化されたURIを取得し、などhttp://microsoft-apiapp8cf3d453-39d8-4b3b-ad00-e9d8008a9b58結構です私は明らかに展開時には推測できません。

どのようにこの問題を解決するためのアイデアですか?それとも私はここで根本的な誤りを犯しましたか?

答えて

0

Azure Web Appsの場合、このようなプロパティはWebアプリケーションダッシュボード、プロパティに常に表示されます。 Visual Studioからデプロイするときは、必要に応じてURLを設定することができます。これをチェックするだけで正常に動作します。

1

公開httpエンドポイントに頼るのではなく、queues in Azure Table Services経由でメッセージを渡すことを考えましたか?メッセージの配信を保証するなどの組み込みの機能を利用できるので、操作が非常に簡単で、より堅牢になります。

全体的な考え方は、サービスAがいくつかの「もの」を実行してから、メッセージをキュー1に置くことです。サービスBは、サービスA(またはそのような他のサービス)から新しいメッセージを受け取るまで待ち行列ONEから連続して読み込み、その後「待ち行列」を実行します。このような呼び出しを、通知する必要のある他のサービスに連鎖させ続けることができます。

より洗練されたソリューションをお望みなら、Service Bus Topicsを使用して見ることができますが、そのコンセプトは基本的に同じです。

あなたのアーキテクチャはマイクロサービスによく似ていると述べているので、あなたのシナリオ用に設計された新しいService Fabricをチェックすることができます。

0

あなたはどの技術を使用しているのかはあまり明確ではありません - それはIaaS VMですか?それはWebアプリケーションですか?

私の見解からすると、各サービスは個別のWebアプリケーション(または必要に応じてAPIアプリケーション)として展開する必要があります。各Web Appはyourwebapp.azurewebsites.netのように独自の名前を定義しています。そのため、AzureでWeb App no 1をプロビジョニングしたら、Web App no 2から呼び出すようにアドレスを知っています。

Inすべての場合、ローカル/内部ドメイン名ではなく、完全修飾ドメイン名を持つ必要があります。

+0

APIアプリケーションを使用します。私が持っているように見える問題は、それらがすべて「内部」プライバシー(同じ地域内の他のAPIアプリにのみアクセス可能)であるようにすることです。これは名前を非決定的にしているようです(yourapp.azurewebsites.netではなくhttp:// microsoft-apiapp8cf3d453-39d8-4b3b-ad00-e9d8008a9b58 /) – Jamie

+0

アクセスを制御したい場合は、あなたのAPI(最も望ましい)、またはあなたは[App Service Environments](https://azure.microsoft.com/en-us/documentation/articles/app-service-app-service-environment)内でAPIアプリケーションをデプロイすることができます-intro /)を選択すると、VNET/Subnetレベルのセキュリティを制御できます。 – LeCampusAzure

関連する問題