2017-09-11 8 views
0

J'ai une application MVC qui est une architecture multi-client. Dans ce cas, il existe des variables globales (communes à tous les utilisateurs de chaque locataire) et certaines sont spécifiques à l'utilisateur connecté. En outre, certains paramètres sont communs à tous les utilisateurs d'un locataire spécifique.Chargement des variables spécifiques au client hébergé dans une application multi-client

Je stocke et récupère les variables Global et Session comme mentionné ci-dessous.

  • Spécifique à l'utilisateur connecté - HttpContext.Current.Session["sessionVariableName]. Ces variables chargées au moment de la connexion d'un utilisateur. Les variables globales - HttpContext.Current.Application["applicationVariableName"]. Ces variables sont chargées dans Global.asax au démarrage de l'application.

Maintenant, j'ai une question, comment charger les variables spécifiques aux locataires. Dans quel cas j'ai besoin de charger les variables? Je ne souhaite pas charger toutes les variables spécifiques au client au moment du démarrage de l'application, car de nombreux clients n'utilisent peut-être pas l'application. En outre, il peut être surcharge au moment de la connexion de chaque utilisateur pour vérifier et charger les paramètres spécifiques du client. Quelle est la meilleure approche?

Répondre

0

Dans votre cas, je voudrais suggérer l'approche suivante

  1. Créer une table nommée « TenantSettings » qui contient les paramètres spécifiques du locataire
  2. Créer une table nommée « UserSettings » qui contient tous les paramètres spécifiques à l'utilisateur
  3. Identifier le login de poste de locataire, puis lors de la première fois obtenir les paramètres du locataire, vous stockerez les TenantSettings dans un cache [Distribué ou In-Memory syc'ed via pub-sub]
  4. en outre, après la connexion d'un utilisateur, allez nous chercher erSettings et a également mis que dans le cache [comme dans 3]
  5. Ne pas utiliser la mémoire d'application car le cache peut être accidentellement polluée et ne sera pas échelle avec la charge

Database Entité Détails pour

1. TenantSettings les éléments suivants peuvent être les colonnes pour TenantSettings

  • TenantID
  • SettingID
  • SettingValue
  • AuditFields comme CreatedBy, CreatedOn, IsActive, UpdatedBy ...

2.UserSettings

  • UserId
  • TenantID
  • SettingID
  • SettingValue
  • Audit des domaines similaires à l'
  • ci-dessus

Hope this helps.