ASP.NET integriertes Benutzerprofil vs.Benutzerklasse/Tabellen im alten Stil

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

  •  08-06-2019
  •  | 
  •  

Frage

Ich suche nach Anleitungen zu den Best Practices rund um die Verwendung der Profilfunktion in ASP.NET.

Wie entscheiden Sie, was im integrierten Benutzerprofil beibehalten werden soll, oder ob Sie eine eigene Datenbanktabelle erstellen und eine Spalte für die gewünschten Felder hinzufügen sollten?Wenn ein Benutzer beispielsweise eine Postleitzahl hat, sollte ich die Postleitzahl in meiner eigenen Tabelle speichern oder sie zum XML-Profil web.config hinzufügen und über den ASP.NET-Mechanismus des Benutzerprofils darauf zugreifen?

Die Vor- und Nachteile, die mir im Moment einfallen, sind, dass ich das Profil nicht sehr gut kenne (es ist ein bisschen kompliziert). Matrix Im Moment kann ich wahrscheinlich tun, was ich will, wenn ich den Tabellenweg gehe (z. B. SQL, um alle Benutzer in derselben Postleitzahl wie der aktuelle Benutzer zu erhalten).Ich weiß nicht, ob ich dasselbe tun kann, wenn ich das ASP.NET-Profil verwende.

War es hilfreich?

Lösung

Ich habe nur zwei Anwendungen erstellt, die den Profilanbieter verwendet haben.Seitdem habe ich mich davon ferngehalten, es zu benutzen.Für beide Apps habe ich es verwendet, um Informationen über den Benutzer wie seinen Firmennamen, seine Adresse und seine Telefonnummer zu speichern.

Dies funktionierte einwandfrei, bis unser Kunde einen Benutzer anhand eines dieser Felder finden wollte.Die Suche erforderte ein Durchschleifen jeden Benutzerprofil und Vergleich der Informationen mit den Suchkriterien.Als die Benutzerbasis wuchs, wurde die Suchzeit für unseren Kunden inakzeptabel.Die einzige Lösung bestand darin, eine Tabelle zum Speichern der Benutzerinformationen zu erstellen.Die Suchgeschwindigkeit wurde enorm erhöht.

Ich würde empfehlen, diese Art von Informationen in einer eigenen Tabelle zu speichern.

Andere Tipps

Das Benutzerprofil ist ein schöner, sauberer Rahmen für individuelle Anpassungen (AKA.Profileigenschaften).(z.B.Igoogle) Das Problem ist nicht für die Abfrage ausgelegt und nicht ideal für die Datenfreigabe an den öffentlichen Benutzer. (Sie könnten es immer noch mit geringer Leistung tun.)

Wenn Sie also das individuelle Benutzererlebnis verbessern möchten, ist das Benutzerprofil eine gute Möglichkeit.andernfalls wäre die Verwendung einer eigenen Klasse und Tabelle eine viel bessere Lösung.

Meiner Erfahrung nach ist es am besten, die Informationen im Profil auf ein Minimum zu beschränken und nur die wesentlichen Informationen dort anzugeben, die direkt für die Authentifizierung benötigt werden.Andere Informationen wie Adressen sollten durch Ihre eigene Anwendungslogik in Ihrer eigenen Datenbank gespeichert werden, dieser Ansatz ist erweiterbarer und wartbarer.

Ich denke, das hängt davon ab, wie viele Felder Sie benötigen.Meines Wissens handelt es sich bei Profilen im Wesentlichen um eine lange Zeichenfolge, die bei den angegebenen Feldgrößen aufgeteilt wird, was bedeutet, dass sie sich nicht sehr gut skalieren lassen, wenn Sie viele Felder und Benutzer haben.

Andererseits sind sie integriert, sodass es sich um eine einfache und standardisierte Methode handelt, was bedeutet, dass keine große Lernkurve erforderlich ist und Sie sie auch in zukünftigen Apps verwenden können, ohne sie an eine neue Tabellenstruktur anpassen zu müssen.

Wenn Sie Ihr eigenes Ding rollen, können Sie es in eine richtig normalisierte Datenbank einfügen, was die Leistung drastisch verbessert, aber Sie müssen so ziemlich den gesamten Profilverwaltungscode selbst schreiben.

Bearbeiten:Außerdem werden Profile nicht zwischengespeichert, sodass jeder Zugriff auf ein Profil zuerst an die Datenbank geht (es wird dann für diese Anfrage zwischengespeichert, aber bei der nächsten Anfrage wird es wieder aus der Datenbank abgerufen).

Wenn Sie darüber nachdenken, Ihr eigenes Ding zu schreiben, vielleicht a benutzerdefinierter Profilanbieter bietet Ihnen das Beste aus beiden Welten – nahtlose Integration und dennoch die individuellen Dinge, die Sie tun möchten.

Ich denke, es ist besser, es für zusätzliche Daten zu verwenden, die für den Benutzer nicht kritisch sind und normalerweise nur wichtig sind, wenn sich dieser Benutzer sowieso anmeldet.Denken Sie an Daten, die nichts Wichtiges beschädigen würden, wenn sie vollständig gelöscht würden.

Natürlich ist das eine persönliche Präferenz, aber andere haben andere wichtige Themen angesprochen.

Auch sehr nützlich, wenn man bedenkt, dass es für einen nicht authentifizierten Benutzer verwendet werden kann, dessen Profil mit einem anonymen Cookie verwaltet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top