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
Répondre
Voici un tutoriel qui vous permettra de bien démarrer.
On dirait qu'il utilise une implémentation filetée, donc il devrait bien évoluer.
Cela pourrait être un bon endroit pour commencer: http://www.dreamincode.net/forums/showtopic33396.htm
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 ...
Est-ce une véritable préoccupation? Si WCF ne peut pas évoluer, quel est le remplacement approprié? – jason
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.
- 1. C++: Comment écrire un const_iterator?
- 2. Écrire un objet .NET dans C?
- 3. Comment écrire un Tilde normal (~) en C#?
- 4. Pouvez-vous écrire un bloc de code C++ dans C#?
- 5. C# Comment écrire un octet à un décalage?
- 6. C++ écrire une fonction modify_if
- 7. Écrire des pilotes en C#
- 8. C# écrire dans l'afficheur d'événements
- 9. Comment écrire un plugin ISAPI?
- 10. comment écrire dans un fichier texte par programme C
- 11. Comment écrire un programme C++ de téléchargement MultiPart
- 12. écrire un contrôle com en C# et l'utiliser dans MFC
- 13. Écrire un serveur proxy dans .NET (C# ou VB.NET)?
- 14. Comment écrire/lire des bits de/vers un flux? (C#)
- 15. Comment écrire un add-on IE 8 en C purifié
- 16. Écrire un jeu de cartes
- 17. C# Asp.net écrire le fichier au client
- 18. Écrire le code HTML en C#
- 19. Comment écrire une classe simple en C++?
- 20. Comment écrire mon propre wrapper en C#?
- 21. Comment écrire un programme pendant la compilation?
- 22. Écrire au fichier binaire en C++ et C#
- 23. Comment écrire un exécutable léger comme uTorrent
- 24. Comment écrire des bits dans un fichier?
- 25. Comment écrire un logiciel déployable?
- 26. Comment écrire un objet Mock?
- 27. Écrire un plugin Firefox/Netscape
- 28. Comment écrire un "Faux" ListBox
- 29. Comment écrire un code vb.net pour compiler des programmes C/C++?
- 30. Capture de stdout syscall sans écrire dans un fichier en C/C++
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
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
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