5 Stimmen

Rufen Sie asp.net Membership-Klasse von Controller oder Service-Schicht?

Sollte ich die asp.net-Mitgliedschaft-Klasse aus dem Controller zugreifen und die Ergebnisse an die Service-Schicht übergeben, oder greifen Sie es direkt von der Service-Schicht?

Ich bin hin- und hergerissen, denn einerseits scheint dies wie Geschäftslogik, die in der Dienstschicht behandelt werden sollte, aber ich möchte nicht die Dienstschicht an den Web-Namespace binden, da dies eine Windows-Anwendung auf der Straße werden könnte.

6voto

Joel Martinez Punkte 45129

Die Antwort: Verwenden Sie IoC, um eine Mitgliedschaftsschnittstelle zu erstellen, die von der Dienstschicht verwendet wird. die Implementierung der Website kann den Web-Namensraum verwenden. Und die Windows-Anwendung kann eine andere Implementierung haben. Und da Sie diese Abhängigkeit injizieren können, muss sich Ihre Serviceschicht nicht ändern :-)

3voto

Craig Stuntz Punkte 124703

Die ASP.NET-Mitgliedschaft ist web-spezifisch, daher sollte der Zugriff über den Controller erfolgen. MHO ist, dass die Dienstschicht nicht fest mit dem Web verdrahtet werden sollte. Also für das Hinzufügen/Entfernen von Benutzern, tun, dass über den Controller.

OTOH, in der Dienstschicht können Sie lesen Thread.CurrentPrincipal.Identity die nicht web-spezifisch ist, aber mit ASP.NET Membership vollständig kompatibel ist. Wenn Sie also nur den aktuellen Benutzer abrufen müssen, können Sie das tun, ohne die Trennung von Belangen aufzuheben.

0voto

womp Punkte 113535

Ist es wirklich ein Problem, System.Web zu verwenden? Es ist nicht anders, als wenn man es an System.Configuration oder System.IO bindet. Jede Anwendung kann davon Gebrauch machen, egal ob sie "offline" ist oder nicht.

Ich binde meine Webanwendungen routinemäßig an Assemblies, die klassischerweise als "Winforms"-Assemblies bezeichnet werden, um Zugriff auf nützliche Sammlungsobjekte usw. zu erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X