내 경험에서 실용적 일뿐만 아니라 정말 좋습니다. C #을 사용하여 여러 MMO 서버를 개발했으며 언어 및 플랫폼 선택을 후회하지 않았다고 말해야합니다.
C # 및 .NET에는 네트워크, 로깅, O / R 매핑 등과 같은 훌륭한 라이브러리와 도구가 많이 있습니다. Java C #에 비해 표현력이 뛰어나고 덜 장황합니다 (일부 사람들은 이에 대해 논쟁 할 수 있습니다 ..) )
초당 수십억 개의 할당으로 남용하지 않는 한 일부 사람들을 두려워하는 GC "오버 헤드"는 실제로 문제가되지 않습니다. 예를 들어, 현재 서버는 과부하시 최대 50mb / 초를 할당하며 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 }
라이브 서버에서! 다른 플랫폼에서는이 작업을 수행 할 수 없다고 생각합니다. 적어도 며칠은 일하지 않습니다.