مفهوم async و sync در asp.net

در ابتدا لازم است به مفهوم Request Handler بپردازیم. هر Web Application یک  Request Handler دارد.

هنگامی که یک Request  وارد می‌شود؛ این handler مسئول پردازش و انجام فرایند تهیه Response مناسب آن و همچنین مسئول سپردن کار تهیه Data لازم برای Response به لایه‌های دیگر است.مفاهیم sync و async درباره نحوه کار این Request Handler هستند.

حالت Sync

Request Handler بعد از سپردن کار به واحدهای دیگر تا پایان کار تهیه Data توسط واحدهای دیگر و تولید Response (تا زمانیکه کار ریکوئست جاری به طور کامل تمام شود) ،  بدون انجام کار متوقف میشود و نمی‌تواند به Request وارد شده بعدی سرویس بدهد و بنابراین عملاً  تا پایان کار Request جاری به طور کامل متوقف می‌شود.

در این حالت Request Handler برای پردازش یک Request هیچ مشکلی ندارد؛ مشکل زمانی شروع می‌شود که تعداد Request ها از یک عدد بیشتر باشد.

در sync  کار یک Request به تنهایی سریعتر انجام میشود ولی متاسفانه بازدهی  Web Application شدیدا کاهش می یابد.

 Sync باعث ایجاد Delay بسیار زیاد در پردازش Request های بعدی می‌شود و یک صف طولانی از Request به وجود می آورد که زمان انتظار برای آنها به ترتیب تصاعد می‌خورد. این Delay به حدی زیاد می‌شود که Web Application کاملاً متوقف می‌شود.

در sync کار اصلی Request Handler در حالت Wait قرار می‌گیرند و  بازدهی Web Application را به حداقل ممکن می‌رساند.

 حالت ASync

در این حالت Request Handler بعد از سپردن کار Request جاری به واحدهای دیگر، متوقف نشده و به پردازش  Request بعدی می‌پردازد و این روند در طی کار Web Application ادامه می‌یابد و به این ترتیب بازدهی کل Web Application به طرز چشمگیری افزایش می یابد.

در این حالت سرعت کار هر Request  به دلیل اینکه با رسیدن نوبت پردازش آن ، Request Handler بیکار نیست و باید منتظر خالی شدن زمان Request Handler بماند به تنهایی تا حدودی کم می‌شود ولی به دلیل اینکه کار Request Handler به تولید Response وابسته نیست ، بازدهی

Web Application در پردازش به شکل چشمگیری افزایش می یابد.

در این حالت کار یا کارهای اصلی Request Handler در حالت await قرار می‌گیرند.لازم به یادآوری است که async از مدت‌ها پیش بخشی از asp.net بوده و استفاده از آن اختیاری میباشد  .

 در  برنامه نویسی Service Oriented به دلیل تعداد زیاد Request استفاده  از async الزامی است و امروزه تمام Task ها در Service از این حالت پیروی میکنند.

نحوه استفاده از async در asp.net

بوسیله دستور await  میتوان تعیین کرد کدام کار توسط request handler برای request های بعدی به شکل async انجام شود.

همچنین خروجی هر method باید از نوع Task باشد.

نویسنده: علی محمد بهمنیار

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

مجتمع فنی تهران

دپارتمان ICT