2009-08-24 4 views
5

Soll ich von der Steuerung auf die asp.net-Mitgliedsklasse zugreifen und die Ergebnisse an die Serviceebene übergeben oder direkt von der Serviceebene aus darauf zugreifen?ASP.NET-Mitgliedsklasse von Controller oder Service-Layer aufrufen?

Ich bin zerrissen, weil auf der einen Seite dies wie Geschäftslogik scheint, die in der Serviceebene behandelt werden soll, aber ich möchte die Serviceebene nicht mit dem Webnamespace verknüpfen, da dies eine Windows-Anwendung werden könnte Straße.

Antwort

6

die Antwort, verwenden Sie IoC, um eine Mitgliedschaftsschnittstelle zu erstellen, die die Serviceschicht verwendet. Die Implementierung der Website kann den Web-Namespace verwenden. Und die Windows App kann eine andere Implementierung haben. und da Sie diese Abhängigkeit injizieren können, muss sich Ihre Service-Schicht nicht ändern :-)

+0

Das sollte mein nächster Angriffsplan sein, danke für die Bestätigung. –

0

Ist es wirklich ein Problem, System.Web zu verwenden? Es ist nicht anders, als es an System.Configuration oder System.IO zu binden. Jede Anwendung kann davon Gebrauch machen, unabhängig davon, ob sie "offline" ist oder nicht.

Ich binden meine Web-Anwendungen routinemäßig an Assemblys, die eher klassisch als "Winforms" -Assemblys sind, um Zugriff auf nützliche Sammlungsobjekte und ähnliches zu bekommen.

+0

Mein Gedanke war nur, dass wenn ich zu winforms wechseln würde, es nur richtiger wäre, wenn es nicht von einer unzusammenhängenden Assembly abhängt. Zugegeben, es ist etwas trivial. –

3

ASP.NET-Mitgliedschaft ist Web-spezifisch, so dass auf den Controller zugegriffen werden sollte. MHO ist, dass die Service-Schicht nicht fest mit dem Internet verbunden sein sollte. Zum Hinzufügen/Entfernen von Benutzern tun Sie dies über den Controller.

OTOH, in der Service-Schicht, können Sie lesen Thread.CurrentPrincipal.Identity, die nicht web-spezifisch ist, aber zufällig vollständig kompatibel mit ASP.NET-Mitgliedschaft ist. Wenn Sie also nur den aktuellen Benutzer benötigen, können Sie das tun, ohne Bedenken zu trennen.

Verwandte Themen