আমার অভিজ্ঞতায় কেবল কার্যকর নয়, তবে সত্যিই ভাল। আমি সি # ব্যবহার করে বেশ কয়েকটি এমএমও সার্ভার বিকাশ করেছি এবং আমি অবশ্যই বলব যে ভাষা এবং প্ল্যাটফর্মের পছন্দ নিয়ে আমি কখনও আফসোস করি না।
সাধারণভাবে সি # এবং .NET- এর জন্য প্রচুর দুর্দান্ত লাইব্রেরি এবং সরঞ্জাম রয়েছে - নেটওয়ার্ক, লগিং, ও / আর ম্যাপিং ইত্যাদি And এবং, জাভা সি # এর তুলনায় আরও অভিব্যক্তিপূর্ণ এবং কম শব্দাবলীর (কিছু লোক যদিও এই বিষয়ে তর্ক করতে পারে) )
কিছু লোককে ভয় দেখায় এমন জিসি "ওভারহেড" আসলেই সমস্যা নয়, যদি না আপনি প্রতি সেকেন্ডে কয়েক বিলিয়ন বরাদ্দ দিয়ে অপব্যবহার করে থাকেন। উদাহরণস্বরূপ, আমাদের বর্তমান সার্ভারটি ভারী বোঝার অধীনে 50 এমবি / সেকেন্ড অবধি বরাদ্দ করে এবং জিসি কোনও লক্ষণীয় ল্যাগ প্রবর্তন করে না। কৌশলগত জায়গাগুলিতে আমাদের অবজেক্ট পুলিং ব্যবহার করতে হবে, যদিও - সর্বাধিক গুরুত্বপূর্ণ, নেটওয়ার্ক প্যাকেটগুলির প্রতিনিধিত্বকারী অবজেক্টগুলি পোল্ড করা হয় এবং আবর্জনা-সংগ্রহ করা নয়। তবুও, পুলিং বন্ধ থাকা সত্ত্বেও, জিসি সবচেয়ে বড় সমস্যা নয়।
সি # কতটা দুর্দান্ত তার উদাহরণ হিসাবে আমরা সম্প্রতি এটি প্রয়োগ করেছি। আমাদের সার্ভারটি বেশ কয়েকটি ডাব্লুসিএফ পরিষেবা চালায় যা গেমের ক্লায়েন্ট অ-সময়-সমালোচনামূলক কাজের জন্য ব্যবহার করে এবং আমরা সেগুলি সার্ভার প্রশাসনের জন্যও ব্যবহার করি। দেখা যাচ্ছে, আমাদের গেমের সামগ্রীগুলিকে কেবল কলারে ফিরিয়ে দেওয়ার জন্য ডাব্লুসিএফ পরিষেবা করা খুব সহজ। সুতরাং আমরা ঠিক এটি করেছি, তারপরে লিনিক্যপ্যাডে একটি ছোট্ট প্লাগইন তৈরি করেছি যা আমাদের সার্ভারের সাথে সংযোগ স্থাপন করে - এবং এখন আমরা এই জাতীয় অনুসন্ধান চালাতে পারি
from character in Service.GetOnlineCharacters()
where character.LocationManager.LocationId==5 && character.Attributes.Level<10
select new { character.Id, character.Nick }
একটি লাইভ সার্ভারে, কম না! আমি মনে করি না যে আপনি এটি অন্য কোনও প্ল্যাটফর্মের মাধ্যমে করতে পারেন। দু'দফা কাজের জন্য না, অন্তত।