مدل-نما-کنترلگر
در مهندسی نرمافزار، مدل-نما-کنترلگر یا امویسی (Model–view–controller - MVC) به یک الگوی معماری نرمافزار اطلاق میشود.
الگوی معماری امویسی به جداسازی دادههای کاربرد[۱] (از جملهٔ محتویات بخش مدل[۲]) از مؤلفههای ارائه شده بهصورت گرافیکی (بخش نما[۳]) و منطق مربوط به پردازش ورودیها (بخش کنترلگر[۴]) اقدام مینماید.[۵]
هدف الگوی معماری امویسی صرفاً یکپارچگی در معماری نرمافزار است و به کمک آن بدست گیری نرمافزار در راستای مدیریت و توسعه به سهولت انجام میگیرد.
تاریخچه [ویرایش]
امویسی برای بار نخست در سال ۱۹۷۹توسط Trygve Reenskaug و سپس کار بر روی اسمال تاک در XEROX PARC معرفی شد. پیاده سازی اصلی به طور دقیق در مقاله «برنامه نویسی کاربردی در اسمال تاک-۸۰: نحوه استفاده از مدل-نما-کنترل گر» [۶] توصیف شد.
مرور کلی [ویرایش]
گرچهامویسی انواع مختلفی دارد، کنترل جریان عموماً به صورت زیر است:
- کاربر به نوعی با واسط کاربری در تعامل است (برای مثال با فشردن دکمه ماوس).
- کنترل گر رویداد وارده از واسط کاربری را معمولاً از طریق یک کنترل گر رویداد ثبت شده و یا callback کنترل می کند و رویداد را به یک عمل مناسب کاربری قابل فهم برای مدل تبدیل می کند.
- کنترل گر، مدل عمل کاربری را اعلام می کند که احتمال دارد منجر به تغییری در وضعیت مدل شود. (برای مثال کنترل گر، سبد خرید کاربر را به روز می رساند).
- یک نما، از مدل به منظور تولید یک واسط کاربری مناسب پرس و جو می کند. نما داده خودش را از مدل می گیرد. در برخی پیاده سازی ها کنترل گر ممکن است دستورالعملی عمومی به نما بدهد تا خودش را بارگذاری کند. در سایر پیاده سازی ها نما به طور خودکار توسط مدل از تغییرات در ناظر وضعیت مطلع می شود که نیازمند به روز رسانی صفحه است.
- واسط کاربری منتظر تعاملات کاربری بیشتری می ماند که چرخه کنترل جریان را از نو آغاز می کند.
بعضی از پیاده سازی ها مانند فرم های کنسرسیوم وب جهانشمول از مفهوم نمودار وابستگی نیز برای خودکار کردن نماها زمان تغییر مدل استفاده می کنند.
هدف امویسی -با جداسازی مدل و نما- کاهش پیچیدگی طراحی الگوریتم و افزایش انعطاف پذیری و نگهداشت پذیری کد مبدأ است. همچنین امویسی برای ساده سازی طراحی سیستم های خودمختار و خودمدیریتی استفاده می شود.