آموزش پیشرفته برنامه نویسی فول استک (Full-stack)
آموزش پیشرفته برنامه نویسی فول استک Full-stack در دات نت سری دوم یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی تبدیل شدن به یک توسعه دهنده Full-stack در دات نت - مباحث پیشرفته است که با نام اصلی Become a Full-stack .NET Developer - Advanced Topics از شرکت Pluralsight منتشر شده است.
یک توسعه دهنده ی Full-stack کیست؟
یک توسعه دهنده ی Full-stack یا همان Full-Stack Developer برنامه نویسی است که می تواند هم بر روی قسمت front-end یک نرم افزار کار کند و هم قسمت back-end.
یک Full-Stack Developer ممکن است دانش عمیق و تخصص کامل بر روی تکنولوژی های front-end و back-end نداشته باشد ولی دانش کافی بر روی این تکنولوژی ها را دارد. در قسمت زیر مهارت های مورد نیاز برای یک Full-Stack Web Developer را بررسی می کنیم.

- HTML
- CSS
- Bootstrap
- JavaScript
- jQuery
- AJAX
- C#
- دیتابیس ها
- Node.js
- TypeScript
- Angular
- MVC
- .NET Core
فراموش نکنید که نیازی نیست در هیچ کدام از این تکنولوژی ها حرفه ای باشید بلکه باید اطلاعاتی در مورد هر کدام از آنها را داشته باشید.
ضمناً ذکز این نکته نیز مهم است که سری اول و دوم این محصول با عنواین آموزش برنامه نویسی فول استک Full-stack در دات نت سری اول و آموزش برنامه نویسی فول استک Full-stack و معماری نرم افزار در دات نت سری سوم پیش از این بر روی وبسایت پرووید منتشر شده اند.
عملیات CRUD در توسعه برنامههای .NET
CRUD به چهار عملیات اصلی کار با دادهها اشاره دارد: ایجاد (Create)، خواندن (Read)، بهروزرسانی (Update) و حذف (Delete). این عملیات در بسیاری از Web Applicationها پایه مدیریت اطلاعات هستند؛ برای مثال، یک برنامه ممکن است امکان ثبت رکورد جدید، مشاهده جزئیات، ویرایش اطلاعات موجود یا حذف یک مورد را در اختیار کاربر قرار دهد. پیادهسازی درست این قابلیتها مستلزم هماهنگی میان رابط کاربری، منطق برنامه و لایه ذخیرهسازی دادههاست.
در این دوره پیشرفته، عملیات CRUD بهصورت مرحلهای و با تمرکز بر خواندن، بهروزرسانی و حذف دادهها بررسی میشود. این مباحث برای برنامهنویسانی مناسب است که با ساختار کلی یک Web Application آشنا هستند و میخواهند مدیریت دادهها را در سناریوهای واقعی بهتر درک کنند. توجه به رفتار هر عملیات، وضعیت دادهها و نحوه نمایش نتیجه به کاربر، به ساخت قابلیتهایی منسجمتر و قابل نگهداریتر کمک میکند.
طراحی Object-Oriented و جلوگیری از خطاهای Domain Model
Domain Model نمایانگر مفاهیم و قواعد اصلی حوزهای است که نرمافزار برای آن ساخته میشود. اگر مدل دامنه صرفاً مجموعهای از فیلدهای داده باشد و قواعد اصلی سیستم در بخشهای پراکنده قرار بگیرند، نگهداری و توسعه برنامه دشوارتر میشود. طراحی Object-Oriented تلاش میکند دادهها و رفتارهای مرتبط را به شکل معناداری کنار هم قرار دهد تا مسئولیت هر شیء روشن باشد و قواعد کسبوکار در ساختار مناسب خود پیادهسازی شوند.
در این آموزش، اجتناب از اشتباهات رایج در Domain Model و ریفکتور کردن کد به سمت طراحی Object-Oriented از موضوعات مهم هستند. این رویکرد به برنامهنویسان کمک میکند هنگام توسعه قابلیتهای جدید، منطق دامنه را منسجمتر نگه دارند و از پراکندگی مسئولیتها جلوگیری کنند. برای توسعهدهندگان Full-stack، درک این اصول اهمیت دارد؛ زیرا مدلهای دامنه میتوانند بر نحوه پیادهسازی قابلیتها در بخشهای مختلف برنامه اثر بگذارند.
تفاوت Domain Object و DTO چیست؟
Domain Object بخشی از مدل دامنه است و میتواند دادهها و رفتارهای مرتبط با قواعد اصلی برنامه را در خود جای دهد. در مقابل، DTO یا Data Transfer Object برای انتقال داده میان بخشهای مختلف سیستم به کار میرود و معمولاً فقط اطلاعات موردنیاز را حمل میکند. این دو مفهوم اهداف متفاوتی دارند؛ بنابراین استفاده از یک مدل واحد برای همه نیازهای داخلی و انتقال داده، همیشه بهترین انتخاب نیست و ممکن است مرز میان منطق دامنه و ارتباطات برنامه را مبهم کند.
Map کردن Domain Objectها به DTOها به ایجاد جدایی روشنتر میان مدل داخلی برنامه و دادههایی که به بخش دیگری منتقل میشوند کمک میکند. این جداسازی میتواند کنترل بیشتری بر اطلاعات ارسالی فراهم کند و وابستگی بخشهای بیرونی به ساختار داخلی دامنه را کاهش دهد. در این دوره، این موضوع در کنار طراحی Object-Oriented مطرح میشود تا توسعهدهنده بتواند نقش مدلها را بهتر تشخیص دهد و انتقال داده را با ساختار نرمافزار هماهنگ کند.
پیادهسازی قابلیت Search و بهبود رابط کاربری با Bootstrap
قابلیت Search در برنامههایی که با حجم قابل توجهی از اطلاعات سروکار دارند، پیدا کردن دادههای موردنیاز را آسانتر میکند. طراحی چنین قابلیتی به نحوه دریافت عبارت جستوجو، پردازش درخواست و نمایش نتایج وابسته است. در یک Web Application، تجربه کاربر تنها به منطق جستوجو محدود نمیشود؛ نحوه ارائه نتایج و دسترسی آسان به اقدامات مرتبط نیز اهمیت دارد و باید در کنار عملکرد فنی در نظر گرفته شود.
این دوره علاوه بر پیادهسازی Search، به کار با اجزای رابط کاربری Bootstrap مانند Icon، Badge و Popover و همچنین مدیریت Eventها میپردازد. این قابلیتها میتوانند برای نمایش وضعیت، ارائه اطلاعات تکمیلی یا واکنش به تعامل کاربر استفاده شوند. ترکیب مباحث رابط کاربری با توسعه قابلیتهای CRUD و طراحی مدلهای برنامه، دیدی جامعتر از بهبود یک Web Application در اختیار توسعهدهنده قرار میدهد.
سرفصل مطالب آموزش ویدئویی تبدیل شدن به یک توسعه دهنده Full-stack در دات نت سری دوم
فصل اول: مقدمه
- مقدمه
فصل دوم: عملیات CRUD ساده و پیاده سازی Read
- مقدمه خواندن داده ها بهبودهای کوچک در برنامه جمع بندی
فصل سوم: عملیات CRUD ساده و پیاده سازی Update
- مقدمه
- نشان دادن Action ها در زمان Hover شدن ماوس
- پر کردن داده ها در فرم
- حل کردن مشکلات مربوط به Input Field ها
- ریفکتورینگ
- به روز رسانی داده ها
- تست کردن و Debug کردن
- استفاده کردن از Expression ها به جای Magic String ها
- جمع بندی
فصل چهارم: عملیات CRUD ساده و پیاده سازی Delete
- مقدمه
- Extend کردن Domain
- ساختن API
- استفاده کردن از API با استفاده از jQuery AJAX
- استفاده کردن از Bootbox Dialog ها
- بهبود دادن Usability مربوط به Dialog ها
- خارج کردن Object هایی که به صورت منطقی حذف شده اند از Query ها
- استفاده کردن از Label های Bootstrap
- هندل کردن Edge Case ها
- Clean کردن پروژه
- جمع بندی
فصل پنجم: اجتناب کردن از اشتباهات رایج در Domain Model
- مقدمه
- مشخص کردن Requirement ها
- اولین تلاش: یک طراحی ساده
- دومین تلاش: استفاده از وراثت
- سومین تلاش: شکستن سلسله مراتب وراثت
- یک طراحی جایگزین
- چهارمین تلاش: استفاده کردن از یک Association Class
- پیاده سازی Domain Class ها
- Migrate کردن دیتابیس
- ذخیره کردن Notification ها
- جمع بندی
فصل ششم: ریفکتور کردن به سمت یک طراحی Object-Oriented
- مقدمه
- ریفکتور کردن به سمت یک طراحی Object-Oriented
- ریکتورینگ: داشتن Object های Valid
- مرور کردن کد
- بررسی Optimization
- ریفکتورنیگ: Cohesion
- حل کردن مشکل Reverse Relationship ها
- تست کردن
- تمرین
- مرور کردن کد
- استفاده از Factory Method ها برای ساختن Object ها
- جمع بندی
فصل هفتم: Map کردن Domain Object ها به DTO ها
- مقدمه
- ساختن API
- معرفی کردن DTO ها
- Map کردن به صورت درستی
- استفاده کردن از AutoMapper
- سازماندهی کردن Mapping های AutoMapper
- استفاده کردن از Camel Notation
- Clean کردن پروژه
- حل کردن یک باگ کوجک جمع بندی
فصل هشتم: کار کردن با ایکن ها، Badge ها و Popover ها در Bootstrap
- مقدمه
- استفاده کردن از Icon های Bootstrap
- استفاده کردن از Badge های Bootstrap
- استفاده کردن از API با استفاده از jQuery AJAX
- انیمیشن دادن به محتوا با CSS
- استفاده کردن از Popover های Bootstrap
- اضافه کردن Underscore.js
- Render کردن محتوا با استفاده از Template های Underscore.js
- مرور کردن کد
- هندل کردن Edge Case ها
- جمع بندی
فصل نهم: بهبود دادن ظاهر برنامه
- مقدمه
- بهبود دادن ظاهر Popover ها
- Override کردن Template های Popover ها
- Bold کردن متن
- فرمت بندی کردن تاریخ با Moment.js
- کارهای نهایی
- منسجم کردن Bundle ها
- استفاده کردن از LESS برای نوشتن CSS های Clean تر
- تبدیل کردن CSS های موجود به LESS
- جمع بندی
فصل دهم: هندل کردن Event ها در Bootstrap
- مقدمه
- هندل کردن Event های Popover
- تمرین
- مرور کردن کد
- استفاده کردن از API
- بحث و تبادل نظر
- جمع بندی
فصل یازدهم: پیاده سازی Search
- مقدمه
- اضافه کردن فرم Search
- استفاده کردن از Input Group ها در Bootstrap
- پیاده سازی Page های قابل Bookmark کردن
- تمرین
- مرور کردن کد

