معرفی ساده معماری MVC

خب میخوام به صورت خیلی ساده درمورد چیزی که این روز ها خیلی درموردش شنیده میشه حرف بزنم

معماری MVC :

این معماری یا اینجوری بگم طرز فکر، اکثرا توی بک اند وب اپلیکیشن ها مورد استفاده قرار میگیره و چون که ساده و سرراست هستش خیلی فراگیر شده و حتی فریمورک هایی مثل , spring, django که امروزه استفاده خیلی زیادی ازشون میشه برمبنای همین معماری نوشته شدن کار میکنن.

اول بگیم مخفف چیه ؟

‌Model, View, Controller

یک شکل کلی
یک شکل کلی

خب این معماری داره یک وب سرور رو به سه تا قسمت تقسیم میکنه که بریم ببینیم هر قسمت منظورش چیه ؟

  • مدل (Model) : تقریبا از اسمش مشخصه. ما داریم مسئلمون رو مدل میکنیم به آبجکت و کلاس توی کدمون.

اگه با مفاهیم آبجکت ارینتد آشنا نسیتید سمت این معماری نیاید و همین الان برید درموردش بخونید و یادبگیرید و بعد بیاید ادامه این رو بخونید :)

حالا چه چیز هایی رو مدل میکنیم ؟ معمولا جدول (table) های دیتابیس اینجا به صورت کلاس ظاهر میشن.

در واقع اکثر فریمورک هایی ک mvc هستن orm هم هستن.

حالا orm چیه ؟ خلاصه بگم میشه Object-relational mapping ینی اینکه روابط دیتابیس رو به صورت کلاس بیاری تو کد و آبجت اورینتدی برخورد کنی با مسئله.

پس مثلا اگه یدونه جدول User داشته باشیم توی دیتابیس یدونه هم کلاس User توی مدل داریم که همون مشخصات چیزی رو ک توی دیتابیس هست رو داره.

حالا لزوما دیتابیس رو مدل نمیکنیم. کلا هر چیزی که نیاز داریم که کلاس باشه توی این قسمت ایمپلیمنت میکنیم و میریم جلو.

کنترلر (Controller) : اینجا جاییه که مشخص میکنیم کی کجا بره :)

توی یک وب سرور ریکوئست های مختلفی سمتمون میاد و همشون هم جواب میخوان !

اینجا مشخص میکنیم که مثلا یه چیزی از یه اندپوینت (end point) خاصی اومد کجا بره و چه توابعی کال بشه تا جوابش رو بدیم.

ویو (View) : یادتونه دیگه تو خط قبلی گفتم کنترلر میگه چ توابعی به ازای ریکوئست های مختلف صدا زده بشن ؟

این توابع توی ویو هستن و کارشون جواب دادن به یک سری ریکوئست خاص هستش.

حالا چجوری ؟ این توابع از خودشون که چیزی ندارن ؟ پس با چی جواب میدن ؟

درست حدس زدید :) مدل ها

دیتاهای مورد نیازشون رو از مدل هامون ک همون دیتابیسمون هستن تقریبا میگیرن (حالا یا یه چیزی رو از اون ها پیدا میکنن و بهمون میدن مثلا اطلاعات یه یوزر خاص رو و یا اینکه یه چیزی رو به اون ها اضافه میکنن بازم مثلا اینکه یک یوزر رو توی دیتابیس اد کنن )

این جواب دادن میتونه برگردوندن یک جبیسون به عنوان ریسپانس باشه یا رندر کردن و نمایش دادن یه صفحه html.

در هر صورت یک یه ورودی میگیرن و یه خروجی برمیگردونن :)


خب تموم شد ! همین قد ساده و راحت

مهم اینه که بفهمید واقعا مفهوم کار چیه ابزار زیاد مهم نیست

اما توصیه میکنم برای یادگیری بهتر جنگو رو امتحان کنید برای mvc چون که راحت تر میتونید باهاش ارتباط برقرار کنید اگه تازه کار هستید :)

آخرش هم ک مثل همیشه خوشحال میشم بگید اینجای حرفت غلطه :) و کمکم کنید بهترش کنم نوشته هامو با کامنت هاتون