Non seulement viable, mais vraiment bon, selon mon expérience. J'ai développé plusieurs serveurs MMO en C #, et je dois dire que je n'ai jamais regretté le choix de la langue et de la plateforme.
Il existe de nombreuses bibliothèques et outils pour C # et .NET en général - réseau, journalisation, mappage O / R, etc. )
Le "surcoût" du GC qui fait peur à certaines personnes n'est pas vraiment un problème, sauf si vous en abusez avec des milliards d'allocations par seconde. Par exemple, notre serveur actuel alloue jusqu'à 50 Mo / seconde sous une charge élevée, et GC n'introduit aucun décalage notable. Nous avons cependant dû utiliser la mise en commun des objets dans des endroits stratégiques, mais surtout, les objets représentant les paquets réseau sont regroupés et non récupérés. Pourtant, même avec la mise en commun désactivée, GC n'est pas le plus gros problème.
Comme exemple de la fraîcheur de C #, c'est ce que nous avons récemment implémenté. Notre serveur exécute plusieurs services WCF, que le client du jeu utilise pour des tâches non urgentes, et nous les utilisons également pour l'administration du serveur. Il s'avère que c'est très facile de faire un service WCF pour simplement retourner nos objets de jeu à l'appelant. Nous avons donc fait exactement cela, puis créé un petit plugin pour LINQPad qui se connecte à notre serveur - et maintenant nous pouvons exécuter des requêtes comme
from character in Service.GetOnlineCharacters()
where character.LocationManager.LocationId==5 && character.Attributes.Level<10
select new { character.Id, character.Nick }
Sur un serveur live, rien de moins! Je ne pense pas que vous puissiez le faire avec une autre plate-forme. Pas au moins deux jours de travail.