Не только жизнеспособный, но действительно хороший, по моему опыту. Я разработал несколько 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 }
На живом сервере не меньше! Я не думаю, что вы можете сделать это с любой другой платформой. По крайней мере, не на пару дней работы.