تخصصی ترین مرکز
آموزش برنامه نویسی
توجه: از دانشجویان عزیز تقاضا میگردد جهت قطعی کردن ثبت نام با آموزشگاه تماس بگیرند.
در این دوره آموزش گام به گام و پروژه محور MVC Core، دانشجویان از مراحل اولیه ساخت یک پروژه کاملا حرفه ای تا آموزش Upload کردن پروژه روی سرور را آموزش می بینند. مشاهده پروژه مورد اجرا در دوره آموزش ASP.Net Core
در دوره آموزش MVC Core ، برخلاف فیلم های آموزشی یا انتظار بسیاری از دانشجویان، فریمورک MVC فقط بعنوان یک پوسته برای پروژه های تحت وب استفاده می شود و تمامی لایه های پروژه در قالب یک معماری برگرفته شده از Onion Architecture ساخته می شود که فرآیند مدلسازی در لایهی جدا، فرآیند ذخیره و بازیابی در لایهی جدا و همچنین هماهنگی تمامی لایه های پروژه برای پیاده سازی Business Rules در لایه جداگانه ای قرار می گیرند. علاوه بر این، با توجه به قوانین پنج گانه SOLID برای هر یک از لایه های فوق، یک لایه انتزاعی (Abstraction) بصورت جداگانه طراحی می گردد.
مرحله ASP.NET Core MVC Request Life Cycle یک مرحله از رویدادها یا کامپوننت هایی است که برای پردازش درخواست های HTTP با یکدیگر در تعامل هستند و پاسخی که باید به کاربر فرستاده شود را تولید می کنند Request Life Cycle در ASP.NET Core را می توان با استفاده از شکل زیر بصورت مختصر شرح داد.
کامپوننت Middleware قالب اصلی HTTP Pipeline در یک برنامه را شکل می دهد. بعبارت دیگر، مجموعه ای از کامپوننت ها وجود دارند که با یکدیگر ترکیب می شوند و Pipeline مورد نیاز برای یک درخواست را شکل می دهند تا قادر به مدیریت هر نوع درخواست ورودی باشند.
Routing یکی از کامپوننت های Middleware است که فریمورک MVC را اجرا می کند. کامپوننتRouting تصمیم می گیرد که یک درخواست چطور می تواند با کمک مسیرهای مشخصه و قراردادی به کنترلرها و متودهای عملیاتی نگاشت شود.
در این مرحله از Request Life Cycle فرآیند مقدار دهی اولیه و اجرا کنترلرها اتفاق می افتد. کنترلرها مسئول مدیریت درخواست های ورودی هستند. کنترلر متودهای عملیاتی مناسب را بر اساس قالب های ارائه شده برای route (مسیر) ارائه می کند.
پس از اینکه مقدار دهی اولیه برای کنترلرها انجام شد، متودهای عملیاتی اجرا شده و مستندی از HTML را در قالب یک view ارائه می دهد تا بعنوان پاسخ برای مرورگر فرستاده شود.
در این مرحله ازRequest Life Cycle ، نتیجه که همان پاسخ تولید شده برای در خواست اصلی HTTP است اجرا می شود. اگر یکی از متودهای عملیاتی، نتیجه ای در قالب view را تولید کند، موتور view در معماری MVC یک view ارائه می دهد و پاسخ HTML را بر می گرداند؛ اما اگر نتیجه در قالب view ارائه نشود، متود عملیاتی پاسخ خود را تولید می کند.
در هر یک از بخش های پنج گانه زیر، پس از تدریس مباحث شی گرایی و اصول طراحی، یک پروژه عملی که از این اصول پیروی می کند را در مقایسه با پروژه ای که از این قوانین پیروی نمی کند، پیاده سازی می کنیم.
فریمورک MVC که مخفف Model-View-Controller است، یک قالب معماری است که برنامه را از نظر منطقی به سه کامپوننت اصلی مدل (Model)، ویو (View) و کنترلر (Controler) تقسیم می کند. هر یک از این کامپوننت ها برای مدیریت جنبه خاصی از توسعه یک برنامه ساخته می شود. MVC، Business Logic یا همان Controller و لایه نمایش یا View را از یکدیگر جدا می کند. این معماری با بهره مندی از فلسفه Separation of Concerns همه بخش های یک پروژه نرم افزاری را از همدیگر مستقل می کند.
مدل تمامی داده ها و منطق مربوط به آنها را شامل می شود. داده ها و منطق مربوط به آنها در کامپوننت مدل ذخیره می شود. این کامپوننت، داده هایی که در میان کامپوننت های کنترلر یا هر منطق تجاری دیگری انتقال داده می شوند را نمایش می دهد. برای مثال، یک آبجکت کنترلر اطلاعات کاربر را از پایگاه داده بازیابی و آن را دستکاری کرده و دوباره به پایگاه داده می فرستد یا آن را برای انتقال داده های یکسان بکار می گیرد. کامپوننت مدل به درخواست های فرستاده شده از ویو (View) و همینطور دستورات کنترلر (Controller) پاسخ می دهد تا خود را بروزرسانی کند. این بخش همینطور پایین ترین سطح از قالب است که مسئول حفظ و نگهداری داده هاست.
اطلاعات را به کاربر نمایش می دهد یا تعامل کاربر با سیستم را مدیریت می کند. ویو بخشی از یک برنامه است که مسئولیت نمایش اطلاعات را بعهده دارد. ویوها بوسیله داده های جمع آوری شده از داده های مدل ایجاد می شوند. یک ویو برای دریافت اطلاعات به مدل درخواست می دهد. ویو همینطور داده های مربوط به چت ها، دیاگرام ها و جدول را نیز نشان می دهد. برای مثال، هر ویو تمامی کامپوننت های UI همچون Text Box ، Drop Down و ... را شامل می شود.
رابط کاربری میان کامپوننت های View و Model است. کنترلر بخشی از یک برنامه است که تعامل کاربر با برنامه را مدیریت می کند. کنترلر، ورودی های کیبورد و موس را تفسیر کرده، و به مدل و ویو اطلاع رسانی می کند تا تغییرات را بصورت مناسب اعمال کند. کنترلر دستورات را به مدل می فرستد تا وضعیت خود را بروزرسانی کند (برای مثال ذخیره یک مستند خاص). کنترلر همینطور دستورات را به ویو مربوطه ارسال می کند تا نمایش ویو را تغییر دهد (برای مثال جابجایی یک مستند خاص).
ORM یک Code Library است که انتقال خودکار داده هایی که در جدول های یک پایگاه داده رابطه ای ذخیره شده اند را به آبجکت هایی که بطور معمول در کد برنامه استفاده می شوند، امکانپذیر می سازد.
رویکرد Code First در میان برنامه نویسانی که از معماری MVC استفاده می کنند بسیار معمول است. در این روش، کنترل کامل بر روی کد صورت می گیرد. با استفاده از این رویکرد می توان تمامی فعالیت پایگاه داده را با استفاده از کد پیاده سازی کرد. بنابراین، می توان گفت در نتیجه استفاده از این رویکرد، تغییراتی که بصورت دستی بر روی پایگاه داده انجام می شدند، حذف می شوند و همه چیز وابسته به کد خواهد بود.
Entity Framework Core دارای یک پیش فرض برای ساخت جداول و ساختار بانک اطلاعاتی از روی کلاس های موجود است، ولی این ساختار بسیار کلی بوده و دارای نواقص بسیار فاحشی است، برای مثال برای فیلدهایی از سی شارپ که از نوع string هستند، در دیتابیس دیتا تایپ nvarchar(max) را در نظر می گیرد که باعث افت شدید کارایی می شود. در بسیاری از اصلاحات دیگر، برای جبران این کمبود دو روش کمکی دیگر وجود دارد: روش اول Data Annotation و روش دوم Fluent API است که روش Fluent API دارای کاربرد بیشتر و حرفه ای تری است.
تبصره :
تمامی کوئری های ذکر شده در مراحل زیر به روش های Query Syntax , Method Syntax انجام می شوند.
ASP.NET MVC Core دارای یک سیستم مسیریابی فوق العاده پیشرفته است که از طریق آن می توان URL های مبتنی بر سئو (SEO Friendly) را طراحی نمود. در بسیاری موارد، وبسایت هایی که از قبل سئو شده اند، بعنوان مثال سایت های قدیمی با پسوند .aspx و .php دارای تعداد زیادی صفحات ایندکس شده در گوگل هستند و می خواهند ساختار آدرس خود را حفظ کنند. MVC Core می تواند با استفاده از سیستم routing پیشرفته خود، آدرس های شبیه صفحات قبلی را حفظ کند.
در مهندسی نرم افزار، معماری لایه ای یک معماری Client-Server است که در آن توابع مدیریت داده ها، پردازش برنامه و نمایش اطلاعات، بصورت فیزیکی از یکدیگر جدا می شوند. از جمله فواید این معماری می توان به موارد زیر اشاره کرد :
در این فروشگاه الکترونیکی، امکان رده بندی محصولات وجود دارد و بر اساس این رده بندی منوهای سایت بصورت داینامیک ساخته می شوند، همچنین هر رده به تنهایی دارای کلیه پارامترهای سئو می باشد. فیلدهای مورد نباز برای دسته بندی محصولات عبارتند از : نام رده، رده های رده، قیمت رده، توضیح مختصر رده، توضیح کامل رده، تصویر رده، تعداد بازدید رده، جمع امتیازات رده، میانگین امتیازات رده، Meta KeyWord رده ها، Meta Description رده ها، Slug رده ها (Slug بخش انتهایی URL است که نقش بسیار زیادی در سئو صفحات دارد)، Page Title رده ها (توضیح کاربرد آن در مبحث سئو است). هر رده می تواند تعداد بیشماری محصول باشد.
هر محصول دارای فیلدهای زیر است:
هر محصول دارای تعدادی محصول مرتبط است که در زمانی که بازدید کننده سایت در حال بازدید از صفحه اختصاصی محصول است، آن محصولات به عنوان پیشنهاد به بازدید کنندگان آن محصول ارائه می شود.
در این فروشگاه الکترونیکی، کاربران چنانچه Login کرده باشند، می توانند نظرات خود را ثبت کنند. نظرات ثبت شده توسط کاربران، پس از تایید مدیر سایت، نمایش داده می شود. در ضمن، خود کاربر هنگامی که به Panel خود در وبسایت وارد می شود، می تواند فهرست نظرات قبلی خود را به تفکیک تایید شده یا تایید نشده مشاهده کند.
در این فروشگاه الکترونیکی سه نوع کاربر داریم :
فیلدهای مورد نیاز عبارتند از : نام، نام خانوادگی، ایمیل، آدرس 1، آدرس 2، موبایل، تلفن، کد پستی، کد ملی، نام کاربری، رمز عبور، استان و شهر. همچنین هر کاربر می تواند در یکی از نقش های بالا عضویت داشته باشد. امکان ثبت کاربر جدید، امکان ویرایش کاربر، امکان حذف کاربر، امکان جستجو داینامیک بر اساس یک یا چند مورد از فیلدهای نام، نام خانوادگی، ایمیل و موبایل. علاوه بر این، هنگام ثبت نام کاربر، پس از انتخاب استان، شهرهای آن استان فهرست می شود تا کاربر از بین آنها بتواند شهر مورد نظر خود را انتخاب کند. امکان فعالسازی ایمیل کاربر و امکان فعالسازی موبایل کاربر نیز از دیگر امکانات ارائه شده و آموزشی است.
معماری بکار گرفته شده در این دوره، یک معماری برگرفته شده از معماری Onion است که در عین پیچیدگی از کلیه اصول Solid, Dependency Injection, Unit of Work و امکان Testability بصورت همزمان برخوردار است.
لایه های این معماری عبارتند از :
تمامی کلاس های مربوط به ساخت فروشگاه الکترونیکی در این لایه تعریف می شوند.
تمامی نیازهای مورد نظر در Domain پروژه، در این لایه قرار دارند و برای رعایت اصل پنجم SOLID که همان Dependency Inversion Principle است، تمامی Interface های مورد نیاز برای پوشش دادن نیازهای Domain را شامل می شود.
این لایه تمامی پیاده سازی های لایه Domain Service را درون خود جا داده و به این ترتیب لایه Domain، نیاز بیرونی خود را بدون وابستگی به تکنولوژی و از طریق Domain Service بدست می آورد.
در لایه Application، تمامی Business سطح کلان پیاده سازی می گردد. این لایه، خود از دو لایه تشکیل شده است. یکی Application Service Contract است که Interfaceهای لازم برای همه سرویس های مورد نیاز برای UI پروژه و همچنین سرویس های مورد نیاز برای تست نرم افزار را فراهم می کنند. این سرویس ها در قالب تعدادی Interface معرفی می شوند. لایه دیگر Application است که همان پیاده سازی Interfaceهای لایه Application Service می باشد که تمام هماهنگی سطح کلان و رعایت Businessهای پیچیده سیستم بر عهده آن است.
معماری MVC بطور کامل در لایه UI قرار گرفته است و پوسته نرم افزار که همان بخشی است که کاربران وبسایت با آن تعامل دارند نیز بخشی از لایه UI است.
تمامی Class Libraryهای عمومی که می خواهیم در قالب یک کتابخانه بسازیم تا در همه جا پروژه قابل استفاده باشد را در این لایه قرار دهیم.
تمامی Unit Testها، Integration Testها و End to End Testها در این لایه قرار می گیرند.
در این بخش از دوره آموزش MVC Core تمامی کلاس های لازم برای ساخت فروشگاه الکترونیکی بصورت Pure طراحی می شوند و در مراحل بعدی بر اساس این کلاس ها و با استفاده از تکنولوژی Entity Framework Core دیتابیس ساخته می شود.
در این بخش از دوره آموزش پروژه محور MVC Core، تمامی کلاس های لازم برای اجرا پروژه فوق، پس از طراحی لایه Domain Model در این لایه طراحی می شوند. تمامی مراحل ساخت دیتابیس از روی کلاس های موجود را می توان با استفاده از Entity Framework Code First و Fluent API اجرا کرد. علاوه بر روابط میان کلاس استاندارد، تمامی روابط بین کلاس ها در لایه ای جداگانه به نام Entity Framework Persistence و با استفاده از Fluent API Model Builder طراحی می شوند.
در این بخش با استفاده از MVC Core Validation Data Annotation اقدام به طراحی اعتبارسنجی کلاس ها می کنیم. در واقع در این لایه، اقدام به ساخت کلاس های ساده و پیچیده ای می نماییم که در لایه های UI و تست مورد استفاده قرار می گیرند. این کلاس ها که جنبه DTO (Data Transfer Object) دارند، وظایف زیر را بر عهده دارند :
در این بخش از دوره آموزشی برای اینکه اصول SOLID در طراحی نرم افزار رعایت شوند، پس از طراحی عملکردهای مورد نیاز Application فروشگاه الکترونیک، تمامی Interfaceهای شی گرایی این فروشگاه برای دسترسی به بانک اطلاعات طراحی می شوند. برخی از اهداف این بخش عبارتند از :
در این بخش از دوره آموزشی، تمامی پیاده سازی لایه های Interface در بخش های قبلی، با استفاده از Entity Framework Core محقق می گردد. برخی از مباحث این بخش عبارتند از :
در این بخش از دوره آموزش عملی MVC Core، تمامی سرویس های مورد نیاز برای لایه Application را پیاده سازی می کنیم. لایه Application از لایه های اساسی در پیاده سازی پروژه های پیچیده نرم افزاری است و تمامی قوانین مهم و پیچیده نرم افزار در این لایه پیاده سازی می گردد. در این بخش نیز با توجه به قوانین پنج گانه SOLID، تمامی Interfaceهای مورد نیاز برای طراحی این لایه ساخته می شوند.
در این بخش از دوره آموزشی، تمام پیاده سازی قوانین تجاری فروشگاه الکترونیک اجرا می شود. پس از پایان این بخش، تنها بخش مورد نیاز برای پروژه، ساخت پوسته نرم افزاری است.
در این بخش از دوره با ارائه یک قالب کاملا حرفه ای برای بخش Admin وبسایت، آماده اجرا پروژه می شویم.
در این بخش از دوره آموزشی، دانشجویان با مفهوم Ajax آشنا می شوند و یاد می گیرند که چگونه صفحات Full Ajax بسازند، بدون اینکه نیاز به Refresh شدن صفحه داشته باشد.
در این بخش از دوره آموزش، دانشجویان با مفهوم تاثیر مدیر سایت برای نمایش دیدگاه هاآشنا می شوند. دیدگاه های تایید شده مدیر سایت، در این بخش نمایش داده می شوند.
To view this video please enable JavaScript, and consider upgrading to a web browser that