2009-06-05 8 views
4

Je voudrais écrire un serveur C# qui agira à peu près comme un serveur de discussion (les clients sont connectés pendant un moment, le même message pourrait être envoyé à de nombreux clients, ....). Je me demandais si vous pouviez me donner quelques conseils pour commencer (quel type d'architecture (threads par clients/iocp/asynchrone/...) qui permettra de bien dimensionner (devrait être capable de gérer des milliers de connexions simultanées)).Écrire un C# client/serveur

+0

Est-ce que cela est destiné à l'apprentissage (c'est-à-dire que la création d'un serveur de discussion multithread est idéale pour apprendre à travailler avec des réseaux et mettre à l'échelle plusieurs connexions) ou pour la production? – configurator

+0

Je suis intéressé à apprendre la bonne pratique pour écrire le serveur de qualité prod. Mais le but de mon projet est uniquement destiné à mieux comprendre les différents mécanismes. – Dave

+0

Si votre objectif est de comprendre le mécanisme, j'irais avec TcpClient. Ils sont assez simples à utiliser, et ils exposent à peu près exactement ce qui se passe. Le tutoriel suggéré par KClough vous montre comment les utiliser. – configurator

Répondre

2

Voici un exemple en utilisant WCF: http://www.codeproject.com/KB/WCF/WCFWPFChat.aspx

Espérons que vous ne voudriez pas avoir à traiter avec des prises brutes en utilisant WCF, il serait intéressant de voir si WCF pourrait gérer les milliers de connexions si ...

+0

Est-ce une véritable préoccupation? Si WCF ne peut pas évoluer, quel est le remplacement approprié? – jason

1

Si vous avez besoin d'une évolutivité du type que vousvisitez A propos, l'IOCP est la seule voie à suivre.

Il y a quelques pièges à éviter cependant, alors lisez ma réponse détaillée sur: How to write a scalable Tcp/Ip based server en même temps que la réponse acceptée sur la même question.