এই প্রশ্নটি সি # ভাষা নিয়ে উদ্বেগ প্রকাশ করে তবে আমি এটি জাভা বা টাইপস্ক্রিপ্টের মতো অন্যান্য ভাষাগুলির কভার করার আশা করি।
মাইক্রোসফট .NET এ অ্যাসিক্রোনাস কলগুলি ব্যবহারের সর্বোত্তম অনুশীলনের প্রস্তাব দেয় । এই সুপারিশগুলির মধ্যে, আসুন দুটি বাছাই:
- অ্যাসিঙ্ক পদ্ধতির স্বাক্ষরটি পরিবর্তন করুন যাতে তারা টাস্ক বা টাস্ক <> (টাইপস্ক্রিপ্টে, এটি একটি প্রতিশ্রুতি <> হবে) ফেরত দেয়
- xxxAsync () দিয়ে শেষ হওয়ার জন্য অ্যাসিঙ্ক পদ্ধতির নাম পরিবর্তন করুন
এখন, অ্যাসিঙ্ক দ্বারা নিম্ন-স্তরের, সিঙ্ক্রোনাস উপাদানকে প্রতিস্থাপন করার সময়, এটি অ্যাপ্লিকেশনটির পুরো স্ট্যাককে প্রভাবিত করে। যেহেতু "সমস্ত উপায়ে" ব্যবহৃত হয় কেবলমাত্র async / প্রতীক্ষার ইতিবাচক প্রভাব রয়েছে, এর অর্থ হ'ল অ্যাপ্লিকেশনের প্রতিটি স্তরের স্বাক্ষর এবং পদ্ধতির নামগুলি অবশ্যই পরিবর্তন করতে হবে।
একটি ভাল আর্কিটেকচারে প্রায়শই প্রতিটি স্তরগুলির মধ্যে বিমূর্ততা স্থাপন করা জড়িত থাকে, যেমন অন্যের দ্বারা নিম্ন স্তরের উপাদানগুলি প্রতিস্থাপন করা উপরের স্তরের উপাদানগুলি অদৃশ্য। সি # তে বিমূর্ততা ইন্টারফেসের রূপ নেয়। যদি আমরা একটি নতুন, নিম্ন-স্তরের, অ্যাসিঙ্ক উপাদানটি প্রবর্তন করি, কল স্ট্যাকের প্রতিটি ইন্টারফেসকে হয় নতুন ইন্টারফেস দ্বারা পরিবর্তিত বা প্রতিস্থাপন করা দরকার। কোনও বাস্তবায়নকারী শ্রেণিতে যেভাবে সমস্যার সমাধান হয় (অ্যাসিঙ্ক বা সিঙ্ক) তা আর কলকারীদের কাছে গোপন (বিমূর্ত) হয় না। ফোনকারীদের এটি সিঙ্ক বা অ্যাসিঙ্ক কিনা তা জানতে হবে।
"ভাল আর্কিটেকচার" নীতিগুলির সাথে বিরোধী সেরা অভ্যাসগুলি কি অ্যাসিঙ্ক / অপেক্ষা করছে না?
এর অর্থ কি এই যে প্রতিটি ইন্টারফেসের (আইইনিউমারেবল, আইডাটাএ্যাক্সেসলায়ার বলুন) তাদের অ্যাসিঙ্ক কাউন্টার পার্টের (আইএসিএনসিউইনামেবল, আইএসিএনসিডিটাএ্যাকসেসলায়ার) এর দরকার যেমন এ্যাসিঙ্ক নির্ভরতাগুলিতে স্যুইচ করার সময় এগুলি স্ট্যাকে প্রতিস্থাপন করা যেতে পারে?
আমরা যদি সমস্যাটিকে আরও খানিকটা ধাক্কা দিই, তবে প্রতিটি পদ্ধতিকে async (কোনও টাস্ক <> বা প্রতিশ্রুতি <> ফেরত পাঠানো) হিসাবে গ্রহণ করা সহজ হবে না, এবং পদ্ধতিগুলি না আসলে যখন তারা আসনক কলগুলি সিঙ্ক্রোনাইজ করে to ASYNC? ভবিষ্যতের প্রোগ্রামিং ভাষা থেকে এটি কি আশা করা যায়?
CancellationToken
, এবং যারা ডিফল্ট সরবরাহ করতে চায়)। বিদ্যমান সিঙ্ক পদ্ধতিগুলি (এবং সক্রিয়ভাবে সমস্ত কোড ভঙ্গ করা) অপসারণ একটি সুস্পষ্ট নন-স্টার্টার।