2010-05-13 5 views
3

Je crée une nouvelle application Client/Serveur en C# et j'attends un taux de connexion assez élevé. Cela m'a fait penser à des pools de connexion de base de données qui aident à réduire les coûts de création et d'élimination des connexions entre le client et la base de données.Recherche de modèles pour créer un pool de connexions TCP pour la messagerie haute performance

Je voudrais créer une fonctionnalité similaire pour mon application et n'ai pas été en mesure de trouver de bons exemples d'application de ce modèle. Ai-je vraiment besoin de lancer une instance d'un TcpClient chaque fois que je veux envoyer un message au serveur et recevoir un message de reçu? Chaque connexion est supposée transporter entre 1 et 5 Ko, chacune recevant un message de réponse de 1 Ko.

Je réalise que cette question est un peu vague, mais je pars de zéro, donc je suis ouvert aux suggestions. Même si cela signifie que mes suppositions sont toutes fausses. L'introduction du pool de connexion est une sorte d'optimisation.

+0

Avez-vous besoin de toutes ces connexions pour rester connecté ou établir une nouvelle connexion chaque fois qu'ils sont utilisés? Sont-ils tous sur le même serveur? S'il s'agit du même serveur, il peut être préférable de partager la même connexion plutôt que de créer plusieurs connexions, même si elles sont toutes connectées en permanence. Ce sera probablement beaucoup plus efficace aussi. – psychotik

+0

Le modèle devra prendre en charge n nombre de clients en envoyant un message et en recevant un en retour d'un serveur central. Un client peut avoir plusieurs connexions simultanées envoyant et recevant des messages. Cela est dû au fait que les threads de fond recueillent chacun des données et doivent ensuite les envoyer au serveur (requête/réponse). Initialement, je pensais à avoir un pool de connexions par client, en gérant toutes les demandes simultanées de connexions pour ce client, en réutilisant éventuellement connections/sockets/etc. – JoeGeeky

Répondre

0

Premature optimization peut être mauvais.

Je vous recommande de commencer le développement sans introduire de pool de connexions. Lorsque le code du client et du serveur est suffisamment stable, vous pouvez créer des tests de charge et détecter les problèmes de performance.

Le pool de connexions est requis si le temps de création d'une connexion est considérable par rapport au débit auquel les données arrivent vers/depuis le serveur (les tests de charge doivent indiquer cela).

Si les données du client sont envoyées pas souvent, vous n'avez même pas besoin de pool de connexions.

+0

Merci pour les commentaires ... Dans mon cas, les données de test montrent déjà que l'application d'un pool de connexion est une prochaine étape appropriée. – JoeGeeky

Questions connexes