با ادامه ی سری ویدیوهای آموزش ASP.NET MVC در خدمت شما هستیم.
چند ویدیوی قبلی، اطلاعاتی درباره ی بخش های اصلی که یک پروژه ی ASP.NET MVC را تشکیل می دهند ارائه داد، اون چیزهایی که در چند ویدیوی قبلی گفته شد، اصول اساسی ای هست که یک پروژه ی ASP.NET MVC رو تشکیل می دهند یعنی الگوی Model View Controller یا همون الگوی MVC. فصل یک با یک مقدمه ی کوتاهی از این الگو شروع شد ولی در این ویدیو ما به جزییات بیشتری که الگوی MVC رو تشکیل میدن می پردازیم. فصل یک، یک تصویر مشخصی از MVCارائه داد که عبارت بود از سه لایه ی مجزا که مدل Model و ویو View و کنترلر Controller هستند و بیان کرد که هر کدام از این لایه ها وظایف منحصر به فرد خودشون رو دارند. بزارید ببینیم اون وظایف واقعا چه چیزهایی اند.
لایه ی مدل دارای تمام business logic پروژه ی شماست. یعنی کدی که بیان می کند business شما چگونه کار می کند. برای مثال در سایت حراج آنلاین ما، مدل ما تشکیل میشه از :
Auctions یا همون حراجها، bidها یا همون پیشنهادهای خرید، user ها یا همون کاربرهایی که اون پیشنهاد رو میدن
این کلاس ها شامل behavior یا همون رفتارها هم هستن، مثل اینکه چطوری کاربرا پیشنهاد قیمتشون رو در سایت قرار میدن و اینکه چه اتفاقی باید بیفته وقتی اون پیشنهادهای قیمت در سایت گذاشته شدن. در یک طراحی ایدهآل کلاسهایی که لایه ی مدل رو تشکیل میدن ارتباطی با وب ندارند. شما میدونید که لایه ی Model مناسبی درست کردید که میتونید در سناریوهای مختلفی استفاده کنید حتی مثلا در پروژههایی که برای desktop طراحی شدن مثل پروژههای win forms یا پروژههای WPF.
لایهی بعدی: لایهی View هست: این همون لایهای هست که مسولیت ارتباط با کابر رو برعهده داره، مسولیت به صورت تصویر درآوردن Model و ارتباط برقرار کردن با Controller از طرف کاربر. در اکثر مواقع لایه ی View شامل Html استاندارد و جاوااسکریپت و cssهست. با این حال لایه ی View فقط منحصر به html نیست و میتونه از بسیاری از فرمت های دیگه پشتیبانی کنه مثل JSON و XML و custom return types.
این وظیفه ی Viewهست تا هرچیزی رو که برنامه ی شما نیاز داره رو پردازش و Render کنه تا یک تجربهی خیلی خوبی برای کاربر درست کنه. و در نهایت لایه ی کنترلر Controller رو داریم. این لایه مثل پلیس ترافیک عمل میکنه یعنی جریان برنامه بین Model و View رو کنترل میکنه. کنترلرها مغز یک پروژهی ASP.NET MVC هستند. اطلاعات رو از لایه ی Model گرفته و روش درست رو برای انتقال اون اطلاعات به کاربر انتخاب میکنند. توجه کنید که کنترلرها هیچ یک از این کارها رو به صورت مستقیم انجام نمیدن. وظیفهی اصلی اون این هست که این وظایف رو تا اونجا که ممکن هست به لایه های Model و View منتقل بکنه تا اونها کار اصلی رو انجام بدن. برای مثال وقتی یک کاربر جزییات یک حراج رو درخواست میکنه کنترلر از مدل میپرسه که کدوم اطلاعات باید نمایش داده بشن بعد اون اطلاعات رو به View میفرسته که اون هم html ی رو تولید میکنه که به مرورگر کاربر فرستاده میشه. چیزی که در این سناریو مهم هست این هست که نه کنترلر اطلاعات رو به طور مستقیم به دست میاره و نه html رو به طور مستقیم تولید میکنه. بلکه فقط قدم های لازم برای انجام این کارها رو بین Viewو مدل هماهنگ میکنه. روشی که این سه لایه ی MVC با هم در تعامل هستن یک اقدام عمدی و آگاهانه هست برای رسیدن به یک نتیجه به نام separation of concernsیا همون جدایی فعالیتها یا جدایی دغدغهها. برمبنای این فلسفه، عناصری که یک برنامه رو تشکیل میدن وظیفه دارن تا فقط یک کار رو انجام بدن: و اون هم این هست که تا جایی که میتونند در وظایف همدیگه دخالت نکنند. عناصری که براساس فلسفه ی جدایی فعالیتها یا separation of concernsدرست شدن loosely coupled هستند یعنی اینکه برای انجام وظایف خود به عناصر دیگر وابسته نیستند. برنامهای که براساس فلسفه ی جدایی دغدغه ها ساخته شده به ما کمک میکنه تا هر کدام از عناصرش رو بدون اینکه کل برنامه ی ما خراب بشه، بهبود ببخشیم و یا کلا اون عنصر رو با عنصر بهتری جایگذاری کنیم. در نتیجه خیال ما راحت هست که سایر عناصر خراب نمیشن و از اون بهبود یا جایگذاری اون عنصر خاص تاثیری نمیپذیرن.
الگوی طراحی MVC یک الگوی قدرتمندی برای طراحی برنامه های قوی و قابل نگهداری هست. هرچند الگوی MVC یک انحراف از سایر الگوهای قبلی هست و شاید برای هر نوع پروژه یا developerی مناسب نباشه، بنابراین اگه شما از این الگو خوشتون میاد و میخواهید الگوی MVC رو در عمل ببینید، لطفا این دوره ی آموزشی رو ادامه بدید تا یاد بگیرید کع چگونه به طور کامل از قدرت MVC در ASP.NET MVC استفاده بکنید. اگر هم فکر میکنید که این الگو مناسب شما نیست از شما میخواهیم که چند ویدیوی بعدی رو مشاهده کنید تا هم با الگوی MVC کامل تر آشنا بشید و هم با مزایایی که ارائه میده بیشتر آشنا بشید و بعد تصمیم بگیرید.