0

Ich bin auf der Suche nach Multi-Tenancy zu einem .net Core MVC-Anwendung, die ich entwickeln..Net Core - Multi-Tenant-Controller außer Kraft setzt

Mein Ziel ist es, ein Kernprojekt zu haben, die die Basisfunktionen enthalten, einschließlich Controller, Ansichten, Vermögen usw.

Dann würde Ich mag ein separates Projekt pro Mieter haben, die die Vorgaben aus dem Kernprojekt außer Kraft setzen können . Im Moment versuche ich, die Aufgabe des Übersteuerns von Controllern anzugehen, nicht nur auf der Controller-Ebene, sondern auch die Fähigkeit, einzelne Aktionen innerhalb einer Steuerung zu überschreiben.

Was soll ich tun, um dies zu tun, dachte ich über die IControllerFactory, aber nicht sicher, ob dies der richtige Ort in .net Kern ist?

Ich gehe davon aus, dass es ein Weg sein könnte, dies mit IoC zu erreichen, aber in die richtige Richtung zeigen müssen.

Hat jemand irgendwelche Gedanken dazu?

Antwort

1

Dies ist die Art und Weise, wie ich es auf meinem aktuellen Projekt entworfen habe, meine Anforderung ist etwas anders als Ihre, in der Multi-Tenated aber ein Mieter in mehreren Ländern funktionieren kann, ist die Funktionalität pro Mieter, aber unterschiedlich pro Land, Das Design unten gibt Ihnen hoffentlich ein paar Ideen, die Ihnen auf Ihrem Weg helfen.

Ich behandle die Controller als nichts weiter als ein Navigationsmechanismus, halten Sie sie dünn und leicht. Ich habe eine Fläche pro Land (in Ihrem Szenario könnte dies ein Bereich pro Mieter sein)

enter image description here

Jeder Bereich Controller einfach einen Basis-Controller

enter image description here

Die Basissteuerung ist sehr leicht Referenz weil wir in der Lage sein möchten, benutzerdefinierte Logik pro Land mit unserem DI-Container zu implementieren. Lassen Sie uns das Bearbeitungsszenario für eine Genehmigung durchlaufen.

enter image description here Intellisense spielen up sollte nicht rot sein :)

bearbeiten Erlaubnis ruft _editPermitManager die vom Typ ist IEditPermitManager in unsere Controller injiziert. Ich habe zwei Implementierungen davon im System eine für Neuseeland, weil es einen speziellen Fall und einen alle anderen Länder verwendet (aber Sie könnten leicht eine Implementierung pro Land haben).

enter image description here

enter image description here

I diese Unter Injektion mit ninject enter image description here

die Strömung Benutzer navigiert zu/bla/NewZealand/Zulassen/Edit/4 Klicks übermittelt diesen gerichtet ist Controller zu erlauben, In NewZealand injiziert ninjects daher den New Zealand Edit Manager und dies wird im Editierfluss aufgerufen. Ich injiziere auch einen INavigationService (_navigationService.Route), der es mir ermöglicht, zu verschiedenen Ansichten eines Landes zu wechseln Schwester.

Hoffentlich gibt Ihnen das einen Ausgangspunkt.

Verwandte Themen