MVC چیست؟

فروردین 17, 1397     میثم عبداللهی    

MVC

سلام به شما کاربران عزیز و دوست داشتنی. امروز میخوام یک الگوی معماری نرم افزار رو بهتون معرفی کنم. در مهندسی نرم افزار MVC یا Model-View-Controller به یک الگوی نرم افزار گفته میشه. الگوی ساختاری MVC به جداسازی داده های کاربر (محتویات بخش Model) از مولفه های ارائه شده به صورت گرافیکی (بخش View) و منطق مربوط به پردازش ورودی ها (بخش Controller)  اقدام میکنه.هدف الگوی MVC صرفا یکپارچگی و ساخت یک نظم ثابت در ساختار نرم افزاره که بوسیله اون میشه نرم افزار رو مدیریت کرد و به راحتی گسترش داد.

تاریخچه

Trygve Reenskaug در حین ملاقات زروکس در سال 1970 معماری MVC رو در Smalltalk-76 معرفی کرد. در سال 1980 معماری MVC به عنوان کتابخونه ی کلاس Smalltalk-80 معرفی شد. MVC پیوسته در حال پیشرفت و تکامل بوده و موضوع های گوناگون مختلفی از جمله JMVC و MVA و MVP و MVVM و MVC های تطبیق داده شده ی دیگری رو در موضوعات مختلف ایجاد و مطرح کرده. معرفی فریم ورک های Django (فریم ورکی برای پایتون) و Rails (فریم ورکی برای روبی) هر دو تاکید بروی نظم دادن سریع داشتن و به همین دلیل به شهرت MVC در خارج از فضای سنتی پرداختند. از جمله فریم ورک هایی که از معماری MVC استفاده میکنن میشه فریم ورک Titanium رو نام برد .

معماری MVC

الگوی معماری MVC بخش های مدل سازی دامنه، نمایش و منطق تجاری رو به سه بخش تقسیم میکنه که در ادامه به توضیه اون ها میپردازم.

1 – Model (مدل)

روند انتقال داده رو مدیریت میکنه و در خواست هایی که در مورد وضعیت مدل مانند تغییر فیلدی از رکورد که وجود داره رو پاسخ میده. لایه مدل عملیات هایی که موجب تغییر در وضعیت خودش میشه رو انجام میده (معمولا این تغییرات از سمت لایه کنترلر بوجود میان).

2 – View (نمایش)

نمایش اطلاعات به کاربر رو مدیریت میکنه.

3 – Controller (کنترلر)

بخش ورودی های کاربر رو مدیریت میکنه و لایه های مدل و نمایش مربوط به اون رو فراخوانی میکنه و داده ها رو از لایه مدل به لایه نمایش اطلاعات منتقل میکنه.

MVC- عکس1

استقلال در لایه مدل

طبق تعریف های گفته شده هر دو لایه کنترلر و نمایش به لایه مدل وابسته هستند اما در مورد لایه مدل این وابستگی وجود نداره و به صورت مستقل عمل میکنه. این ویژگی میتونه به تولید بخش مستقل که قابلیت تست بالایی داره منجر بشه. در نرم افزار های وب این تفکیک و جداسازی به خوبی دیده میشه ولی در نرم افزار هایی که طراحی UI و کد های پردازش و منطق در هم پیچیدگی دارن یا به اصطلاح Rich-Client ها، این موضوع دیده نمیشه و وجود نداره.

تست پذیری

موقع استفاده از معماری MVC تست پذیری بخش Back-end به شدت افزایش پیدا میکنه. هر چند که ایجاد تست های اتوماتیک برای اجزا و عناصر واسط گرافیکی یا front-end هنوز کار دشواری هست ولی این جدا کردن اجزا و بخش ها میتونه کمک بزرگی برای افزایش تست پذیری باشه. برای انجام تست های مختلف، ابزار های کاربردی زیادی وجود دارن که زمان تست رو به شدت کاهش میدن و میزان اعتماد به بخش های مختلف نرم افزار رو بالاتر میبرن.

فواید استفاده از معماری MVC

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

مضرات استفاده از معماری MVC

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

برای یادگیری این معماری میتونین از مراجع مختلف استفاده کنین ولی من بهتون پیشنهاد میدم از این سایت استفاده کنین و لذت ببرین.

 

دسته‌بندی‌ : بلاگ

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

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

Rating*