Je suis chargé de la construction d'un processus qui compenser les retards de réplication sur notre système LDAP. Actuellement, il y a un serveur d'écriture et 4 serveurs de lecture. Après avoir écrit une entrée sur le serveur d'écriture, il peut y avoir jusqu'à 4 secondes de retard sur le système avant que l'entrée ne soit répliquée sur les serveurs de lecture. Par conséquent, si j'appelle le service "A" qui met à jour un enregistrement, puis le service "B" immédiatement après lequel est censé lire cet enregistrement, les données seront périmées.processus de travail avec WCF (caching)
Pour résoudre ce problème, je comptais sur la construction d'un service web de mise en cache de sorte qu'aucune interface des applications directement avec la base de données, mais plutôt par le service de mise en cache. Le service stockera toutes les créations, les mises à jour et les suppressions dans un cache (vraisemblablement un List<ModelObject>
). Les entrées CRUD - R doivent rester dans le cache pendant au moins quatre secondes. Ensuite, lorsque le service "B" tente de lire, le service de mise en cache vérifie le cache avant d'effectuer l'opération de lecture sur la base de données.
Donc, ma question est en deux parties. 1) Est-ce une solution faisable et si non, quels problèmes voyez-vous? 2) Comment effectuer la maintenance sur le cache dans un service WCF? En d'autres termes, existe-t-il un moyen d'initialiser un thread de travail d'arrière-plan qui efface les entrées du cache qui datent de 4 secondes?
Merci. La solution n ° 1 ne fonctionnera pas car ces mêmes serveurs LDAP sont utilisés à la fois pour stocker les données client (prénom, nom de famille, etc.), mais aussi pour l'authentification (liaisons LDAP). Un seul serveur ne serait pas capable de gérer la charge de tous nos utilisateurs s'authentifiant. Cependant, en pensant à votre déclaration, vous m'avez amené à une meilleure solution: Séparer les données client du système d'authentification. – regex