0

Je cherche à ajouter la multi-location à une application MVC de base .net que je développe..Net Core - Remplacements de contrôleur multi-locataire

Mon but est d'avoir un projet de base qui contient les caractéristiques de base, y compris les contrôleurs, les vues, les actifs etc.

Je voudrais avoir un projet distinct par locataire qui peut remplacer les paramètres par défaut du projet de base . En ce moment j'essaye d'aborder la tâche de passer outre des contrôleurs, non seulement au niveau de contrôleur mais à la capacité de surcharger des actions individuelles dans un contrôleur.

Que devrais-je regarder pour faire ceci, je pensais à l'IControllerFactory mais pas sûr si c'est l'endroit correct dans le noyau de .net?

Je suppose qu'il peut y avoir un loin pour réaliser ceci avec l'IoC mais doit pointer dans la bonne direction.

Quelqu'un a des commentaires à ce sujet?

Répondre

1

C'est ainsi que je l'ai conçu sur mon projet actuel, mon exigence est légèrement différente de la vôtre en ce que son multi-tenated mais un locataire peut fonctionner dans plusieurs pays, la fonctionnalité est la même par locataire mais différent par pays, la conception ci-dessous vous donnera peut-être quelques idées pour vous aider sur votre chemin. Je traite les contrôleurs comme rien de plus qu'un mécanisme de navigation, gardez-les mince et léger. J'ai une zone par pays (dans votre scénario cela pourrait être une zone par locataire)

enter image description here

Chaque zones contrôleurs référence simplement un contrôleur de base

enter image description here

Le contrôleur de base est très léger parce que nous voulons être en mesure de mettre en œuvre une logique personnalisée par pays en utilisant notre conteneur DI. Permet de parcourir le scénario Modifier pour un permis.

enter image description here IntelliSense jouer en vue rouge :) ne devrait pas être

Modifier permis appelle _editPermitManager qui est de type IEditPermitManager injecté dans notre contrôleur. J'en ai deux implémentations dans le système pour la Nouvelle-Zélande parce que c'est un cas spécial et que tous les autres pays utilisent (mais vous pourriez facilement avoir une implémentation par pays).

enter image description here

enter image description here

I gérer cette injection avec ninject enter image description here

Le débit est utilisateur navigue vers/bla/NewZealand/Permis/éditer/4 clics soumettre cela est dirigé vers le contrôleur Permis en Nouvelle-Zélande, donc les ninjects injectent le gestionnaire de montage néo-zélandais et ceci est invoqué sur le flux d'édition, j'injecte aussi dans un INavigationService (_navigationService.Route) ce qui me permet de diriger potentiellement vers différentes vues sur un pays par pays. sis.

Espérons que cela vous donne un point de départ.