Não apenas viável, mas muito bom, na minha experiência. Desenvolvi vários servidores MMO usando C # e devo dizer que nunca me arrependi da escolha de idioma e plataforma.
Existem muitas ótimas bibliotecas e ferramentas para C # e .NET em geral - rede, registro, mapeamento de O / R, etc. E, comparado ao Java C #, é mais expressivo e menos detalhado (algumas pessoas podem argumentar sobre isso. )
A "sobrecarga" do GC que assusta algumas pessoas não é realmente um problema, a menos que você o abuse com bilhões de alocações por segundo. Como exemplo, nosso servidor atual aloca até 50 mb / segundo sob carga pesada, e o GC não apresenta nenhum atraso perceptível. Porém, tivemos que usar o pool de objetos em locais estratégicos - o mais importante é que os objetos que representam pacotes de rede são agrupados e não coletados pelo lixo. Mesmo assim, mesmo com o pool desativado, o GC não é o maior problema.
Como um exemplo de quão legal é o C #, foi isso que implementamos recentemente. Nosso servidor executa vários serviços WCF, que o cliente do jogo usa para tarefas que não são críticas em termos de tempo, e também os usamos para administração do servidor. Acontece que é muito fácil criar um serviço WCF para simplesmente devolver nossos objetos de jogo ao chamador. Fizemos exatamente isso e criamos um pequeno plugin para o LINQPad que se conecta ao nosso servidor - e agora podemos executar consultas como
from character in Service.GetOnlineCharacters()
where character.LocationManager.LocationId==5 && character.Attributes.Level<10
select new { character.Id, character.Nick }
Em um servidor ativo, nada menos! Eu não acho que você pode fazer isso com qualquer outra plataforma. Não no trabalho de dois dias, pelo menos.