На моєму досвіді не тільки життєздатний, але й справді хороший. Я розробив кілька серверів MMO, використовуючи C #, і мушу сказати, що ніколи не шкодував про вибір мови та платформи.
Існує велика кількість чудових бібліотек та інструментів для C # і .NET в цілому - мережа, ведення журналів, O / R картування тощо. І, порівняно з Java C #, це більш виразно і менш багатослівно (хоча деякі люди можуть про це сперечатися, хоча .. )
"Накладні витрати" GC, які лякають деяких людей, насправді не є проблемою, якщо ви не зловживаєте цим мільярдами асигнувань в секунду. Як приклад, наш поточний сервер виділяє до 50 мб / секунду під великим навантаженням, а 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 }
На живому сервері не менше! Я не думаю, що ви можете це зробити з будь-якою іншою платформою. Принаймні, не за пару днів роботи.