私の経験では、実行可能であるだけでなく、本当に優れています。C#を使用して複数のMMOサーバーを開発しましたが、言語とプラットフォームの選択を決して後悔したことはありません。
ネットワーク、ロギング、O / Rマッピングなど、C#および.NET向けの優れたライブラリとツールは多数あります。また、Java C#と比較すると、表現力が豊かで冗長ではありません(ただし、これについて議論する人もいます)。 )
一部の人々を怖がらせるGCの「オーバーヘッド」は、1秒間に何十億もの割り当てでそれを悪用しない限り、実際には問題ではありません。例として、現在のサーバーは、高負荷下で最大50 mb /秒を割り当てますが、GCは目立った遅れを引き起こしません。ただし、戦略的な場所ではオブジェクトプーリングを使用する必要がありました。最も重要なことは、ネットワークパケットを表すオブジェクトがプールされ、ガベージコレクションされないことです。それでも、プーリングをオフにしても、GCは最大の問題ではありません。
C#がいかに優れているかの例として、これが最近実装したものです。私たちのサーバーはいくつかのWCFサービスを実行します。ゲームクライアントはそれを非時間重視のタスクに使用し、サーバー管理にも使用します。結局のところ、WCFサービスを作成してゲームオブジェクトを単に呼び出し元に返すのは非常に簡単です。そのため、私たちはそれを実行し、サーバーに接続するLINQPadに小さなプラグインを作成しました。これで、次のようなクエリを実行できます。
from character in Service.GetOnlineCharacters()
where character.LocationManager.LocationId==5 && character.Attributes.Level<10
select new { character.Id, character.Nick }
稼働中のサーバーでは、劣らずです!他のプラットフォームではこれができないと思います。少なくともカップルの日の仕事ではありません。