ASP.NET intégré au profil utilisateur vs.classe/tables d'utilisateurs à l'ancienne

StackOverflow https://stackoverflow.com/questions/1683

  •  08-06-2019
  •  | 
  •  

Question

Je recherche des conseils concernant les meilleures pratiques concernant l'utilisation de la fonctionnalité Profil dans ASP.NET.

Comment décidez-vous ce qui doit être conservé dans le profil utilisateur intégré, ou si vous devez créer votre propre table de base de données et ajouter une colonne pour les champs souhaités ?Par exemple, un utilisateur a un code postal, dois-je enregistrer le code postal dans ma propre table, ou dois-je l'ajouter au profil XML web.config et y accéder via le mécanisme ASP.NET du profil utilisateur ?

Les avantages/inconvénients auxquels je pense en ce moment sont que comme je ne connais pas très bien le profil (c'est un peu compliqué Matrice pour le moment), je peux probablement faire ce que je veux si j'emprunte la route des tables (par exemple, SQL pour obtenir tous les utilisateurs dans le même code postal que l'utilisateur actuel).Je ne sais pas si je peux faire la même chose si j'utilise le profil ASP.NET.

Était-ce utile?

La solution

Je n'ai créé que 2 applications utilisant le fournisseur de profil.Depuis, je ne l’utilise plus.Pour les deux applications, je l'ai utilisé pour stocker des informations sur l'utilisateur telles que le nom de l'entreprise, son adresse et son numéro de téléphone.

Cela a bien fonctionné jusqu'à ce que notre client veuille pouvoir trouver un utilisateur par l'un de ces champs.La recherche impliquait une boucle chaque profil des utilisateurs et en comparant les informations aux critères de recherche.À mesure que la base d’utilisateurs augmentait, le temps de recherche devenait inacceptable pour notre client.La seule solution était de créer une table pour stocker les informations des utilisateurs.La vitesse de recherche a été considérablement augmentée.

Je recommanderais de stocker ce type d'informations dans sa propre table.

Autres conseils

le profil utilisateur est un cadre propre et agréable pour la personnalisation individuelle (AKA.Propriétés du profil).(par exemple.igoogle) Le problème n'est pas conçu pour la requête et pas idéal pour le partage de données à l'utilisateur public. (Vous pourriez toujours le faire, avec de faibles performances)

ainsi, si vous souhaitez améliorer l’expérience utilisateur personnalisée, le profil utilisateur serait une bonne solution.sinon, utiliser votre propre classe et table serait une bien meilleure solution.

D'après mon expérience, il est préférable de conserver les informations du profil au strict minimum, en n'y mettant que les éléments essentiels qui sont directement nécessaires à l'authentification.D'autres informations telles que les adresses doivent être enregistrées dans votre propre base de données par votre propre logique d'application, cette approche est plus extensible et maintenable.

Je pense que cela dépend du nombre de champs dont vous avez besoin.À ma connaissance, les profils sont essentiellement une longue chaîne divisée selon la taille des champs donnée, ce qui signifie qu'ils ne s'adaptent pas très bien si vous avez de nombreux champs et utilisateurs.

D'un autre côté, ils sont intégrés, c'est donc un moyen simple et standardisé, ce qui signifie qu'il n'y a pas de grande courbe d'apprentissage et que vous pouvez également les utiliser dans de futures applications sans avoir besoin de les adapter à une nouvelle structure de table.

Lancer votre propre objet vous permet de le placer dans une base de données correctement normalisée, ce qui améliore considérablement les performances, mais vous devez écrire vous-même la quasi-totalité du code de gestion du profil.

Modifier:De plus, les profils ne sont pas mis en cache, donc chaque accès à un profil va d'abord à la base de données (il est ensuite mis en cache pour cette requête, mais la requête suivante l'obtiendra à nouveau de la base de données)

Si vous envisagez d'écrire votre propre truc, peut-être un Fournisseur de profil personnalisé vous offre le meilleur des deux mondes : une intégration transparente et les tâches personnalisées que vous souhaitez réaliser.

Je pense qu'il est préférable de l'utiliser pour des données supplémentaires qui ne sont pas critiques pour l'utilisateur et qui ne sont normalement importantes que lorsque cet utilisateur se connecte de toute façon.Pensez à des données qui ne briseraient rien d’important si tout était effacé.

bien sûr, c'est une préférence personnelle, mais d'autres ont soulevé d'autres questions importantes.

Également très utile étant donné qu'il peut être utilisé pour un utilisateur non authentifié dont le profil est maintenu avec un cookie anonyme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top