2008-08-04 20 views
18

ASP.NETのプロファイル機能の使用に関するベストプラクティスに関するガイダンスを探しています。ASP.NETのユーザープロファイルと古いスタイルのユーザークラス/テーブルの比較

組み込みのユーザープロファイルで何を保持するか、または独自のデータベーステーブルを作成して、必要なフィールドの列を追加する必要がある場合はどうすればよいですか?たとえば、ユーザーが郵便番号を持っている場合、自分のテーブルに郵便番号を保存するか、それをweb.config xmlプロファイルに追加して、ユーザープロファイルのASP.NETメカニズム経由でアクセスする必要がありますか?私は今考えることができます

長所/短所は、私は(それが今マトリックスのビットである)非常によくプロファイルを知らないので、私が行けば、私はおそらく私がやりたいことができますテーブルルート(現在のユーザーと同じ郵便番号のすべてのユーザーを取得するためのSQLなど) ASP.NETプロファイルを使用しても同じことができるかどうかわかりません。

答えて

10

Iveは、プロファイルプロバイダを使用した2つのアプリケーションしか構築していません。それ以来、私はそれを使わずにいました。両方のアプリについて、私は会社の名前、住所、電話番号などのユーザーに関する情報を保存するために使用しました。

クライアントがこれらのフィールドの1つでユーザーを検索できるようになるまで、これはうまくいきました。 ユーザープロファイルごとにのループを繰り返し、その情報を検索条件と比較します。ユーザーベースが増えるにつれて、検索時間がクライアントに受け入れられなくなりました。唯一の解決策は、ユーザー情報を格納するテーブルを作成することでした。検索速度が大幅に向上しました。

このタイプの情報を独自のテーブルに保存することをおすすめします。

1

私の経験上、プロファイルの情報を最小限に保つためには、認証に直接必要とされる重要事項のみを入れてください。アドレスなどのその他の情報は、独自のアプリケーションロジックによって独自のデータベースに保存する必要があります。このアプローチは、より拡張性と保守性に優れています。

+0

>アドレスなどのその他の情報は、独自のアプリケーションロジックで自分のデータベースに保存する必要がありますので、これは方法です。誰も私のasp_userテーブルをこの新しいテーブルにリンクする方法を教えてください。私はリンクとしてasp_テーブルのuserNameを使用する必要がありますか?userID(その醜いguid私は得る方法もわかりません)または何ですか? – csmba

+0

同じ情報を保持する独自のユーザーテーブルをロールして、セッション変数などを使用することもできます。その場合、完全に制御できます。今回は自分のユーザーテーブルに切り替えましたが、後悔しません。 – Sean

1

私はあなたが必要とするフィールドの数に依存すると思います。私の知る限り、プロファイルは本質的には指定されたフィールドサイズで分割される長い文字列です。つまり、多くのフィールドとユーザーがいる場合には、あまり拡張できません。

一方、それらは組み込まれているので、簡単で標準化された方法です。つまり、大きな学習曲線はなく、将来のアプリケーションでも新しいテーブルに調整する必要はありません構造。

あなた自身のことをローリングすれば、正常に正規化されたデータベースに入れて、パフォーマンスを大幅に向上させることができますが、コードを自分で管理するすべてのプロファイルを書く必要があります。

編集:また、プロファイルは、キャッシュされませんので、プロファイルへのすべてのアクセスは、(それは、その要求のためにキャッシュされていますが、次の要求が再びデータベースから取得します)

あなたの場合、最初にデータベースに行きますあなた自身のことを書くことを考えているのであれば、おそらくcustom Profile Providerは、シームレスな統合、それでもあなたがやりたいカスタムの両方の世界のベストを提供します。

1

ユーザープロファイルは、個別のカスタマイズ(AKA。プロファイルのプロパティ)のための素晴らしいクリーンなフレームワークです。 (iGoogleなど) その問題はクエリ用に設計されておらず、公開ユーザーへのデータ共有には適していません。(それでもパフォーマンスは低いですが)

カスタマイズされたユーザーエクスペリエンスを強化したい場合は、ユーザープロファイルを使用するとよいでしょう。それ以外の場合は、独自のクラスと表を使用する方がはるかに良い解決策になります。

0

私はそれが、ユーザがとにかくログインしているときだけ、通常重要である重要ではない、補足的なデータのためにそれを使う方が良いと思います。すべてが拭き取られた場合、何か重要なことを壊さないデータを考えてください。

もちろん、個人的な好みが他の重要な問題を提起しています。

匿名のCookieでプロファイルが管理されている認証されていないユーザーにも使用できます。

関連する問題