L'écriture d'un très évolutif serveur TCP/IP en C# 5 avec async/await modèle?

Je suis chargé de la conception d'un assez simple serveur TCP/IP qui doit accepter les connexions de plusieurs clients. Il doit être écrit en C#, et je suis en utilisant .NET 4.5. Cela dit, je ne suis pas sûr de ce qui est le courant de "l'état de l'art" pour le protocole TCP/IP client/serveur de l'évolutivité .NET 4.5.

Je ne vois ce post: Comment écrire une évolutif Tcp/Ip, serveur. Mais qui se rapporte à l' .NET 2.0 et 3.5, et ne fait aucune mention de la async/await modèle.

Je suis capable d'écrire un serveur de la "vieille manière"... mais je veux savoir ce que le "new way".

  • Quelle est la meilleure façon d'utiliser les nouvelles méthodes Asynchrones sur Socket, TcpClient ou TcpListener pour créer un serveur évolutif en C#?
  • Les nouvelles méthodes Asynchrones effet de levier I/O Ports de fin?
  • Est rouler votre propre Prise écouteur plus efficace, ou sont les TcpListener/TcpClient classes assez bon maintenant?

EDIT: d'autres questions.

  • il n'y a pas de C# 4.5 🙂 c'est .net 4.5, C# 5
  • Soupir ... c'est stupide. Merci pour la correction de moi.
  • Pourrait avoir un coup d'oeil à signalr.net
  • Qu'est-ce que votre serveur TCP/IP va être fait? Chevaux pour les cours et tout ça...
  • Cela peut être utile: blogs.msdn.com/b/pfxteam/archive/2011/12/15/10248293.aspx
  • Il va envoyer des messages et recevoir des messages à partir de clients windows.
  • pour l'article intéressant, il montre une certaine intéressant async modèle de bases et est une bonne lecture, mais il n'a pas vraiment répondu à ma question.
  • Personnellement, je pense que l'utilisation de méthodes asynchrones n'est même pas une bonne idée pour un gros serveur TCP/IP. Il est préférable de garder beaucoup de pièces en un ou deux (ou même plus) threads non bloquant les connexions. Vous pouvez vérifier les données et de les gérer, et c'est beaucoup plus rapide, plus fiable et plus sûr. Qu'est ce que la plupart des navigateurs web et des serveurs.
  • Asynchrone à l'aide de I/O ports de fin ne devrait pas bloquer les threads. En fait, la plupart de la Commencer/AsyncResult de type I/O méthodes .NET 3.5 et effet de levier supérieur IOCP, qu'ils ne doivent pas obstruer les fils comme async en .NET 2.0 n'.
  • En fait, je suis sûr que la grande majorité des navigateurs et les serveurs web utilisent des méthodes asynchrones. IOCP, et en particulier en.
  • StephenCleary , Merci de m'informer IOCP dans de nouvelles versions de .Net. Mais en revanche IOCP est presque la même, que l'utilisation n'est pas bloquant mais avec async comme interface à partir de ce que j'ai appris à partir d'internet. N'est-il pas?
  • Avez-vous envisagé d'utiliser une bibliothèque de réseau tels que networkcomms.net? Il est un bon exemple de cela en action ici networkcomms.net/creating-a-wpf-chat-client-server-application

InformationsquelleAutor Ben Lesh | 2013-01-31