بعد از این درس چه کاری میتوانی انجام بدهی؟
- جریان ثبت سفارش را انتهابهانتها طراحی کنی
- مرزهای لایهها را روشن نگه داری
- برای مسیر موفق و خطا تست بنویسی
C# را ساده بفهم
C# مثل یک کارگاه مهندسی با قراردادهای روشن است؛ نوعها، کلاسها و interfaceها کمک میکنند اجزای اپ، وبسرویس یا بازی جدا اما هماهنگ کار کنند.
status code بخشی از قرارداد محصول است؛ خطاهای دامنه را تصادفی به ۵۰۰ تبدیل نکن.
چرا مهم است؟ ورودی HTTP را به use case تبدیل میکند.
اولین تمرین تو: GET /orders/{id} را با پاسخ ۲۰۰ و ۴۰۴ طراحی و سپس یک integration test برای هر دو بنویس.
از یک مثال کوچک شروع کن
نسخه اول دو endpoint دارد: ثبت سفارش و دریافت با شناسه. DTO شبکه را از مدل دامنه جدا کن. validation، idempotency، وضعیت ناموجود و لغو عملیات را طراحی کن. تست واحد قانون و تست integration قرارداد HTTP را پوشش میدهد.
۱. قرارداد HTTP
ورودی، status و پاسخ خطا را پیش از کد مشخص کن.
۲. هسته قابل آزمون
OrderService بدون وابستگی به ASP.NET Core تست میشود.
۳. انتشار امن
تنظیمات محیط، health check، لاگ و migration را آماده کن.
status code بخشی از قرارداد محصول است؛ خطاهای دامنه را تصادفی به ۵۰۰ تبدیل نکن.
سه قطعهای که باید بفهمی
Endpoint
ورودی HTTP را به use case تبدیل میکند.
Application service
قانون و جریان کاربرد را هماهنگ میکند.
Persistence boundary
داده را از طریق قرارداد ذخیره میکند.
ثبت سفارش و دریافت وضعیت
کاربر اقلام را میفرستد، API ورودی را بررسی میکند، موجودی و مبلغ را میسنجد و نتیجه امن و قابل پیگیری برمیگرداند.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
بررسی ساختار تمرین
این صفحه کامپایلر کامل C# نیست؛ ساختار تمرین را صادقانه بررسی میکند و خروجی مورد انتظار را نشان میدهد. برای اجرای کامل به محیط رسمی همان زبان نیاز است.
یک بخش را تغییر بده و دکمه بررسی را بزن.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
GET /orders/{id} را با پاسخ ۲۰۰ و ۴۰۴ طراحی و سپس یک integration test برای هر دو بنویس.
این سه اشتباه را انجام نده
استفاده مستقیم DTO بهعنوان مدل دامنه
پنهانکردن همه خطاها با ۲۰۰
قرار دادن connection string در مخزن عمومی
با 5 سؤال مطمئن شو که مفهوم را گرفتهای
برای ساخت موفق منبع چه پاسخ مناسبی است؟
DTO شبکه چرا از مدل دامنه جداست؟
connection string کجا باید باشد؟
کدام روش نشان میدهد این درس را واقعاً فهمیدهای؟
کدام رفتار احتمال خطا را در همین موضوع بیشتر میکند؟
فهمیدی، تغییر دادی، نتیجه را توضیح دادی؟
فقط در این صورت درس را کامل کن و سراغ مرحله بعد برو.