معرفی معماری MVC


نویسنده : عرفان مولا
زمان انتشار : ۲ هفته پیش

خب سلام، امیدوارم که حالتون خوب باشه و همچین چیز های مرسومی، دو هفته پیش یک پادکستی منتشر کردم درمورد مفهوم MVP ، ایده این بود که با مفهوم حداقل‌محصول‌پذیرفتنی آشنا [...]
معرفی معماری MVC

خب سلام، امیدوارم که حالتون خوب باشه و همچین چیز های مرسومی، دو هفته پیش یک پادکستی منتشر کردم درمورد مفهوم MVP ، ایده این بود که با مفهوم حداقل‌محصول‌پذیرفتنی آشنا بشند دوستان،‌ولی اتفاقی که افتاد این بود که خیلی از دوستان بخاطر تشابه اسمی MVP با MVC، به اشتباه متوجه شدند و حتی به اشتباه هم به‌کار برده شد، یا حتی مفهوم MVP بعنوان یک دیزاین‌پترن هم باعث سردرگمی خیلی از دوستان شد، برای همین تصمیم گرفتم از بحث MVP بعنوان یک اصل بازاریابی و روانشناسی بیرون بیایم و به مراتب، به توضیح دیزاین‌پترن های MVC بپردازیم در این مقاله و بعدا هم درمورد MVP یک مقاله‌ای مینویسم و دیزاین‌پترن اون رو هم باهم تحلیل می‌کنیم

خب قبل از اینکه شروع کنیم، اگه نمی‌دونید دیزاین‌پترن چی هستش و کلا یعنی چی، پیشنهاد می‌کنم پادکست مفهوم دیزاین‌پترن رو گوش کنید و با مفهوم کلی و عمومی Design Pattern ها آشنا بشید چون عملا وقتی درکی از پایه نداشته باشید نمی‌تونید بقیه مطلب رو هم متوجه بشید

MVC چی هست ؟

مفهوم MVC مخفف شده عبارت Model-View-Controller هست، یک نوع دیزاین‌پترنی که مدل کدنویسی اپلیکیشن مارو به سه مدل لایه‌بندی مجزا تقسیم می‌کنه، لایه هایی با نوع Model و View و Controller که هرکدوم نقش مجزا ولی مرتبطی رو ایفا می‌کنند

مدل MVC مختص یک زبان خاصی نیست و صرفا یک دیزاین‌پترن هستش، همونطور که توی پادکست هم اشاره کردم، دیزاین‌پترن‌ها مختص به زبان خاصی نیستند و صرفا یک نوع الگوی طراحی هستند، فرقی نمی‌کنه که از PHP استفاه کنید یا ASP یا Python یا NodeJS یا …، توی تقریبا همه زبان های برنامه‌نویسی مرسوم شما می‌تونید از دیزاین‌پترن MVC توی پروژه تون استفاده کنید

بیاید کمی به مفهوم لایه‌بندی های MVC بپردازیم و درک کنیم که کار هرکدومشون چی هستش، بعدا درمورد هر کدوم از مواردشون بصورت جداگانه صحبت می‌کنیم

در حالت عادی شما وقتی با یک زبان برنامه‌نویسی مرسوم مثل PHP شروع می‌کنید به کدنویسی سمت سرور، از قاعده خاصی برای کدنویسی استفاده نمی‌کنید، هرجا که لازم شد به دیتابیس وصل میشید و data رو fetch میکنید یا query های مورد نظرتون رو اجرا میکنید و هرجا هم که لازم شد یک html نشون میدید به کاربر که مرورگر رندر کنه، کسی به شما گیر نمیده که چرا اومدی وسط html ها یک کد php نوشتی که یک query توی دیتابیس اجرا کنه و …، این مدل کدنویسی شاید راحت به‌نظر بیاد چون از قاعده خاصی پیروی نمیشه و به اصطلاح ساده‌تر ایده اینه که به هر طریقی که شده یه پروژه‌ای رو بسازیم که کار بکنه، اینکه حالا پشت صحنه چه اتفاقی میوفته زیاد مهم نیست، مهم اینه که کار میکنه (:

حالا مشکلی که پیش میاد اینه که بعد از یه مدتی نیاز میشه که پروژه رو آپدیت کنید و توسعه بدید، چون از قاعده خاصی پیروی نکردید باید بیاید و کدهارو لاین‌به‌لاین بخونید و ببینید که کجا چی نوشتید و چی ننوشتید و چیکار کردید و چیکار نکردید، حتی خیلی از وقت‌ها هم وقتی کد های قدیمی‌تون رو می‌خونید خنده‌تون میگیره که چرا اینجا اینکار رو کردم و این مدلی نوشتم، مدل بهینه‌تر اش اینه و فلانه و بهمانه (:

راه حلی که برای این مشکل پیشنهاد میشه، استفاده از دیزاین‌پترن‌ها هستش و دیزاین‌پترن MVC هم یکی از اون نوع دیزاین‌پترن‌‌ها هستش

توی دیزاین‌پترن MVC ، به‌جای اینکه ما همه کدنویسی‌مون رو در یک لایه انجام بدیم و هر جا که دلمون خواست یه چیزی رو نمایش بدیم و هر جا که دلمون خواست به دیتابیس درخواست بزنیم یا …، از یک روش اصولی و ثابتی پیروی می‌کنیم و کدنویسی‌مون رو به سه لایه مرسوم تقسیم می‌کنیم

لایه اول Model هستش، لایه‌ای که به شکل مرسوم شامل یکسری از ساختارها و خصوصیت های یک بخشی از نرم‌افزار ما هستش، می‌تونیم مثل یک جدول در دیتابیس در نظر بگیریم با ساختار مشخصی که تعریف می‌کنیم و می‌تونیم به تعداد مورد نیازمون از اون مدل، آیتم ایجاد کنیم با مقادیر مختلف، یا آیتم هایی رو ازش بگیریم

لایه بعدی View هستش، لایه‌ای که در اون به شکل مرسوم، داده هایی رو که از Model استخراج کردیم رو به View پاس میدیم و درون View نشون میدیم، به شکل مرسوم شامل تمامی کد های HTML و CSS و JS ای هست که سمت مرورگر کاربر قرار هست رندر بشه، دیتای مورد نیاز اش هم از Model ها استخراج و به View پاس داده میشه

لایه سوم هم لایه Controller هست، لایه‌ای که در اون به کنترل رویداد ها و … می‌پردازیم و مثلا وقتی کاربر یک درخواستی به سرور زد، توی Controller هندل اش می‌کنیم و پاسخ مناسبی می‌تونیم صادر کنیم، مثلا می‌تونیم طبق درخواست کاربر براش یک آیتم جدید توی Model بسازیم یا یک آیتم رو توی Model آپدیت کنیم یا یک دیتایی رو از Model بگیریم و …، و در نهایت می‌تونیم یک View جدید رو برای کاربر رندر کنیم و نمایش بدیم، میشه گفت مهم‌ترین بخش معماری MVC همین کنترلر هستش که هم وظیفه ارتباط با تعامل های کاربر رو داره و هم وظیفه ارتباط با Model رو، البته این‌ها به شکل زنجیری به هم متصل هستند و توی تصویر زیر هم می‌تونید ارتباطشون رو ببینید :

Model – View – Controller

نتیجه‌گیری

دیزاین‌پترن های مختلفی وجود دارند که می‌تونید ازشون استفاده کنید برای کدنویسی اصولی‌تر، معماری MVC هم از جمله اون موارد هست که میتونه به کدنویسی‌تون نظم بده و Maintain کردن پروژه‌هاتون رو آسون تر کنه

اگه از این مقاله خوشتون اومده می‌تونید با دوستانتون هم به اشتراک بزارید، شاد و خوش و خندون و این‌جور چیزا باشید

موفق باشید

آیا مقاله برای شما مفید بود ؟

خیر

0

تقریبا

0

بله

0

برای ثبت نظر باید وارد حساب کاربری خود شوید
رای شما با موفقیت ثبت شد
متاسفانه خطایی در ثبت نظر رخ داد

Iran Developers Telegram Group

نظرات کاربران


نظری موجود نیست , اولین نظردهنده باشید !

نکات ارسال نظرات

نظرات فینگلیش به هیچ عنوان تایید نخواهند شد

هنگام نوشتن نام و ایمیل معتبر خود را وارد نمایید

در دیدگاه هایتان از الفاظ مناسب استفاده کنید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *