Model–view–controller

десно|мини|220x220пкс| Дијаграм на интеракција во рамките на моделот MVC
**Model–view–controller** (обично познат како **MVC** ) е шаблон за дизајн на софтвер  најчесто користен за развој на кориснички интерфејси што ја дели логиката на поврзаната програма на три меѓусебно поврзани елементи. Ова е направено за да се одделат внатрешните претстави на информациите од начинот на презентирање и прифаќање на информацијата од корисникот.

Првично е наменет за десктоп графички кориснички интерфејси (**GUI**), но стана популарен со дизајнирање семрежни прилози и таму најмогу се користи. Популарните програмски јазици како JavaScript, Python, Perl, Object Pascal/Delphi, Ruby, PHP, Java, C#, Swift и Elixir имаат MVC рамки што се користат за развој на веб или мобилни апликации.

## Компоненти

; Model - модел
: Централната компонента на шаблонот. Тоа е динамична структура на податоци на апликацијата, независна од корисничкиот интерфејс. Ги претставува податоците што се во апликацијата односно ги моделира, ги дефинира бизнис правилата за менување и управување со податоците. Обични класи во кодот.
; View - приказ
: Задолжен е за тоа како ќе се прикажува апликацијата, корисничкиот интерфејс. Тоа се предлошки кој ќе генерираат HTML во прелистувач.
; Controller - управувач
: Прифаќа влез и го претвора во команди за моделот или приказот. Односно тоа е средината и е одговорен за комуникација. Знае да комуницира со model и view. Класи кој се состојат од методи.

Покрај поделбата на апликацијата на овие компоненти, шаблонот за дизајн model-view-controller ги дефинира интеракциите меѓу нив.

* Моделот е одговорен за управување со податоците на апликацијата. Тој прима кориснички влез од контролорот.
* Приказот(view) значи презентација на моделот во одреден формат.
* Контролорот реагира на влезот на корисникот и извршува интеракции на објектите на моделот на податоци. Контролорот го прима влезот, по избор го потврдува и потоа го пренесува влезот на моделот.

Како и кај другите шаблони за дизајн на софтвер, MVC го изразува „јадрото на решението“ на проблемот, притоа дозволувајќи му да биде прилагоден за секој систем. Посебните дизајни на MVC може значително да се разликуваат од традиционалниот опис.

## Историја
Еден од основните согледувања во раниот развој на графички кориснички интерфејси, MVC стана еден од првите пристапи за опишување и имплементација на софтверски конструкции во однос на нивните одговорности.

Тригве Реенскауг го воведе MVC во Smalltalk -79 додека беше во посета на Истражувачкиот центар Xerox Palo Alto (PARC)  во 1970-тите. Во осумдесеттите години од минатиот век, Џим Алтоф и другите имплементираа верзија на MVC за библиотеката во класата Smalltalk-80. Само подоцна, еден напис во 1988 година во *„Патувањата за технологија на објекти“* (JOT) го изрази MVC како општ концепт.

Моделот MVC последователно еволуираше, доведувајќи до варијанти како hierarchical model–view–controller(HMVC),model–view–adapte(MVA), model–view–presenter(MVP)model–view–viewmodel(MVVM), и други кои го прилагодија MVC на различни контексти.

Употребата на моделот MVC во семрежни прилози експлодира во популарност по воведувањето на NeXT е WebObjects во 1996 година, која првично беше напишано во Objective-C (кои позајмиле во голема мера од Smalltalk) и помогна спроведуваат принципите MVC. Подоцна, моделот MVC стана популарен кај развивачите на Java кога WebObjects беше пренесен во Java. Подоцнежните рамки за Java, како што е Spring Framework (објавен во октомври 2002 година), ја продолжија силната врска помеѓу Java и MVC. Воведувањето на рамките Django (јули 2005 година, за Python) и Rails (декември 2005 година, за Ruby), и двајцата имаа силен акцент на брзото распоредување, ја зголеми популарноста на MVC надвор од традиционалното опкружување на претпријатијата во кое одамна е популарно. Веб-рамките на MVC сега имаат големи удели на пазарот во однос на веб- алатките што не се MVC.

## Користење во семрежни прилози
Иако првично беше развиен за десктоп компјутери, MVC е широко прифатен како дизајн за апликации на World Wide Web на главните програмски јазици. Создадени се неколку веб-рамки што го применуваат моделот. Овие софтверски рамки се разликуваат во нивните толкувања, главно во начинот на кој одговорностите на MVC се поделени помеѓу клиентот и опслужувачот.

Некои веб MVC рамки имаат тенок пристап на клиент кој го става речиси целиот модел, логиката на прегледот и контролорот на опслужувачот. Во овој пристап, клиентот испраќа барања за хиперврска или испраќања на форми до контролорот, а потоа добива целосно и тековно мрежно место (или друг документ) од приказот; моделот постои целосно на опслужувачот.

## Поврзано
* Проектирање на програмска опрема

## Наводи

Категорија:Category:Семрежни прилози