Je vais d'abord décrire l'état actuel:
Le serveur est constitué de plusieurs services WCF, hébergés dans un ou plusieurs services win sur des machines différentes.Question sur l'architecture du serveur. (WCF + NServiceBus)
- Service responsable de la réception de données à partir de différents périphériques. La communication avec les périphériques est implémentée à l'aide de sockets. Mode instance de service - singleton.
- Service de courtier de données - responsable de la conservation des données et du partage sur demande. Mode d'instance - singleton.
- Service de configuration - chargé de modifier la base de données de configuration et de travailler avec la console d'administration (application WPF, comme SSMS). Gère les connexions depuis la console, la gestion des abonnés, etc. Mode instance - singleton.
- Service d'accès client - tout à fait le même que ci-dessus avec la gestion des clients, mais aussi avertit les clients de nouvelles données, et agit comme une façade de bus de service. Et encore singleton.
- Service de gestion d'identité - Vérifie les autorisations et renvoie le résultat. Singleton.
Tous ces services sont connectés à NServiceBus et j'aime vraiment comment cela fonctionne en ce moment.
Mais:
Trop de singletons. Principalement parce que pour utiliser le servicebus je dois avoir une seule instance de celui-ci afaik. Je ne sais pas peut-être que je peux utiliser le bus nservice en mode session, mais je ne sais pas comment gérer le problème que tous ces services utilisent une file d'attente.
Et si j'ai plus de 300 clients? singleton peut devenir insensible ..
Et je voulais demander quelques critiques à propos de tout cela et peut-être quelqu'un pourrait suggérer quelque chose.
Merci d'avance.
Alexey
chaque service a sa propre file d'attente. Jetez un oeil à l'échantillon de pages asynchrones. Idealy je veux des services qui communiquent avec des clients externes au mode de session de wor. Ce serait génial. –
Regardé des pages asynchrones examiner. c'est intéressant. Donc, si j'injecte un objet bus dans une instance de service de session, comment puis-je déterminer que ce message a été ciblé sur une instance concrète? Par exemple, nous avons 2 clients connectés. Les deux ont leurs propres sessions. Ensuite, ils envoient chacun des messages du même type. Comment déterminer quel service instanse va gérer le callback? –
> Comment puis-je déterminer que ce message visait une instance concrète? Alexey - Je ne sais pas ce que vous demandez. Demandez-vous un rappel WCF ou un rappel NServiceBus? –