Pirmuose RoR dokumentacijos sakiniuose teigiama, kad šis karkasas yra sukurtas pagal architektūros modelį. Iš tiesų tai yra struktūrinis šablonas (mol. design pattern) pagal kurio architektūrą yra kuriamos paprastos programos, o ne web aplikacijos.

architektūros naudojimas web aplikacijose atsirado seniai (šia architektūra yra paremti keli Apache projektai), tačiau pati “banga” prasidėjo tada, kai O’Reilly apibrėžė terminą “Web 2.0″. Tada, paplitus Ajax technologijų “grupei” (kas nors turite geresnį terminą?), pradėjus taikyti folksonomiją (a la taginti), į interneto puslapį pradėta žiūrėti kaip į aplikaciją. Žinoma, tokioje situacijoje norint suprogramuoti interneto svetainę kaip aplikaciją reikia taikyti paprastų aplikacijų kūrimo “filosofiją”.

veikimas yra paremtas separation of concerns (SoC) principu. Tai reiškia, kad programa yra išskaidoma į tokias dalis, kad jų funkcionalumas/poreikiai nepersidenginėtų. Šis principas yra taikomas daug kur. Vienas iš pavyzdžų būtų [x]HTML ir CSS. [x]HTML kalbos paskirtis yra nurodyti dokumento struktūrą, kai tuo tarpu CSS nurodo, kaip pats dokumentas turėtų atrodyti. Objektiškai orientuotame programavime šis principas atsispindi išskaidant užduočių atlikimą į objektus ir jų metodus. Galiu derėtis, jeigu žinojote OOP paradigmą taip pat žinojote ir apie SoC, tačiau nežinojote kaip tai pavadinti.

Pačiame šis principas pasireiškia logikos, prezentacijos ir turinio atskirymu. Kaip jau ir žinote reiškia Model-View-Controller. Trys dalys atsakingos už savo “veiklos sritį”.

Model - tam tikros srities duomenų valdymo/pateikimo vienetas. Jeigu skamba per sudėtingai, štai paprastesnis apibūdinimas: modelis gali būti atsakingas už mokesčių apskaičiavimą tam tikram pristatymui iš internetinės svetainės, privalo patikrinti ar šiandien yra tam tikro vartotojo gimtadienis, išsiųsti mėnesines naujienas el. paštu prenumeratoriams ir pan.

View - suteikia programos modeliui išvaizdą, tinkamą vartotojui suprasti (formos, sąrašai, etc.). Web aplikacijos tai ne kas kita kaip sugeneruotas HTML/CSS kodas.

Controller - atsako už modelio valdymą bei “vaizdų” pateikimus pagal atitinkamus veiksmus (vartotojo interakciją): mygtuko paspaudimas, teksto įvedimas ir pan.
Pirmoje dalyje tiek. Antroje dalyje pasistengsiu detaliau aprašyti vidinę veikimo schemą ir kaip tai yra įgyvendinta RoR karkase.

Komentarai ir originalus straipsnis: http://blog.rubyonrails.lt/mvc-i-architektura.html

Panašūs straipsniai


“MVC [I] - Architektūra” komentarų: 2

  1. dado1945

    Įdomu bus palyginti su turbogears

  2. bigzel

    dado1954: manau tikslingiau butu rails’us lyginti su python’o frameworku django, nes jie atsirado panasiu metu. O turbogears atsirado truputi veliau, todel mano subjektyvia nuomone - turbogears’ai pasieme dali rails’u ir django frameworku “isminties”. Nors velgi tai labai subjektyvu. Gal palyginam Ruby ir Pythona? :)