2012-01-11 16 views
0

WCFサービスをいくつか用意しましょう。私が必要とするのは、認証されたユーザーに関連する追加データを保存して、この情報をすぐに取得することです(データストレージからクエリを実行する必要はありません)。 これを達成するためのベストプラクティスについて知りたいです。私は、以下の代替案を使用できると仮定しています:WCFと認証情報を格納する

1)サービスAspnetCompatibleを作成し、フォーム認証、HttpContext、およびキャッシュを使用します。この代わりに、私はそれを使用することの不利な点について知りたいと思います。

2)セッションごとのサービス(InstanceContextMode.PerSession)を作成します。私の場合、このオプションの主な欠点は、スケーラビリティに問題が生じる可能性があることです。そして、私が知っている限り、basicHttpBindingはセッションごとのモードをサポートしていません(つまり、Silverlightアプリケーションの場合は適切ではありません)。

だから、あなたはそれについてどう思いますか、何を使用することをお勧めしますか?

答えて

1

あなたは常にこのようユーザ名を取得することができます:それはもう少し複雑だけれども

OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name

あなたも、パスワードを取得することができます。 Rory Primrose explains it in his article

他に必要な情報と、通話の間にメモリに保存しておくものは何ですか?

EDIT:

Scalibity有効な関心事である、理想的に私はPerCallのインスタンス化に固執すると思います。呼び出し間で情報を共有する簡単な方法は、WCF以外のコンテキスト(つまり静的)でインスタンス間で情報を共有することと変わりありません。

+0

たとえば、ユーザーがログインしている組織の詳細と、頻繁に使用される認証済みユーザーに関連するその他の特定のデータ。 「呼び出し間でメモリに格納する」というのは一般的な答えであり、より具体的なものが必要です)(私がそれを行うために知っている方法を述べたので、他にも優れた解決策があるかどうかを知りたい – andrew

+0

静的な辞書を使用していることを意味しますか(すべての呼び出し間ではなく、認証されたユーザーに関連するデータ間でデータを共有する必要があるため)、このデータをクリーンアップする必要がありますが、 (ユーザーが明示的にログアウトした場合を除く)... – andrew

関連する問題