Bonjour,
Je développe actuellement une application WEB destiné à être utilisé par plusieurs clients.
J'aurais besoin de conseil sur 2 sujets spécifiques.
-Comment dois je isoler l'instance metier d'un client utilisateur, actuellement chaque instance métier est stocké dans un dictionnaire avec pour cle l'id Session, ainsi un utilisateur "théoriquement" n’accède pas à un metier d'un autre. mais est ce suffisant? Faut il isoler cela plus nettement(un thread par utilisateur? autre chose?). Le but étant que si n utilisateur crash pour une raison ou autre, les autres utilisateurs ne sont pas impactés.
-ma seconde interrogation se pose au sein d'une même session. j'ai de temps en temps des pbs lorsqu' un utilisateur exécute deux fois une même action. Cette fonction détruit un dictionnaire le réinitialise le remplit à partir de la bdd et le traite(en le parcourant). du coup si la fonction est utilisée 2 fois de suite(dans un temps très court), le second appel détruit le dictionnaire alors que le premier appel le traite. Faut il gérer ces problèmes avec "lock" par exemple ou bien cela se traite il plus haut au niveau du controller pour empecher une action de s'executer 2 fois pour une même session tant que la première est en cours d'éxécution.
Je viens du développement client lourd et je manque un peu de connaissance sur des pattern à respecter pour une application WEB.
Merci de vos réponses.
Partager