Ich habe eine MVC-Lösung wie folgt eingerichtet, mit drei 'Projekten'.ASP.NET MVC - Wohin geht die Authentifizierungsschicht?
Web (MVC-Projekt, Views, Controllern, Viewmodels)
Modelle (Domain Objects)
Persistenz (nHibernate Mapping, Session)
Ich brauche die Repositories zu beginnen Bau und würde mit dem Authentifizierungsmodell beginnen. Grundsätzlich nach der Standard-MVC-Vorlage, eine IMembershipService
und eine IFormsAuthenticationService
und verwandte Klassen (mit benutzerdefinierten Code, nicht in Authentifizierungsanbieter eingebaut).
Meine Frage ist ... wohin soll das gehen? Meine Repositories benötigen Zugriff auf meine Domain-Objekte und meine Persistenzschicht. Aber ich lese immer wieder, dass jede Art von "Kopplung" bedeutet, dass es ein schlechtes Design ist. Ich zögere also, ein viertes Projekt für die Repositories/Services zu erstellen, das auf die Models/Persistence verweist ... aber ich kann wirklich keinen anderen Weg finden, es logisch zu machen.
Ich habe Angst, alles zu tun, was mich erfordert, einen anderen Teil der Lösung zu referenzieren. Es scheint überall, wo ich mich hinwende, alles was ich sehe sind Leute, die darüber reden, wie schrecklich es ist, irgendeine Verbindung zu irgendeinem Teil des Projekts zu haben. Nichts macht für mich und mein Team an diesem Punkt wirklich Sinn - weil es unmöglich erscheint, tatsächlich mit der Datenbank zu kommunizieren, ohne auf irgendeiner Ebene mit dem Domänen- und Mapping-Modell zu koppeln. Erlaube ich dem Repository-Bereich der Anwendung, die SessionFactory zu sehen? Muss ich alles davon abhalten, etwas anderes zu sehen? – Ciel
Ich würde mich nicht allzu sehr mit Baugruppenreferenzen beschäftigen. Tatsache ist, dass sie * miteinander gekoppelt sind. Man braucht das andere, um zu funktionieren. Es wird immer etwas Disziplin erforderlich sein, um zu vermeiden, dass etwas verwendet wird, was technisch verfügbar und in seinem Umfang verfügbar ist. –
Im Allgemeinen, wenn Ihre Abhängigkeiten in eine Richtung gehen, sind Sie in guter Form. Die Faustregel lautet, dass Abhängigkeiten vom Benutzer zurück in die Persistenz gehen (z. B. Darstellungsschicht -> Dienstschicht -> Persistenzschicht), aber wenn Sie beide Richtungen haben oder wenn Sie Ebenen überspringen, können Sie Probleme haben. – Paul