6
votes

Utilisez le profil ASP.NET ou non?

J'ai besoin de stocker quelques attributs d'un utilisateur authentifié (j'utilise l'API d'adhésion) et je dois faire un choix entre utiliser des profilés ou ajouter une nouvelle table avec Userid en tant que PK. Il semble que l'utilisation des profils soit rapide et qu'il a besoin de moins de travail. Cependant, je vois les descentes suivantes:

  1. Les valeurs de profil sont schies dans une seule colonne NTEXT. À un moment donné à l'avenir, j'aurai des scripts SQL qui peuvent mettre à jour les attributs de l'utilisateur. Interrographique une colonne NTEXT et essayer de mettre à jour une valeur sonne un peu de buggy pour moi.
  2. Si je choisis d'ajouter une nouvelle propriété spécifique à l'utilisateur et souhaitez affecter une valeur par défaut pour tous les utilisateurs existants, serait-il possible?

    Ma première impression a été que l'utilisation de profils peut provoquer des maux de tête de maintenance à long terme. Pensées?


2 commentaires

+1 - meilleure question. montre l'initiative dans laquelle vous avez examiné la question vous-même et avez encore des questions.


J'ai monté un moyen d'interroger les données de fournisseur de profil par défaut qui fonctionne très bien pour moi: Stackoverflow.com/a/13747590/ 64334


3 Réponses :


0
votes

me semble que vous avez répondu à votre propre question. Si votre point 1 est susceptible de se produire, une table SQL est la seule option sensible.


0 commentaires

-1
votes

Consultez cette question ...

asp.net intégré Profil utilisateur vs. CLASSE / TABLES D'UTILISATEUR VIEILLES

Le premier indice que les profils intégrés sont bien conçus est leur utilisation de données délimitées dans une base de données relationnelle. Il y a quelques cas qui ont délimité des données dans un SGBDM, mais ce n'est certainement pas l'un d'entre eux.

sauf si vous avez une raison spécifique à Utiliser des profils ASP.NET, je vous suggère d'aller avec les tables séparées à la place.


4 commentaires

mal conçu? Comment concevoiriez-vous un système de profil dynamique pouvant fonctionner hors de la boîte en modifiant un fichier de configuration ... en 2003? Je dirais qu'il y avait des gens assez intelligents qui la mettent en place et que votre «indicateur» est mal informé.


@CODE POET: Down Votes ne sont pas de désaccord avec des opinions :) C'est mon opinion que la mise à jour des données délimitées dans une colonne unique pour les données de profil générique est une mauvaise conception. Il existe des conceptions de table bien connues qui abordent ce concept.


«Si vous voyez une désinformation, votez-la. ' stackoverflow.com/faq - caractériser catégoriquement les profils ASP.NET comme mal conçu est la désinformation et peut également détourner inutilement certaines avec moins d'expérience de l'utilisation du très Installations simples fournies par les fournisseurs par défaut à des solutions spécialisées dans les pièces de rechange inutilement complexes. Encore une fois, comment fourniriez-vous la même fonctionnalité, c'est---------vouli la possibilité de fournir une méta de l'utilisateur transitoire et dynamique en utilisant uniquement la configuration?


Et je devrais dire que votre conclusion est également un mauvais conseil. Sauf si vous avez une raison spécifique pas d'utiliser le fournisseur par défaut, il est toujours préférable de ne pas réinventer la roue.



3
votes

Il y avait un article sur MSDN (maintenant sur asp.net http : //www.asp.net/downloads/sandbox/table-profile-provider-semples ) qui explique comment créer un fournisseur de table de profil. L'idée est de stocker les données de profil dans une table par rapport à une ligne, ce qui facilite la requête avec seulement SQL.

Plus sur ce point, SQL Server 2005/2008 fournit une prise en charge d'obtenir des données via des services et du code CLR. Vous pouvez éventuellement accéder aux données de profil via l'API au lieu des tables sous-jacentes directement.

Quant au point n ° 2, vous pouvez définir des valeurs par défaut sur les propriétés et que cela ne mettra pas à jour immédiatement les autres profils, le profil serait mis à jour lors de son accédation suivante.


3 commentaires

Pouvez-vous commenter la flexibilité et la performance du «fournisseur de table de profil» pour une base d'utilisateurs importante?


+1 Ceci est le moyen d'y aller si vous avez des données de profil inférieur et / ou des exigences d'accès. La performance est bien meilleure avec un fournisseur basé sur la table en raison de la sérialisation / de désérialisation requise par la mise en œuvre du profil dynamique par défaut.


@DotNetDude: Je crains que cela dépend de votre définition de grande taille. En ce qui concerne la flexibilité, en utilisant un fournisseur, les développeurs permettent de continuer à utiliser l'API de profil dans le code. Cela rend les solutions de développement google-capables (ou Stackoverflow FIERSEarch-capables, si vous préférez) au sens général au lieu d'une sur commande personnalisée. Les mesures de performance devraient également tenir compte de l'intention originale du point n ° 1 de la question: avoir les données de profil disponibles dans un format plus facile à interroger que le schéma DB de profil standard. Le fournisseur de table gagne quelques points là-bas.