ASP.NET কোর সম্পর্কিত কনফিগারওয়েট (মিথ্যা)?


106

আমি গিটহাবে একটি ইস্যুতে ( https://github.com/HTBox/allReady/issues/1313 ) হোঁচট খেয়েছি যেখানে তারা ConfigureAwait(false)কোডটি আউট করার বিষয়ে আলোচনা করেছিল, দাবি করে যে, এএসপি.নেট কোর

কলটি ConfigureAwait(false)অনর্থক এবং কিছুই করে না

সেরাটি আমি এখানে খুঁজে পেতে পারি একটি উত্তরে "পার্শ্ব নোট" (স্টিফেন ক্লিয়ারি, https://stackoverflow.com/a/40220190/2805831 থেকে ) তা বলছে যে

এএসপি.নেট কোরটির আর "প্রসঙ্গ" নেই

সুতরাং, এএসপি.নেট কোরে কী ConfigureAwait(false)সত্যিই অপ্রয়োজনীয় (পুরো নেট নেট ফ্রেমওয়ার্ক ব্যবহার করেও)? এটির কিছু ক্ষেত্রে পারফরম্যান্সে সত্যিকার অর্থে কি লাভ / ফলাফলের ক্ষেত্রে পার্থক্য রয়েছে?

সম্পাদনা: আমি যদি এটিকে কনসোল অ্যাপ্লিকেশন হিসাবে বা আইআইএসে হোস্ট করছি তবে এই দিকটি থেকে কী আলাদা?


4
এটি নির্ভর করে আপনি কোথায় এটি ব্যবহার করার পরিকল্পনা করেছিলেন। আপনি যদি এটি সরাসরি আপনার এএসপি.নেট কোর অ্যাপ্লিকেশনটিতে ব্যবহার করতে চান, তবে আপনাকে এটি কল করতে হবে না (আপনাকে এএসপি.নেট লিগ্যাসিতে iirc নয়, এটি কল করতে হয়নি)। তবে আপনি যদি কোনও লাইব্রেরি লিখেন তবে আপনার সর্বদা ব্যবহার করা উচিত ConfigureAwait(false), কারণ গ্রন্থাগারটি বিভিন্ন অ্যাপ্লিকেশন (এএসপি.এনইটি কোর, ডাব্লুপিএফ, ইউডাব্লুপি, কনসোল ইত্যাদি) গ্রাস করতে পারে
Tseng

4
এএসপি.নেট কোর ডিফল্টরূপে কনসোল অ্যাপ্লিকেশন হিসাবে চালিত হয় এবং এএফএআইআইকি কনসোল অ্যাপ্লিকেশনগুলির একটি সিঙ্ক্রোনাইজেশন কনটেক্সট নেই, সুতরাং হ্যাঁ, এটি পুরো ফ্রেমওয়ার্ক সহ একটি ডিফল্ট এএসপি.নেট কোর অ্যাপ্লিকেশনটির পক্ষে যুক্তিসঙ্গত বলে মনে হচ্ছে।
জো হোয়াইট

@ জোওহাইট ঠিক আছে, প্রশ্নটি সম্পাদনা করেছেন। আমার এএসপি.নেট কোর অ্যাপটি আইআইএসে থাকলে এটি কী আলাদা?
পেড্রো লরেন্টজ

4
আইআইএস-এ চলমান একটি এএসপি.নেট কোর অ্যাপটি এখনও কনসোল অ্যাপ্লিকেশন হিসাবে চলছে - কেবলমাত্র পার্থক্য হ'ল আইআইএস আপনার অ্যাপ্লিকেশনটির সূচনা এবং বন্ধ করে দিচ্ছে (ঠিক একইভাবে এটি এএসপি.নেট কর্মী প্রক্রিয়াটির উদাহরণগুলি পরিচালনা করতে পারে) ক্লাসিক এএসপি.এনইটি)। এটি আপনার ASP.NET অ্যাপের অভ্যন্তরে কোনও থ্রেড সম্পর্কিত আচরণ পরিবর্তন করবে না। (আমি "ডিফল্টরূপে" নির্দিষ্ট করার একমাত্র কারণটি হ'ল আপনি উদাহরণস্বরূপ, একটি জিইউআই অ্যাপ্লিকেশনটির মধ্যে এএসপি.নেট কোর হোস্ট করতে পারেন , এবং সেই ক্ষেত্রে আপনাকে সিঙ্ক্রোনাইজেশন প্রসঙ্গে চিন্তা করতে হবে ))
জো হোয়াইট

নোট ConfigureAwait(false), যখন প্রাসঙ্গিক ASP.NET সর্বোত্তম, কোন মানে হয় প্রয়োজনীয় । এটি একটি ট্রেডঅফ: এটি কিছু সিঙ্ক-ওভার-অ্যাসিঙ্ক ডেডলকগুলি হ্রাস করে (যা ডিজাইনের ত্রুটিগুলি যেভাবেই হয় - কেউ কিছু বোবা না করলে তাদের উপস্থিতি নেই) এবং মাঝে মাঝে প্রসঙ্গে পুনরায় লোড না করে ~ মাইক্রোসেকেন্ডের কার্যকারিতা বৃদ্ধি করে। প্রসঙ্গের উপর নির্ভর করতে না পারার ব্যয় এবং ConfigureAwaitআপনার কোডের মাধ্যমে সমস্ত কিছু রয়েছে। stackoverflow.com/questions/28221508/…
ডেক্স ফহল

উত্তর:


113

ConfigureAwaitকেবলমাত্র SynchronizationContextএএসপি.নেট কোরের (ASP.NET "লিগ্যাসি" করেনি) এর প্রসঙ্গে কোড চলমান ক্ষেত্রে প্রভাব রয়েছে ।

সাধারণ উদ্দেশ্য কোডটি এখনও এটি ব্যবহার করা উচিত কারণ এটি কোনও সাথে চলতে পারে SynchronizationContext

এএসপি.নেট কোর সিঙ্ক্রোনাইজেশন কনটেক্সট


19
কেবল একটি সামান্য ব্যাখ্যা দিতে চাই, একটি নন-কোর পরিবেশে এএসপি.এনইটি-র একটি সিঙ্ক প্রসঙ্গ রয়েছে, তবে এএসপি.এনইটি কোর নেই।
স্কট চেম্বারলাইন

@ মোরগাদো, আইআইএস-এ অ্যাপটি হোস্ট করা হলেও এটি কি সত্য?
পেড্রো লরেন্টজ

7
আইএস-তে একটি এএসপি.এনইটি কোর অ্যাপ হোস্ট করা হয় না। আইআইএস ঠিক বিপরীত প্রক্সি হিসাবে কাজ করছে।
পাওলো মোরগাদো

4
আমি স্টিফেন ক্লিয়ারির একটি সাম্প্রতিক পোস্ট দিয়ে উত্তর আপডেট করেছি। তবে, হ্যাঁ, এএসপি.নেট কোর হ'ল এএসপি.নেট কোর।
পাওলো মোরগাদো

14
নিবন্ধ এটি এখন একটি পুরানো পোস্টের প্রশংসা করুন কিন্তু স্টিফেন ক্লিয়ারি উপরে পোলো যে লিঙ্কটি লিঙ্ক করেছেন তার একটি প্রশ্নের মধ্যে এটিকে পরিষ্কার করে দিয়েছেন। "এটি কাঠামো (এএসপি.এনইটি ক্লাসিকের বিপরীতে এএসপি.নেট কোর) যা সিঙ্ক্রোনাইজেশন কনটেক্সট নির্ধারণ করে, রানটাইম নয় (.NET কোর .NET 4.6.2 এর বিপরীতে)"
গ্যাভিন সুদারল্যান্ড

14

এই সম্পর্কে কি?

এই মুহুর্তে (ফেব্রুয়ারি -2020) এমএস ব্লগের বিকাশকারীরা কর্মক্ষমতা উন্নত করতে, অচলাবস্থা এড়াতে কনফিগারআউট (মিথ্যা) ব্যবহার করার পরামর্শ দেয়। https://devblogs.microsoft.com/dotnet/configureawait-faq/

আমি শুনেছি কনফিগারঅয়েট (মিথ্যা) .NET কোর-তে আর দরকার নেই। সত্য? মিথ্যা। .NET কোর চলার সময় এটি ঠিক একই কারণের জন্য। নেট ফ্রেমওয়ার্কে চালানোর প্রয়োজন হয়। এক্ষেত্রে কিছুই বদল হয়নি।


যদি কিছু ব্যবহারকারীর কোড (বা আপনার অ্যাপ্লিকেশনটি ব্যবহার করছে এমন অন্য লাইব্রেরি কোড) একটি কাস্টম প্রসঙ্গ সেট করে এবং আপনার কোডটি কল করে, বা কোনও কাস্টম টাস্কশেডুলারকে নির্ধারিত টাস্কে আপনার কোডটি আহ্বান করে, তবে এএসপি.নেট কোরেও আপনার অপেক্ষাগুলি একটি অ- ডিফল্ট প্রসঙ্গ বা সময়সূচী যা আপনাকে কনফিগারআউট (মিথ্যা) ব্যবহার করতে চাইবে। অবশ্যই, এইরকম পরিস্থিতিতে আপনি যদি একযোগে ব্লক করা এড়ানো (যা ওয়েব অ্যাপগুলিতে নির্বিশেষে করা এড়ানো উচিত) এড়িয়ে চলেন এবং যদি আপনি এইরকম সীমিত ঘটনায় ছোট্ট পারফরম্যান্সের ওভারহেডগুলিকে আপত্তি না করেন তবে আপনি সম্ভবত কনফিগারআউট (মিথ্যা) ব্যবহার না করেই পালিয়ে যেতে পারবেন ।
অ্যালিসন

4
সেই অনুসারে, আমি বেশিরভাগ ক্ষেত্রে এটির প্রয়োজন হয় না বলি। আপনি যদি কোনও কাস্টম সিঙ্ক্রোনাইজেশন প্রসঙ্গ ব্যবহার না করেন বা এমন কোনও লাইব্রেরি ব্যবহার না করেন তবে।
অ্যালিসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.