نوشته شده توسط
hakim22
اگه ساده بگیم سایتی که با ASP طراحی میشه روی IIS کار میکنه. فرض کنید این IIS مثل یک ایستگاه قطار باشه. و هر درخواست یک قطار. که باید مسافرشو خالی کنه و مسافر جدید سوار کنه و بره و نوبت قطار بعدی برسه.
وقتی درخواستی دارید که خیلی سبکه و فشار زیادی روی سروی نمیاره میتوانید به دنبال هم به سرور بفرستید. چون کار هر قطار خیلی سریع تموم میشه (در چند هزارم ثانیه) عملا بقیه قطارها معطل نمیشن و نوبتشون زود میرسه. وقتی کار خالی کردن و سوار کردن یک قطار خیلی طول میکشه بهتره که دو خط یا چند خط دیگه برای پیاده شدن و سوار شدن قطارها ایجاد بشه. در واقع چند صف موازی کنار هم باشن که قطارها کمتر در صف معطل بشن.
درسته که داشتن چند صف به صورت همزمان باعث میشه وقت هر قطار در ایستگاه کمتر تلف بشه ولی در عوض فشار بیشتری به سیستم میاره. عملا باید برای حجم بیشتری از مسافری که پیاده میشه و میخواد سوار بشه فضا وجود داشته باشه (منابع سیستم) . به این معنی که داشتن صف های موازی زیاد هم خوب نیست.
به طور کلی وقتی کاری زیاد طول نمیکشه نیازی به استفاده از Async ندارید. کارها خیلی وقتها سریع انجام میشوند و موازی سازی خودش برای سیستم هزینه هایی داره. ولی وقتی که درخواست ممکنه طولانی باشه باید از این روش استفاده کرد.
مثلا در سایت شما کاربرها میتونن پیامک ارسال کنند. شما برای ارسال پیامک از وب سرویس استفاده میکنید. وقتی یک کاربر درخواست ارسال پیامک میده شما درخواستی به سرور مربوطه ارسال میکنید. تا زمانی که جواب از وب سرویس پیامک برنگرده کاربر دیگری نمیتونه پیامک ارسال کنه. مگر اینکه متد به صورت Async باشه.
کلا وقتی کاری ممکنه زیاد طول بکشه از Async استفاده کنید. استفاده از وب سرویس های بیرونی یا کار با فایل و عملیات محاسباتی و ...