2011-10-20 8 views
1

可能な最良のパフォーマンスのWCFサービスホスティングシナリオを決定しようとしています。私は非常に大量のオンプレミスWebアプリケーションを組み立てています(最終的にはAzureでホストされます)。 ASP.Netアプリケーションは、NetTcpBindingを使用してワーカーロールでホストされているWCFサービスと通信します。ワーカーロールWCFパフォーマンス

1)ワーカーロールでサービスをホストし、セキュリティのためにACSを使用するサービスバスを使用してクライアントとサービスを接続すると、ワーカーロールでWCFサービスをホストするよりも時間がかかりますが、エンドポイントに直接接続し、ユーザー名/パスワードの方法を使用します。

2)RESTサービスは、バイナリの代わりにHTTPを使用するため、NetTcpBindingサービスよりも遅くなります。

最初は、セキュリティメカニズムがどれほどきれいであるかが好きなのでServiceBusアプローチを選択しましたが、進行中の接続がDirectになることができない限り、リレーで重大なオーバーヘッドが発生します。

これらの前提に基づいて、 -WCFワーカーロールでホストされているサービス -customユーザー名/パスワードまたはACSユーザー名/パスワードを使用する?????? -NetTcpBinding

これは正しいと思いますか?もう1つの要件は、作成する必要のあるセキュリティ固有のコードを最小限に抑えることです。だから、私はACSのユーザー名/パスワードモデルか????

最高のパフォーマンスを発揮するカスタムコードセキュリティを設定する方法については、どのような見識もあります。

おかげ

答えて

2

まず:ベンチマーク、ベンチマーク、ベンチマーク。 Azureのパフォーマンス特性にはかなり驚きました。特にSQL Azureは、Rackspaceでホストされているシステムより2〜3倍遅かったです。データベースとサーバの間のレイテンシは他のすべてを覆しました。

しかし、理論的には、クライアントとサービスの間でユーザー名/パスワードを使用する方がACSより高速であると推測しています。

しかし、資格情報のチェックは一切行う必要がありますか?プライベート内部エンドポイント(ここではhttp://msdn.microsoft.com/en-us/library/windowsazure/gg432980.aspx)を使用できますか?その場合、資格情報のチェックは必要ありません。

パブリックエンドポイントを公開する必要がある場合は、認証と同様に暗号化も提供できるため、クライアントSSL証明書の使用を真剣に検討します。

RESTとバイナリについては、多くの場合、使用しているアプリケーションの種類によって異なります。 Microsoft RESTスタックでの私の経験は、それが非常に効率的だということです。実際には、接続が確立され、データが流れるまでには、基本的にクライアントとサーバーの間に生のTCP接続があります。しかし、RESTで得られるのは、HTTPセマンティクス、ロードバランサを使用する能力、および一般的な利便性です。

しかし、もう一度:私はいくつかのサンプルアプリケーションを作成し、自分でテストします。 (あなたは結果を公開するあなたのブログエントリーへのリンクを投稿しますか?)

+0

ありがとうございます。内部エンドポイントの問題は、WebアプリケーションがAzure内でホストされるまで使用できないことです。当初はそうではありません。 dbとサーバーの間のレイテンシについてのあなたの知見は興味深いものです。私は自分の発見を絶対に投稿します。投稿ありがとう! –

+0

これは興味深いことです:「Windows Azureは各パブリックエンドポイントに負荷分散を提供し、アプリケーションを必要なだけ多くのインスタンスに拡張することができます。アプリケーションがステートレスであることを保証する必要があります負荷分散されていないエンドポイントだけが内部エンドポイントであるため、Webロールから、複数のワーカーロールインスタンスの1つなど、ロール間の通信の一部を実行している場合は、内部エンドポイントでwcfサービスを使用する場合は、それらのインスタンス間で負荷分散を処理する必要があります。投稿した投稿 –

0

あなたが本当に必要な場合を除き、私はACLを使用しません。あなたのシナリオではないと思います。クライアントを認証するためだけに追加のブローカを追加すると、不要な待ち時間が追加されます。第2に、NetTcpを使用するためのワーカーロールは必要ありません.HTTPエンドポイントでWebロールを設定するだけで済みます。これは、WASとTCPを使用してIISでサービスをホストします。azureのプライベートエンドポイントにWCF Servicesを設定しても、AzureでホストされているWebアプリケーションだけが見ることができるため、認証は必要ありません。

+0

私はあなたがACLよりむしろACSを意味します... –

関連する問題