blog

معماری mvc و دلیل اهمیت بالای آن چیست؟

معماری MVC چیست؟

برنامه نویس ها در همه جای دنیا و هنگام کار با اکثر زبانهای برنامه نویسی، الگو ها یا روش های خاصی را برای کدنویسی انتخاب میکنند تا در آینده توسعه و فهم کدها برای خودشان یا دیگر برنامه نویس ها آسان باشد. MVC در واقع یک فریم ورک نیست بلکه یک نمونه ی معماری کدها در زبان برنامه نویسی است. یعنی چی؟ یعنی ما کد هایمان را به شکل مرتبی بر اساس این معماری مینویسیم. معماریMVC  کدنویسی ما را به گونه ای میکند که بتوانیم هر پروژه ای را که هر چقدر بزرگ است کد نویسی کنیم و احتمال سر در گم شدن یا نامنظم بودن کدها در پروژه مان به حداقل برسد. استفاده از یک روش معماری استاندارد، مانند معماری MVC در بهبود مهارت کدنویسی ما خیلی موثر خواهد بود و باعث می شود تا بتوانیم در سطح حرفه ای تری کدنویسی را انجام دهیم. کدنویسی طبق معماری MVC در ابتدا سال 1979 متولد شد و کمپانی های بزرگ از آن استفاده کردند. معماری MVC تنها مربوط به یک زبان مانند PHP یا پایتون یا سویفت یا... نیست بلکه معماری ای است که هنگام کدنویسی با هر زبانی میتوان از آن جهت کدنویسی بهتر استفاده کرد.

 

معماری MVC چگونه کار میکند؟

در استفاده از معماری MVC ما پروژه مان را به سه بخش اصلی تقسیم بندی میکنیم. Model View Controller و این تقسیم بندی راه کاملا مشخصی را جلوی ما قرار میدهد تا بتوانیم اپلیکیشن مان را کدنویسی کنیم. اغلب افراد تصور میکنند که معماری MVC چیزی فرا تر از این مسائل است، در حالی که همه ی کد ها در معماری MVC در این سه بخش تقسیم بندی شده؛ چرا که معماری MVC تنها یک روش فکر کردن و پردازش کدهاست که برنامه ی ما بر طبق آن کار میکند.

معماری MVC تنها در حوزه ی کدنویسی اپلیکیشن های تحت وب کاربرد ندارد، حتی زمانی که در ابتدا این معماری به وجود آمد دنیای اینترنت به شکل امروزی خود وجود نداشت! ولی باز با این حال برنامه نویسی اپلیکیشن های تحت وب یا وبسایت ها اکثرا بر اساس این معماری انجام میشود.

اهمیت مدل ویو نما کنترلر در معماری MVc

مدل، ویو، کنترلر، هر کدام چه وظایفی دارند؟

معماری mvc از سه رکن اصلی که مدل – ویو و کنترلر هست، ایجاد شده. اما کار هر کدارم از اینها چیست؟ یک مثال بسیار ساده در این مورد وجود دارد که کار مدل ویو وکنترلر به سادگی قابل درک خواهد بود. تصور کنید که به یک رستوران برای صرف شام رفت اید. بر اساس منوی روی میز غذای خود را انتخاب میکنید. گارسون حاضر در آنجا سفارش شما را به آشپز خانه میبرد، اما خود گارشون قادر به آماده کردن آن نیست. وظیفه ی آشپز آماده کردن غذای شماست. آشپز با استفاده از مواد غذایی داخل یخچال غذای شما را آماده میکند و به گارسون میدهد تا گارسون غذا را به میز ببرد. اگر این رستوران، اپلیکیشن ما باشد آنگاه مشتری ویو خواهد بود و گارسون کنترلر ما است. همینطور آشپز کار مدل را انجام میدهد.

در معماری mvc ویو همان رابط کاربری ما میشود که کاربر از طریق آن در خواستی را ارسال میکند یا نتیجه ی در خواست خود را میبیند. کنترلر کار پردازش را در برنامه انجام میدهد و مدل هم با استفاده از داده ها (که از دیتابیس یا API) در اختیارش قرارگرفته است، نتیجه ی درخواست کاربر را از طریق کنترلر به کاربر ارسال میکند. دقت داشته باشید که مدل با دیتا تفاوت دارد، اغلب تصور می شود که مدل همان داده های ما هستند ولی اینگونه نیست. مدل تنها دیتا ها و داده های داخل دیتا بیس را مدیریت می کند و اجازه تغییر، اضافه کردن یا حذف دیتا ها را تنها بعد از تایید شدن می دهد. دیتا ها رکن اصلی برنامه ما هستند و تنها با مدل سر و کار دارند اما در برخی کتاب ها و منابع مهندسی نرم افزار افراد قائل بر این هستند که در معماری mvc داده ها از دیتا بیس باید مستقیم به سمت ویو ها فرستاده شود و نیازی به پردازش در مدل یا کنترلر ندارد که این موضوع از استاندارد های لازم برخودار نیست و توضیه میشود حتما داده ها توسط کنترلر به سمت view ها یا نما ها ارسال شود.

ارتباط بین مدل ویو و کنترلر در ام وی سی

اهمیت استفاده از مدل MVC چیست؟

استفاده کردن از مدل ام وی سی از چندین جهت اهمیت بسیار زیادی دارد.

اول اینکه پروژه های بزرگ را بدون استفاده از معماری mvc نمیتوان پیاده سازی کرد. اگر هم پیاده سازی شود کار بسیار سخت و دشواری خواهد بود. در عین حال قابلیت توسعه ی پروژه و دیباگ کردن آن به شدن کاهش پیدا میکند. در پروژه هایی که از معماری MVC در آن استفاده نکرده ایم، رفع یک خطا یا باگ ساعت ها میتواند زمان بگیرد.

مورد دوم این است که اگر بخواهید به عنوان یک برنامه نویس حرفه ای در یک مجموعه یا یک تیم فعالیت داشته باشید باید با معماری MVC آشنا باشید، چرا که در تمامی دنیا اکثر برنامه نویسهای حرفه ای در کدنویسی پروژه های خود از این معماری استفاده میکنند. آشنا نبودن با مدل mvc یعنی آشنا نبودن به روش برنامه نویسی اکثر برنامه نویس ها. به این موضوع توجه داشته باشید که معماری mvc در سطوح پیشرفته برنامه نویسی استفاده می شود و اگر میخواهید به عنوان یک برنامه نویس خیلی حرفه ای شناخته شوید به این نکته توجه داشته باشید که بدون استفاده و کدنویسی پروژه هایتان با معماری MVC شناخته شدن به یک برنامه نویس خبره برای شما کار بسیار دشواری است. 

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

و مورد آخر در معماری MVC این است که کد هایمان نسبت به همدیگر مستقل هستند. یعنی اینکه زمانی که ما کدهای مربوط به Model خود را کدنویسی میکنیم، ارتباط خاصی در کدهای آن با کد های view وجود ندارد. هر سه بخش model -view -controller ما از یکدیگر جدا هستند و باگ و خطا در یک بخش از کد های ما در کار بخش های دیگر خللی ایجاد نمیکند.

 

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

علیرضا قربانی

28 بهمن 1398

خیلی مقاله ی کامل و خوبی بود. واقعا استفاده از معماری MVC خیلی برای پروژه ها لازمه