Tecrübelerime göre sadece uygulanabilir değil aynı zamanda gerçekten de iyi. C # kullanarak birkaç MMO sunucusu geliştirdim ve dilden ve platform seçiminden asla pişman olmadığımı söylemeliyim.
Genel olarak C # ve .NET için pek çok harika kütüphane ve araç var - ağ, günlüğe kaydetme, O / R haritalama, vb. )
Bazı insanları korkutan GC "yükü", saniyede milyarlarca tahsisatla kötüye kullanmadığınız sürece, gerçekten bir sorun değildir. Örnek olarak, mevcut sunucumuz ağır yük altında saniyede 50 mb / sn hıza sahiptir ve GC fark edilebilir bir gecikme sağlamamaktadır. Stratejik yerlerde nesne havuzlama kullanmak zorunda kaldık - en önemlisi, ağ paketlerini temsil eden nesneler havuzlanmış ve çöp toplamayanlar. Yine de, havuzlama kapalı olsa bile, GC en büyük sorun değildir.
C # 'ın ne kadar soğuk olduğuna bir örnek olarak, son zamanlarda uyguladığımız şey bu. Sunucumuz, oyun istemcisinin kritik olmayan görevler için kullandığı birçok WCF servisi kullanıyor ve bunları sunucu yönetimi için de kullanıyoruz. Görünüşe göre, oyun nesnelerimizi arayan kişiye geri döndürmek için bir WCF servisi yapmak çok kolaydır. Biz de tam bunu yaptık, sonra sunucumuza bağlanan LINQPad'e küçük bir eklenti yaptık - ve şimdi şu gibi sorguları çalıştırabiliriz:
from character in Service.GetOnlineCharacters()
where character.LocationManager.LocationId==5 && character.Attributes.Level<10
select new { character.Id, character.Nick }
Canlı bir sunucuda, daha az değil! Bunu başka bir platformla yapabileceğini sanmıyorum. En azından birkaç günlük işte değil.