دوره API نویسی اصولی و حرفه ای در ASP.NET Core
در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP.NET Core بررسی شده اند.
سورس کامل پروژه نهایی دوره در گیتهاب در دسترس عموم قرار گرفته است.
تکنولوژی، ابزار ها و قابلیت ها
در این دوره سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده شود. همچنین Best Practice های پرفرمنسی و امنیتی بعلاوه تکنیک های پرکاربرد را بررسی و در قالب یک معماری حرفه ای و اصولی استفاده می کنیم.
- لایه بندی اصولی پروژه (Project Layering and Architecture) : در این دوره لایه بندی اصولی یک پروژه را از ابتدا شروع و هر بخش را بررسی می کنیم. همچنین مباحث Repository و UOW رو هم بررسی می کنیم.
- احراز هویت (Authentication)
- ASP.NET Core Identity : احراز هویت توسط Identity + سفارشی سازی
- (Json Web Token) JWT : احراز هویت توسط Jwt + یکپارچه سازی آن با Identity
- (Json Web Encryption) JWE : ایمن سازی توکن ها بوسیله رمزنگاری توکن (JWE)
- Security Stamp : جلوگیری از اعتبارسنجی توکن به هنگام تغییر دسترسی های کاربر جهت امنیت بیشتر
- Claims : کار با Claim ها و تولید خودکار آنها توسط ClaimsFactory
- Logging (ثبت خطا ها)
- Elmah : استفاده از Elmah برای لاگ خطا ها در Memory, XML File و Database
- NLog : استفاده از NLog برای لاگ خطا ها در File و Console
- Custom Middleware : نوشتن یک میدلویر سفارشی جهت لاگ تمامی خطا (Exception) ها
- Custom Exception : نوشتن Exception برای مدیریت ساده تر خطا ها
- Sentry : ثبت خطا ها در سیستم مدیریت لاگ sentry.io (مناسب برای پروژه های بزرگ)
- تزریق وابستگی (Dependency Injection)
- ASP.NET Core IOC Container : استفاده از Ioc container داخلی Asp Core
- Autofac : استفاده از محبوب ترین کتابخانه Autofac (Ioc Container)
- Auto Registeration : ثبت خودکار سرویس ها توسط یک تکنیک خلاقانه با کمک Autofac
- ارتباط با دیتابیس (Data Access)
- Entity Framework Core : استفاده از EF Core
- Auto Entity Registration : ثبت Entity های DbContext به صورت خودکار توسط Reflection
- Pluralizing Table Name : جمع بندی نام جداول EF Core به صورت خودکار توسط کتابخانه Pluralize.NET و Reflection
- Automatic Configuration : اعمال کانفیگ های EntityTypeConfiguration (FluentApi) به صورت خودکار توسط Reflection
- Sequential Guid : بهینه سازی مقدار دهی identity برای Guid به صورت خودکار توسط Reflection
- Repository : توضیحاتی در مورد معماری اصولی Repository در EF Core
- Data Intitializer : یک معماری اصولی برای Seed کردن مقادیر اولیه به Database
- Auto Migrate : آپدیت Database به آخرین Migration به صورت خودکار
- Clean String : اصلاح و یک دست سازی حروف "ی" و "ک" عربی به فارسی و encoding اعداد فارسی در DbContext به صورت خودکار به هنگام SaveChanges
- Versioning : نسخه بندی و مدیریت نسخه های پروژه + سفارشی سازی و ایجاد یک معماری حرفه ای
- ابزار (Swashbuckle) Swagger
- Swagger UI : ساخت یک ظاهر شکیل به همراه داکیومنت Aciton ها و Controller های پروژه و امکان تست API ها توسط Swagger UI
- Versioning : یکپارچه سازی اصولی Swagger با سیستم نسخه گذاری (Versioning)
- JWT Authentication : یکپارچه سازی Swagger با سیستم احراز هویت بر اساس Jwt
- OAuth Authentication : یکپارچه سازی Swagger با سیستم احراز هویت بر اساس OAuth
- Auto Summary Document Generation : تولید خودکار داکیومنت (توضیحات) برای API های پروژه
- Advanced Customization : سفارشی سازی های پیشرفته در Swagger
- دیگر قابلیت ها
- API Standard Resulting : استاندارد سازی و یک دست سازی خروجی API ها توسط ActionFilter
- Automatic Model Validation : اعتبار سنجی خودکار
- AutoMapper : جهت Mapping اشیاء توسط کتابخانه محبوب AutoMapper
- Auto Mapping : سفارشی سازی وایجاد یک معماری حرفه ای برای Mapping اشیا توسط Reflection
- Generic Controller : ساخت کنترلر برای عملیات CRUD بدون کد نویسی توسط ارث بری از CrudController
- Site Setting : مدیریت تنظیمات پروژ توسط Configuration و ISnapshotOptions
- Postman : آشنایی و کار با Postman جهت تست API ها
- Minimal Mvc : حذف سرویس های اضافه MVC برای افزایش پرفرمنس در API نویسی
- Best Practices : اعمال Best Practices ها جهت بهینه سازی، افزایش پرفرمنس و کدنویسی تمیز و اصولی
- و چندین نکته مفید دیگر ...
مزیت اصلی این دوره؟
به جای اینکه ماه ها وقت صرف کنین تحقیق کنین، مطالعه کنین و موارد کاربردی و مهم API نویسی رو یاد بگیرین توی این دوره همشو یک جا و سریع یاد میگیرین و تو وقتتون صرفه جویی میشه. همچنین یک پله هم به Senior Developer شدن نزدیک میشین ;)
پیش نیاز این دوره :
سطح دوره پیشرفته بوده و برای افراد مبتدی مناسب نیست.
این دوره، آموزش ASP.NET Core نیست و زیاد روی مباحثش عمیق نمیشیم و فقط به مباحثی می پردازیم که مرتبط با API نویسی توی ASP.NET Core هستش.
انتظار میره برای شروع این دوره پیش نیاز های زیر رو داشته باشین :
- تسلط نسبی بر روی زبان سی شارپ
- آشنایی با پروتکل Http و REST
- آشنایی با Entity Framework (ترجیحا EF Core)
- آشنایی با معماری ASP.NET MVC یا ASP.NET Core (و ترجیحا آشنایی با WebAPI)
سرفصل های دوره API نویسی اصولی و حرفه ای در ASP.NET Core
پیش نمایش دوره API نویسی اصولی و حرفه ای در ASP.NET Core |
---|
درس شماره 0 (دموی دوره) زمان فیلم: 21:07 |
دانلود مستقیم پیش نمایش (دموی دوره) - حجم دانلود 93 مگابایت (کلیک کنید +) |
درس شماره 6 (Standard Api Result) زمان فیلم: 02:33 |
دانلود مستقیم پیش نمایش (Standard Api Result) - حجم دانلود 3 مگابایت (کلیک کنید +) |
درس شماره 8 (Exception Handling) زمان فیلم: 13:13 |
دانلود مستقیم پیش نمایش (Exception Handling) - حجم دانلود 17 مگابایت (کلیک کنید +) |
درس شماره 9 (Exception Logging) زمان فیلم: 15:13 |
دانلود مستقیم پیش نمایش (Exception Logging) - حجم دانلود 25 مگابایت (کلیک کنید +) |
درس شماره 10 (JWT Authentication) زمان فیلم: 37:19 |
دانلود مستقیم پیش نمایش (JWT Authentication) - حجم دانلود 56 مگابایت (کلیک کنید +) |
درس شماره 11 (JWT Encryption & Security) زمان فیلم: 11:40 |
دانلود مستقیم پیش نمایش (JWT Encryption & Security) - حجم دانلود 14 مگابایت (کلیک کنید +) |
درس شماره 12 (Identity & Customization) زمان فیلم: 19:43 |
دانلود مستقیم پیش نمایش (Identity & Customization) - حجم دانلود 24 مگابایت (کلیک کنید +) |
درس شماره 13 (Autofac IOC Container) زمان فیلم: 13:00 |
دانلود مستقیم پیش نمایش (Autofac IOC Container) - حجم دانلود 16 مگابایت (کلیک کنید +) |
درس شماره 16 (Api Versioning) زمان فیلم: 13:34 |
دانلود مستقیم پیش نمایش (Api Versioning) - حجم دانلود 17 مگابایت (کلیک کنید +) |
درس شماره 17 (Swagger Part1) زمان فیلم: 11:50 |
دانلود مستقیم پیش نمایش (Swagger Part1) - حجم دانلود 14 مگابایت (کلیک کنید +) |
توجه: کیفیت این محصول توسط بیـــاموز تضمین شده است. در صورت عدم رضایت شما، ۷۰ درصد مبلغ پرداختی به حساب بانکی شما بازگشت داده میشود.
ممنون از دوره خوبتون، بسیار عالی بود.
من تقریبا تمام امکاناتی که گفتید رو به پروژه اضافه کردم
و برای بخش یونیت تست نمیدونم اینترفیس imapper و usermanager رو چه جوری وقتی که میخایم سرویس ها رو در قسمت تست بسازم، ایجاد کنم و بدم به ورودی سرویس
واقعا یه ذوره عالی بود
ممنون از مدرس عزیز.
من دارم با دات نت 6 کار میکنم.
اون قسمتی که فیلتر مینوسیم در واقع این فیلتر ApiResultFilterAttribute
نکته ای که هست هیچ وقت وارد این قسمت نمیشه
badRequestObjectResult.Value is SerializableError errors
میخواستم بدونم مشکل از کجاست؟
با توجه به این که برخی سایت ها از نظر شرعی اجازه داده اند که اگر یکی از اعضای تیم آموزشی را بخرد بقیه نیز میتوانند از آن استفاده کنند ، آیا مدرس محترم اجازه چنین امری را می دهند؟( از نظر شرعی)
فقط یه سوال داشتم توی بهش JWT گفتیم برای اینکه هی به دیتا بیش کویری نزنیم و اطلاعات کاربرو بگیریم اطلاعاتو توی توکن ذخیره و دریافت میکنیم ولی بعد از این کار اومدید بخاطر دریافت آخرین تعییرات توکن ادیت رو هر بار از دیتا بیس میگرفتید خب چه تفاوتی داشت که کل اطلاعات رو دیتا بیس میگرفتیم؟ما که در هر صورت برای هر درخواست داریم به دیتابیس کویری میزنیم
در صورت امکان آموزش https://github.com/dotnet-architecture/eShopOnContainers (DDD و داکر و ماکروسرویس) رو هم قرار بدین
لطفا در صورت امکان اموزش های بیشتری با این سطح از کیفیت قرار بدین
من سی شارپ رو در حد مقدماتی بلدم و تا حدودی هم با mvc,core,ef core کار کردم
بنظرتون میتونم در این دوره شرکت کنم یا اینکه دوره های قبلی asp core سایتتون رو ببینم و مطالعه کنم و بعد بیام سمت آموزش شما؟
واقعا ممنونم از این دوره ، البته نمیشه اسمش رو دوره گذاشت، یک دانشگاه از مطالب بود که همه مفید و کاربردی بودن. عملا من با خیلی از این موارد کار کرده بودم، ولی واقعا قبل از این دوره درکشون نکرده بودم.
این سطح از توضیح و باز کردن مطلب توسط مدرس، فقط میتونه از تجربه و تبحر ایشون ناشی بشه.
خدا خیرتون بده واقعا آقای ابراهیمی. من خیلی چیزا یاد گرفتم از دورتون
مثلا
Method Syntax
------------
var list = personRepository.Table
.Join(AddressInfoRepository.Table,
person => person.Id,
addressInfo => addressInfo.PersonId,
(person, addressInfo) => new {
FirstName = person.FirstName,
LastName = person.LastName,
Address1 = addressInfo.Address1 }
).ToList();
Query Syntax
------------
var list = (from person in personRepository.Table
join addressInfo in AddressInfoRepository.Table
on person.Id equals addressInfo.PersonId
select new {
FirstName = person.FirstName,
LastName = person.LastName,
Address1 = addressInfo.Address1
}).ToList();
بعد از دانلود فیلم های آموزشی، دوره را روی هر کامپیوتر یا مبایلی می توانید مشاهده کنید. فرمت فایل ها بصورت MP4 است.
ممنون از آموزش بسیار عالیتون
ی سوال داشتم اگر راهنماییم کنید یا یک منبعی معرفی کنید ممنون میشم .
چطور میتونم تو همین سیستم از transaction استفاده کنم برای rollback کردن داده ها در صورت بروز خطا ؟
ممنون
1- استفاده از context.Database.BeginTransaction() که راحت ترین روش و پیشنهاد خود ماکروسافت هست در اکثر موارد و توسط خود EF مدیریت میشه
2- استفاده از IDbTransation خارجی توسط دستور context2.Database.UseTransaction()
3- استفاده از TransactionScope توسط دستور using (var scope = new TransactionScope()) { } که سربار بیشتری داره و محدودیت هایی هم داره
مقالات اموزشی و اطلاعات بیشتر :
https://entityframeworkcore.com/saving-data-transaction
https://www.entityframeworktutorial.net/entityframework6/transaction-in-entity-framework.aspx
https://docs.microsoft.com/en-us/ef/core/saving/transactions
شما در db context تون از model builder extension ها استفاده کردید چجوری با application db context تون از linq استفاده میکنید
کلاس DbContext متدی تحت عنوان Set به صورت جنریک داره که توسط اون میتونیم به DbSet انتیتی مورد نظر دست پیدا کنیم. مثال :
dbContext.Set() l به جدول مورد نظر اشاره میکنه و میتونیم روش query بزنیم یا insert کنیم و...