मेरे अनुभव में न केवल व्यवहार्य, बल्कि वास्तव में अच्छा है। मैंने C # का उपयोग करके कई MMO सर्वर विकसित किए हैं, और मुझे यह कहना चाहिए कि मुझे भाषा और मंच की पसंद पर कभी पछतावा नहीं हुआ।
सामान्य रूप से C # और .NET के लिए बहुत सारे महान पुस्तकालय और उपकरण हैं - नेटवर्क, लॉगिंग, O / R मैपिंग, आदि। और, जावा C # की तुलना में अधिक अभिव्यंजक और कम क्रिया है (कुछ लोग इस बारे में बहस कर सकते हैं, हालांकि .. )
जीसी "ओवरहेड" जो कुछ लोगों को डराता है वास्तव में एक मुद्दा नहीं है, जब तक कि आप प्रति सेकंड अरबों के आवंटन के साथ इसका दुरुपयोग न करें। एक उदाहरण के रूप में, हमारा वर्तमान सर्वर भारी लोड के तहत 50 एमबी / सेकंड तक आवंटित करता है, और जीसी किसी भी ध्यान देने योग्य अंतराल का परिचय नहीं देता है। हमें रणनीतिक स्थानों में ऑब्जेक्ट पूलिंग का उपयोग करना था, हालांकि - सबसे महत्वपूर्ण बात, नेटवर्क पैकेट का प्रतिनिधित्व करने वाले ऑब्जेक्ट पूल किए गए हैं और कचरा-एकत्र नहीं किए गए हैं। फिर भी, पूलिंग बंद होने के बावजूद, जीसी सबसे बड़ी समस्या नहीं है।
C # कितना कूल है, इसका एक उदाहरण है, यह वही है जिसे हमने हाल ही में लागू किया है। हमारा सर्वर कई WCF सेवाएँ चलाता है, जो गेम क्लाइंट गैर-समय-महत्वपूर्ण कार्यों के लिए उपयोग करता है, और हम उन्हें सर्वर प्रशासन के लिए भी उपयोग करते हैं। यह पता चला है, कॉल करने के लिए हमारे गेम ऑब्जेक्ट को बस वापस करने के लिए WCF सेवा बनाना बहुत आसान है। तो हमने बस यही किया, फिर LINQPad के लिए एक छोटा सा प्लगइन बनाया जो हमारे सर्वर से जुड़ता है - और अब हम जैसे प्रश्नों को चला सकते हैं
from character in Service.GetOnlineCharacters()
where character.LocationManager.LocationId==5 && character.Attributes.Level<10
select new { character.Id, character.Nick }
एक लाइव सर्वर पर, कोई कम नहीं! मुझे नहीं लगता कि आप किसी अन्य प्लेटफॉर्म के साथ ऐसा कर सकते हैं। कम से कम दो दिन के काम में नहीं।