نوشتن صحیح کدهای ناهمزمان میتواند مقیاس پذیری وب API شما را به شدت بهبود بخشد. در این دوره آموزشی، نحوه و چرایی نوشتن کدهای همگام هنگام ایجاد ASP.NET Core 6 web API را یاد خواهید گرفت.
آنچه یاد خواهید گرفت:
شما یک API با ASP.NET Core ساختهاید. اکنون زمان آن رسیده است که یاد بگیرید چگونه مقیاس پذیری آن API را با ناهمزمان کردن آن بهبود دهید. در این دوره آموزشی، توسعه Asynchronous ASP.NET Core 6 Web API، یاد خواهید گرفت که چگونه این کار را با استفاده از کلمات کلیدی انتظار async انجام دهید. ابتدا، در مورد داخلیهای async await، و زمان و مکان استفاده از آن منطقی است. در مرحله بعد، نحوه آزمایش تأثیر نوشتن کدهای همگام را خواهید فهمید. در نهایت، همه چیز را در مورد پخش غیرهمگام، لغو، و مقابله با استثناها خواهید آموخت.
نمونه ویدیوی آموزشی ( زیرنویسها جدا از ویدیو است و میتوانید آنرا نمایش ندهید ) :
[ENGLISH]
01 Course Overview [2mins]
01-01 Course Overview [2mins]
02 Understanding the Power of Asynchronous Code [21mins]
02-01 Coming Up [2mins]
02-02 Positioning This Course [3mins]
02-03 Course Prerequisites and Tooling [2mins]
02-04 Introducing the Demo Project [1mins]
02-05 The Advantage of Asynchronous Code [4mins]
02-06 Handling Synchronous and Asynchronous Requests [3mins]
02-07 I/O Bound Versus Computational Bound Work [3mins]
02-08 Threads, Multithreading, Concurrency, Parallelism [2mins]
02-09 Summary [1mins]
03 Starting at the Bottom with Your Data Access Layer [40mins]
03-01 Coming Up [1mins]
03-02 The async / await Keywords [8mins]
03-03 Async Patterns: TAP, EAP, and APM [3mins]
03-04 Demo: Starting from Scratch with a DAL [10mins]
03-05 The Repository Pattern [3mins]
03-06 Demo: Designing a Repository Contract [3mins]
03-07 Contracts and Async Modifiers [3mins]
03-08 Demo: Implementing the Repository Contract [7mins]
03-09 Summary [2mins]
04 Asynchronously Reading Resources [44mins]
04-01 Coming Up [1mins]
04-02 Demo: Getting Resources [6mins]
04-03 Introducing WebSurge [1mins]
04-04 Demo: Using WebSurge to Test Async Code Improvements [9mins]
04-05 The Outer Facing Model [4mins]
04-06 Manipulating Output with an IAsyncResultFilter [4mins]
04-07 Demo: Creating a Custom AsyncResultFilter (Part 1) [4mins]
04-08 Demo: Adding and Configuring AutoMapper [6mins]
04-09 Demo: Creating a Custom AsyncResultFilter (Part 2) [8mins]
04-10 Summary [1mins]
05 Asynchronously Manipulating Resources [33mins]
05-01 Coming Up [1mins]
05-02 Demo: Creating a Resource [15mins]
05-03 Supporting Bulk Inserts [3mins]
05-04 Demo: Supporting Bulk Inserts [4mins]
05-05 Demo: Supporting a Location Header for Bulk Inserts [9mins]
05-06 Summary [1mins]
06 Supporting Asynchronous Streaming [13mins]
06-01 Coming Up [1mins]
06-02 A Few Words on Streaming [1mins]
06-03 Synchronous vs. Asynchronous Iteration [4mins]
06-04 Supporting Streaming with IAsyncEnumerable- [1mins]
06-05 Demo: Supporting Streaming with IAsyncEnumerable- [5mins]
06-06 Summary [1mins]
07 Dealing with Asynchronous Service Integrations and Supporting Cancellation [49mins]
07-01 Coming Up [1mins]
07-02 Demo: Asynchronously Integrating With an External Service [9mins]
07-03 Demo: Processing Multiple Service Calls Asynchronously, One-by-one [3mins]
07-04 Demo: Processing Multiple Service Calls Asynchronously, After Waiting for All of Them to Complete [3mins]
07-05 Parallel Processing vs. Asynchronous Processing [3mins]
07-06 Demo: Passing Multiple Objects to a Result Filter with ValueTuple [6mins]
07-07 Demo: Mapping Multiple Objects Into One [4mins]
07-08 Why Supporting Cancellation Matters [2mins]
07-09 Demo: Supporting Cancellation [5mins]
07-10 Demo: Supporting Cancellation When the Consumer Navigates Away [4mins]
07-11 Demo: Listening to Multiple Cancellation Tokens [3mins]
07-12 Handling Exceptions in Async Code [4mins]
07-13 Summary [2mins]
08 Additional Return Types and Avoiding Common Pitfalls [23mins]
08-01 Coming Up [1mins]
08-02 Additional Async Return Types [5mins]
08-03 Offloading Legacy Code to a Background Thread [1mins]
08-04 Demo: Wrapping Synchronous Code with Task.Run() [4mins]
08-05 Pitfall #1: Using Task.Run() on the Server [3mins]
08-06 Demo: Blocking Async Code [2mins]
08-07 Pitfall #2: Blocking Async Code [2mins]
08-08 Demo: Modifying Shared State [2mins]
08-09 Pitfall #3: Modifying Shared State [1mins]
08-10 Summary [2mins]
[فارسی]
01 بررسی اجمالی دوره [2 دقیقه]
01-01 بررسی اجمالی دوره [2 دقیقه]
02 درک قدرت کدهای ناهمزمان [21 دقیقه]
02-01 در راه است [2 دقیقه]
02-02 تعیین موقعیت این دوره [3 دقیقه]
02-03 پیش نیازهای دوره و ابزار [2 دقیقه]
02-04 معرفی پروژه آزمایشی [1 دقیقه]
02-05 مزیت کد ناهمزمان [4 دقیقه]
02-06 رسیدگی به درخواستهای همزمان و ناهمزمان [3 دقیقه]
02-07 I O Bound مقابل Computational Bound Work [3 دقیقه]
02-08 رشتهها، چند رشته ای، همزمانی، موازی [2 دقیقه]
02-09 خلاصه [1 دقیقه]
03 شروع از پایین با لایه دسترسی به داده شما [40 دقیقه]
03-01 در راه است [1 دقیقه]
03-02 کلمات کلیدی ناهمگام منتظر [8 دقیقه]
03-03 الگوهای همگام- TAP، EAP، و APM [3 دقیقه]
03-04 نسخهی نمایشی- شروع از ابتدا با DAL [10 دقیقه]
03-05 الگوی مخزن [3 دقیقه]
03-06 نسخهی نمایشی- طراحی قرارداد مخزن [3 دقیقه]
03-07 قراردادها و اصلاحکنندههای همگام [3 دقیقه]
03-08 نسخهی نمایشی- اجرای قرارداد مخزن [7 دقیقه]
03-09 خلاصه [2 دقیقه]
04 منابع خواندن ناهمزمان [44 دقیقه]
04-01 در راه است [1 دقیقه]
04-02 نسخهی نمایشی- دریافت منابع [6 دقیقه]
04-03 معرفی WebSurge [1 دقیقه]
04-04 نسخهی نمایشی- استفاده از WebSurge برای آزمایش بهبود کد Async [9 دقیقه]
04-05 مدل نمای بیرونی [4 دقیقه]
04-06 دستکاری خروجی با IAsyncResultFilter [4 دقیقه]
04-07 نسخهی نمایشی- ایجاد یک AsyncResultFilter سفارشی (قسمت 1) [4 دقیقه]
04-08 نسخهی نمایشی- افزودن و پیکربندی AutoMapper [6 دقیقه]
04-09 نسخهی نمایشی- ایجاد یک AsyncResultFilter سفارشی (بخش 2) [8 دقیقه]
04-10 خلاصه [1 دقیقه]
05 منابع دستکاری ناهمزمان [33 دقیقه]
05-01 در راه است [1 دقیقه]
05-02 نسخهی نمایشی- ایجاد یک منبع [15 دقیقه]
05-03 پشتیبانی از درجهای انبوه [3 دقیقه]
05-04 نسخهی نمایشی- پشتیبانی از درجهای انبوه [4 دقیقه]
05-05 نسخهی نمایشی- پشتیبانی از سرصفحه مکان برای درجهای انبوه [9 دقیقه]
05-06 خلاصه [1 دقیقه]
06 پشتیبانی از جریان ناهمزمان [13 دقیقه]
06-01 در راه است [1 دقیقه]
06-02 چند کلمه در مورد استریم [1 دقیقه]
06-03 تکرار همزمان در مقابل ناهمزمان [4 دقیقه]
06-04 پشتیبانی از جریان با IAsyncEnumerable«T» [1 دقیقه]
06-05 نسخهی نمایشی- پشتیبانی از جریان با IAsyncEnumerable«T» [5 دقیقه]
06-06 خلاصه [1 دقیقه]
07 مقابله با یکپارچهسازی سرویس ناهمزمان و پشتیبانی از لغو [49 دقیقه]
07-01 در راه است [1 دقیقه]
07-02 نسخهی نمایشی- ادغام ناهمزمان با یک سرویس خارجی [9 دقیقه]
07-03 نسخهی نمایشی- پردازش تماسهای چند سرویس به صورت ناهمزمان، یک به یک [3 دقیقه]
07-04 نسخهی نمایشی- پردازش تماسهای چند سرویس به صورت ناهمزمان، پس از انتظار برای تکمیل همه آنها [3 دقیقه]
07-05 پردازش موازی در مقابل پردازش ناهمزمان [3 دقیقه]
07-06 نسخهی نمایشی- ارسال چندین شی به یک فیلتر نتیجه با ValueTuple [6 دقیقه]
07-07 نسخهی نمایشی- نگاشت چندین شی در یک [4 دقیقه]
07-08 چرا حمایت از لغو اهمیت دارد [2 دقیقه]
07-09 نسخهی نمایشی- پشتیبانی از لغو [5 دقیقه]
07-10 نسخهی نمایشی- پشتیبانی از لغو زمانی که مشتری دور میشود [4 دقیقه]
07-11 نسخهی نمایشی- گوش دادن به چندین نشانه لغو [3 دقیقه]
07-12 رسیدگی به استثناها در کد Async [4 دقیقه]
07-13 خلاصه [2 دقیقه]
08 انواع بازگشت اضافی و اجتناب از دامهای رایج [23 دقیقه]
08-01 در راه است [1 دقیقه]
08-02 انواع دیگر بازگشت غیرهمگام [5 دقیقه]
08-03 بارگذاری کد قدیمی در یک موضوع پسزمینه [1 دقیقه]
08-04 نسخهی نمایشی- بستهبندی کد همزمان با Task.Run() [4 دقیقه]
08-05 دام شماره 1- استفاده از Task.Run() در سرور [3 دقیقه]
08-06 نسخهی نمایشی- مسدود کردن کد Async [2 دقیقه]
08-07 دام شماره 2- مسدود کردن کد Async [2 دقیقه]
08-08 نسخهی نمایشی- در حال تغییر وضعیت مشترک [2 دقیقه]
08-09 دام شماره 3- تغییر وضعیت مشترک [1 دقیقه]
08-10 خلاصه [2 دقیقه]
کوین داکس یک معمار راه حل آزاد، نویسنده و مشاور است که در آنتورپ (بلژیک) زندگی میکند. او عمدتاً بر روی معماری راهحل/برنامهها و امنیت برای برنامههای مبتنی بر وب (API) که با داتنت ساخته شدهاند، متمرکز است، اما او همچنین چشمانداز پیشرفتهای جدید مربوط به محصولات دیگر از پشته داتنت است. او MVP مایکروسافت و عضو هیئت مدیره انجمن RD MS است. او همچنین یک سخنران منظم در کنفرانسهای مختلف (بینالمللی) ملی و رویدادهای گروه کاربر است و روی پروژههای متن باز مختلف مانند Microsoft.AspNet.JsonPatch و Marvin.Cache.Headers کار میکند. کوین دوست دارد به جاهایی که قبلا ندیده سفر کند و در جمع چند دوست خوب از یک لیوان شراب خوب لذت میبرد.