مدل-نما-کنترل‌گر

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
معماری مدل-نما-کنترل‌گر

در مهندسی نرم‌افزار، مدل-نما-کنترل‌گر یا ام‌وی‌سی (Model–view–controller - MVC) به یک الگوی معماری نرم‌افزار گفته می‌شود.

الگوی ساختاری ام‌وی‌سی به جداسازی داده‌های کاربرد[۱] (از جملهٔ محتویات بخش مدل[۲]) از مؤلفه‌های ارائه شده به‌صورت گرافیکی (بخش نما[۳]) و منطق مربوط به پردازش ورودی‌ها (بخش کنترل‌گر[۴]) اقدام می‌نماید.[۵]

هدف الگوی ساختاری ام‌وی‌سی صرفاً یکپارچگی در ساختار نرم‌افزار است و به کمک آن بدست گیری نرم‌افزار در راستای مدیریت و گسترش به سادگی انجام می‌گیرد.

تاریخچه[ویرایش]

در یکی از بینش های ابتدایی در ابتدای گسترش و پیشرفت واسط گرافیکی کاربر MVC به عنوان یکی از راه حل ها و بکار گیری ساختار نرم افزاری به عنوان یک وظیفه انتخاب شد. Trygve Reenskaug در حین ملاقات زروکس (مرکز تحقیقاتی پالو التو) در 1970 , MVC را در Smalltalk-76 معرفی کرد. در سال 1980 جیم اتوف و چند نفر دیگر یک ورژن از mvc را برای کتابخانه ی کلاس Smalltalk-80 معرفی کردند و بعدا در سال 1988 در جورنال ابجکت تکنولوژی MVC را به عنوان یک مفهوم کلی معرفی کرد. MVC به طور پیوسته در حال پیشرفت بوده و موضوع های گوناگونی مانند hierarchical model-view-controller(JMVC) و model-view-adapter(MVA) و model-view-presenter(MVP) و model-view-viewmodel(MVVM) و MVC های تطبیق داده شده ی دیگری را در موضوع های مختلف ایجاد کرده. استفاده از MVC در وب اپلیکیشن ها بعد از معرفی وب ابجکت ها ی apple که در واقع با Objective-C که عمدتا از Smalltalk گرفته شده بود نوشته شده بود در سال 1996 به صورت انفجاری افزایش یافت و به قوی تر شدن اصول MVCکمک کرد. بعدا روند MVC توسط پیشرفت دهنده های جاوا معروف شد وقتی وب ابجکت ها به جاوا مربوط شدند . فریم وورک های بعدی جاوا مانند Spring(در اکتبر 2002 منتشر شد) رابطه ی جوا و MVC را قوی تر کرد. معرفی فریم وورک ها Django (جولای 2005 برای پایتون) و Rails (دسامبر 2005 برای روبی) هر دو تاکید روی نظم دادن سریع داشتند و شهرت MVC را در خارج از محیط سنتی افزایش داد. در حال حاضر MVC framework ها سهم بزرگی از بازار را که مرتبط با non MVC Tollkit هست را دارد.

مرور کلی[ویرایش]

گرچه‌ام‌وی‌سی گونه های بسیار دارد، کنترل جریان عموماً به صورت زیر است:

  1. کاربر به نوعی با میانجی کاربردی در اندر کنش است (برای مثال با فشردن دکمه ماوس).
  2. کنترل گر رویداد وارده از میانجی کاربردی را معمولاً از طریق یک کنترل گر رویداد ثبت شده یا callback کنترل می کند و رویداد را به یک عمل مناسب کاربری قابل فهم برای مدل تبدیل می کند.
  3. کنترل گر، مدل عمل کاربری را اعلام می کند که احتمال دارد منجر به تغییری در وضعیت مدل شود. (برای مثال کنترل گر، سبد خرید کاربر را به روز می رساند).
  4. یک نما، از مدل به منظور تولید یک واسط کاربری مناسب پرس و جو می کند. نما داده خودش را از مدل می گیرد. در برخی پیاده سازی ها کنترل گر ممکن است دستورالعملی عمومی به نما بدهد تا خودش را بارگذاری کند. در سایر پیاده سازی ها نما به طور خودکار توسط مدل از تغییرات در ناظر وضعیت مطلع می شود که نیازمند به روز رسانی صفحه است.
  5. واسط کاربری منتظر کنش کاربردی بیشتری می ماند که چرخه کنترل جریان را از نو آغاز می کند.

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

هدف ام‌وی‌سی -با جداسازی مدل و نما- کاهش پیچیدگی طراحی الگوریتم و افزایش نرمی و نگهداشت پذیری کد مبدأ است. همچنین ام‌وی‌سی برای ساده سازی طراحی سیستم های خودرای و خودمدیریتی استفاده می شود.

توضیحات[ویرایش]

مانند بقیه ی معماری نرم افزار ها MVC راه حل اصلی یک مشکل است در حالی که میتواند خود را با هر سیستمی وفق دهد. معماری MVC با یک شرح سنتی به صورت زیر است: اجزا: مدل :قسمت اصلی و مرکزی است که رفتار اپلیکیشت را در قالب problem domain (مشکل دامنه) اطهار میکند و از واسط کاربری مستقل است و به طور مستقیم داده و منطق وقوانین اپلیکیشن را مدیریت میکند. دید (view) : دید میتواند هر نمایشی از خروجی اطلاعات باشد مثل یک چارت یا دیاگرام. چند دید برای اطلاعات یکسان ممکن است برای مثال یک بار چارت برای مدیر و یک تولبار برای حسابداران. کنترلر: کنترلر ورودی ها را میپذیرد و برای مدل یا دید به فرمان تبدیل میکند. بر هم کنش: به علاوه برای تقسیم اپلیکیشن به سه قسمت ,طراحی مدل و دید و کنترلر برهم کنش بین ان ها را مشخص میکند. یک مدل(model ) داده ی باز یابی شده از دستور کنترلر و نمایش داده شده در دید را ذخیره میکند. یک دید(view ) بر اساس تغییر در مدل خروجی را به کاربر میدهد. یک کنترلر میتواند با فرستادن دستور به مدل وضعیت مدل را ارتقا دهد(تغییر یک داکیومنت) .همچنین میتواند فرمان ها را به دید های مرتبط بفرستد تا حضور دید را د مدل تغییر دهد.

فایده ها و زیان ها[ویرایش]

فایده های MVC :

1-قابلیت پیشرفت دادن همزمان : یعنی همزمان چند نفر میتوانند روی مدل و کنترلر و دید ها یا همان view کار کنند.

2- برخورد بالا : یعنی گروه بندی به صورتی انجام شده که قسمت های مرتبط با یکدیگر گروه بندی شده اند.

3- جفت شدن محدود : یعنی مدل ها و کنترلر ها با یکدیگر ارتباط و وابستگی کمی دارند و این یک مزیت است.

4-سهولت تغییر: چون اشتراک و برخورد میان قسمت های مختلف کم است امکان تغییر دادن قسمت های مختلف آسان است.

5-چند دید مختلف برای یک مدل : مدل ها میتوانند چندین مدل داشته باشند.

مضرات MVC :

1-هدایت یا دنبال کردن کد: هدایت یا دنبال کردن فریم وورک میتواند پیچیده باشد زیرا به این نیاز است که کاربر خود را با ضوابط و معیار های ساختاری MVC وفق دهد.

2-سازگاری چند ساختاری : خصوصیت چند ساختاری بودن باعث پراکندگی و ناسازگاری میان اجزا میشود بنا بر ای نیاز است که کسانی که آن را پیشرفت میدهند سازگاری و هماهنگی میان اجزا حفظ شود.

3-کسانی که از MVC استفاده میکنند باید در چند زمینه ی تکنولوژی مهارت داشته باشند.

منابع[ویرایش]

  1. Application
  2. Model
  3. View
  4. Controller
  5. اینترنت و وب جهان‌شمول: چگونه آن‌را برنامه‌نویسی کنیم ص. ۹۶۴