アプリケーションアーキテクチャは次のとおりです。 1)WCFサービスはファサードレイヤーとして機能し、サービス、ビジネスロジック、データアクセスレイヤーの上に位置します。 2)各クライアントはMVC/ASP .NET、または他のタイプのアプリケーションには、最初に認証され、「アクセストークン」を発行する必要があるClientTagがあります。このトークンは、システムは、Windows Azureの上でホストされるファサード層 3)へのすべてのメッセージで、クライアントによって渡されWCFセッションWindows Azure
はこれがそうのようなWCFのセッションを実装するのは簡単だっただろう: 1)クライアントが呼び出しを開始します 2)WCFがClientTagを認証し、トークンを発行し、それをローカル変数として格納します 3)クライアント(クライアントからWCFセッションが確立され、以降のすべての通信が同じ「会話」の一部です)それ自身のSessionにトークンを格納し、それをすべての要求と共にWCFに渡します。
Azureが高可用性/負荷分散の性質を持つため、 WCFセッションをサポートしていません。ですから、私たちはこれをどのように実装するのですか?
解決策の1つは、AppFabricキャッシングを使用してWCFレイヤーのセッション状態を模倣することです。そこにアクセストークンを格納し、クライアントが渡したものに対して検証します。この問題は、クライアントとWCFの間に並行性がないことが原因です。だから、同じクライアントからのリクエストごとにWCFセッションのタイムアウトを進めなければならないでしょうが、すべてのリクエスト(数百/秒)でキャッシュを更新しないようにしたいと考えています。
提案がありますか?誰もAzureでこれに似た何かを実装しましたか?どんなフィードバックも高く評価されます。
P.S.サーバー上で発生する認証だけでなく、各クライアントのカスタム認証も行われます。 (一部のクライアントは、一部の機能にアクセスできる場合があり、そうでない場合もあります)。
ありがとう!