Model–view–controller
Model–view–controller (обично познат како MVC ) е шаблон за дизајн на софтвер [1] најчесто користен за развој на кориснички интерфејси што ја дели логиката на поврзаната програма на три меѓусебно поврзани елементи. Ова е направено за да се одделат внатрешните претстави на информациите од начинот на презентирање и прифаќање на информацијата од корисникот.[2][3]
Првично е наменет за десктоп графички кориснички интерфејси (GUI), но стана популарен со дизајнирање семрежни прилози и таму најмогу се користи.[4] Популарните програмски јазици како JavaScript, Python, Perl, Object Pascal/Delphi, Ruby, PHP, Java, C#, Swift и Elixir имаат MVC рамки што се користат за развој на веб или мобилни апликации.
Компоненти
[уреди | уреди извор]- Model - модел
- Централната компонента на шаблонот. Тоа е динамична структура на податоци на апликацијата, независна од корисничкиот интерфејс.[5] Ги претставува податоците што се во апликацијата односно ги моделира, ги дефинира бизнис правилата за менување и управување со податоците. Обични класи во кодот.
- View - приказ
- Задолжен е за тоа како ќе се прикажува апликацијата, корисничкиот интерфејс. Тоа се предлошки кој ќе генерираат HTML во прелистувач.
- Controller - управувач
- Прифаќа влез и го претвора во команди за моделот или приказот. Односно тоа е средината и е одговорен за комуникација. Знае да комуницира со model и view. Класи кој се состојат од методи.[6]
Покрај поделбата на апликацијата на овие компоненти, шаблонот за дизајн model-view-controller ги дефинира интеракциите меѓу нив.[7]
- Моделот е одговорен за управување со податоците на апликацијата. Тој прима кориснички влез од контролорот.
- Приказот(view) значи презентација на моделот во одреден формат.
- Контролорот реагира на влезот на корисникот и извршува интеракции на објектите на моделот на податоци. Контролорот го прима влезот, по избор го потврдува и потоа го пренесува влезот на моделот.
Како и кај другите шаблони за дизајн на софтвер, MVC го изразува „јадрото на решението“ на проблемот, притоа дозволувајќи му да биде прилагоден за секој систем.[8] Посебните дизајни на MVC може значително да се разликуваат од традиционалниот опис.[9]
Историја
[уреди | уреди извор]Еден од основните согледувања во раниот развој на графички кориснички интерфејси, MVC стана еден од првите пристапи за опишување и имплементација на софтверски конструкции во однос на нивните одговорности.[10]
Тригве Реенскауг го воведе MVC во Smalltalk -79 додека беше во посета на Истражувачкиот центар Xerox Palo Alto (PARC) [11][12] во 1970-тите. Во осумдесеттите години од минатиот век, Џим Алтоф и другите имплементираа верзија на MVC за библиотеката во класата Smalltalk-80. Само подоцна, еден напис во 1988 година во „Патувањата за технологија на објекти“ (JOT) го изрази MVC како општ концепт.[13]
Моделот MVC последователно еволуираше,[14] доведувајќи до варијанти како 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 рамки имаат тенок пристап на клиент кој го става речиси целиот модел, логиката на прегледот и контролорот на опслужувачот. Во овој пристап, клиентот испраќа барања за хиперврска или испраќања на форми до контролорот, а потоа добива целосно и тековно мрежно место (или друг документ) од приказот; моделот постои целосно на опслужувачот.
Поврзано
[уреди | уреди извор]Наводи
[уреди | уреди извор]- ↑ https://www.youtube.com/watch?v=o_TH-Y78tt4&t=1667
- ↑ Reenskaug, Trygve; Coplien, James O. (20 March 2009). „The DCI Architecture: A New Vision of Object-Oriented Programming“. Artima Developer. Архивирано од изворникот (html) на 23 March 2009. Посетено на 3 August 2019.
More deeply, the framework exists to separate the representation of information from user interaction.
- ↑ Burbeck (1992): "... the user input, the modeling of the external world, and the visual feedback to the user are explicitly separated and handled by three types of object."
- ↑ Davis, Ian. „What Are The Benefits of MVC?“. Internet Alchemy. Посетено на 2016-11-29.
- ↑ Burbeck, Steve (1992) Applications Programming in Smalltalk-80:How to use Model–View–Controller (MVC)
- ↑ Simple Example of MVC (Model–View–Controller) Architectural Pattern for Abstraction
- ↑ Buschmann, Frank (1996) Pattern-Oriented Software Architecture.
- ↑ Gamma, Erich et al. (1994) Design Patterns
- ↑ Moore, Dana et al. (2007) Professional Rich Internet Applications: Ajax and Beyond: "Since the origin of MVC, there have been many interpretations of the pattern. The concept has been adapted and applied in very different ways to a wide variety of systems and architectures."
- ↑ Model–View–Controller History. C2.com (2012-05-11). Retrieved on 2013-12-09.
- ↑ Notes and Historical documents from Trygve Reenskaug, inventor of MVC.
- ↑ "A note on DynaBook requirements", Trygve Reenskaug, 22 March 1979, SysReq.pdf.
- ↑ Krasner, Glenn E.; Pope, Stephen T. (Aug–Sep 1988). „A cookbook for using the model–view controller user interface paradigm in Smalltalk-80“. The Journal of Object Technology. SIGS Publications. 1 (3): 26–49. Also published as "A Description of the Model–View–Controller User Interface Paradigm in the Smalltalk-80 System" (Report), ParcPlace Systems; Retrieved 2012-06-05.
- ↑ The evolution of MVC and other UI architectures from Martin Fowler.