Không chỉ khả thi, nhưng thực sự tốt, theo kinh nghiệm của tôi. Tôi đã phát triển một số máy chủ MMO bằng C # và tôi phải nói rằng tôi chưa bao giờ hối hận về việc lựa chọn ngôn ngữ và nền tảng.
Có rất nhiều thư viện và công cụ tuyệt vời cho C # và .NET nói chung - mạng, ghi nhật ký, ánh xạ O / R, v.v. Và, so với Java C # thì biểu cảm hơn và ít dài dòng hơn (mặc dù một số người có thể tranh luận về điều này .. )
"Chi phí" của GC khiến một số người sợ hãi không thực sự là một vấn đề, trừ khi bạn tình cờ lạm dụng nó với hàng tỷ phân bổ mỗi giây. Ví dụ, máy chủ hiện tại của chúng tôi phân bổ tối đa 50 mb / giây dưới tải nặng và GC không đưa ra bất kỳ độ trễ đáng chú ý nào. Tuy nhiên, chúng tôi đã phải sử dụng nhóm đối tượng ở các vị trí chiến lược - quan trọng nhất là các đối tượng đại diện cho các gói mạng được gộp chung và không được thu gom rác. Tuy nhiên, ngay cả khi tắt pooling, GC không phải là vấn đề lớn nhất.
Như một ví dụ về mức độ tuyệt vời của C #, đây là những gì chúng tôi đã thực hiện gần đây. Máy chủ của chúng tôi chạy một số dịch vụ WCF, ứng dụng khách trò chơi sử dụng cho các nhiệm vụ không quan trọng về thời gian và chúng tôi cũng sử dụng chúng cho quản trị máy chủ. Hóa ra, thật dễ dàng để tạo một dịch vụ WCF chỉ đơn giản là trả lại các đối tượng trò chơi của chúng tôi cho người gọi. Vì vậy, chúng tôi đã làm điều đó, sau đó tạo một plugin nhỏ cho LINQPad kết nối với máy chủ của chúng tôi - và bây giờ chúng tôi có thể chạy các truy vấn như
from character in Service.GetOnlineCharacters()
where character.LocationManager.LocationId==5 && character.Attributes.Level<10
select new { character.Id, character.Nick }
Trên một máy chủ trực tiếp, không ít! Tôi không nghĩ bạn có thể làm điều này với bất kỳ nền tảng nào khác. Không phải trong công việc vài ngày, ít nhất.