Nach meiner Erfahrung nicht nur tragfähig, sondern auch sehr gut. Ich habe mehrere MMO-Server mit C # entwickelt und muss sagen, dass ich die Wahl der Sprache und Plattform nie bereut habe.
Es gibt viele großartige Bibliotheken und Tools für C # und .NET im Allgemeinen - Netzwerk, Protokollierung, O / R-Zuordnung usw. Und im Vergleich zu Java ist C # aussagekräftiger und weniger ausführlich (einige Leute könnten sich jedoch darüber streiten). )
Der GC-Overhead, der einigen Leuten Angst macht, ist kein wirkliches Problem, es sei denn, Sie missbrauchen ihn mit Milliarden von Zuweisungen pro Sekunde. Beispielsweise weist unser aktueller Server unter hoher Last bis zu 50 MBit / s zu, und GC führt zu keiner merklichen Verzögerung. Wir mussten jedoch an strategischen Stellen das Objekt-Pooling verwenden - am wichtigsten ist, dass Objekte, die Netzwerkpakete darstellen, gepoolt und nicht mit Müll gesammelt werden. Auch wenn das Pooling deaktiviert ist, ist GC nicht das größte Problem.
Als Beispiel dafür, wie cool C # ist, haben wir dies kürzlich implementiert. Auf unserem Server werden mehrere WCF-Dienste ausgeführt, die der Spielclient für nicht zeitkritische Aufgaben verwendet, und wir verwenden sie auch für die Serververwaltung. Es stellt sich heraus, dass es sehr einfach ist, einen WCF-Dienst zu erstellen, um unsere Spielobjekte einfach an den Anrufer zurückzugeben. Also haben wir genau das getan und dann ein kleines Plugin für LINQPad erstellt, das eine Verbindung zu unserem Server herstellt - und jetzt können wir Abfragen wie ausführen
from character in Service.GetOnlineCharacters()
where character.LocationManager.LocationId==5 && character.Attributes.Level<10
select new { character.Id, character.Nick }
Auf einem Live-Server nicht weniger! Ich glaube nicht, dass Sie dies mit einer anderen Plattform tun können. Zumindest nicht in der Arbeit eines Paares.