פעולות אסינכרוניות בצד קליינט נועדו לדוגמה בשביל הסיבות הבאות:
1. בשביל לא לתקוע את ה-ui thread בזמן המתנה לתשובה מהשירות ובכך לגרום לאפליקציה להראות תקועה (מסך קפוא).
2. בשביל להריץ כמה בקשות במקביל מכמה שירותים, כאשר אין תלות ביניהם, בשביל לחסוך זמן
פעולות אסינכרוניות בצד שרת (ב-contract) נועדו בעיקר למצבים בהם רוצים לפנות threads כאשר מבצעים פעולות io כגון פניה לדיסק או לרשת (עבודה עם קבצים, DB, קריאה לשירות אחר ברשת) - מצבים בהם רוב העבודה היא IO ולא CPU. במקרים כאלו עבודת ה-IO יכולה להתבצע ברקע ללא
thread מה-threadpool (לרוב פעולות אלו יש קריאות אסינכרוניות) באמצעות contract אסינכרוני ולקבל חזרה thread כאשר הפעולה מסתיימת. מצב זה מאפשר חסכון במשאבי השירות (threads בעיקר).
Please mark posts as answers/helpful if it answers your question.
Senior Consultant on WCF, ASP.NET, Siverlight, and Entity Framework. Author of Microsoft's Official WCF 4 Course. Co-author of the Microsoft HPC/Azure burst whitepaper.
Visit my blog: http://blogs.microsoft.co.il/blogs/idof