Interneto tinklapių architektūriniai šablonai/MVK


Modelis-Vaizdas-Kontroleris architektūrinis šablonas


Kontekstas

keisti

Programoje galima logiškai išskirti tokias atskiras dalis, kaip dalykinės srities logika, prezentacija ir naudotojo galimi su sistema veiksmai. Žmonės ar priemonės puikiai tinkantys dirti su viena sritimi, nelabai yra tinkami dirbti kitoje srityje. Dažnai vieni žmonės kuria puslapių dizainą ir HTML kodą, tačiau kiti – programos dalį, atsakingą už verslo srities logiką. Taip pat ir įrankiai dažniausiai yra specializuoti.

Problema

keisti

Reikia struktūrizuoti programos kodą taip, kad naudotojo sąsajos kodas, užklausų mechanizmo kodas bei dalykinės srities logikos kodas būtų lengvai keičiamas ir testuojamas atskirai bei būtų galima paskirti atskirus darbus skirtingiems žmonėms. Pvz. kai Java kodas, atsakingas už verslo transakcijas persipynęs su kodu generuojančiu HTML, prireikus pakeisti HTML kodą, dažnai tai pakankamai sunkus darbas.

Sprendimas

keisti

Naudodami MVK šabloną mes atskiriame kodą atsakingą už sistemos modelį, vaizdą ir kontrolę.

Modelis

keisti

Modelis yra duomenų, taisyklių, metodų prieiti prie duomenų ir juos keisti rinkinys. Modelis saugo aplikacijos būseną. Atsako į užklausas apie būseną. Pateikia metodus būsenai keisti ir valdyti aplikaciją. Trumpiau būtų galima sakyti, kad modelis yra viskas, kas susiję su dalykinės srities ar verslo logika. Modelis yra nepriklausomas nuo kontrolerio ir vaizdo komponentų.

Vaizdas

keisti

Atsako už modelio pavaizdavimą naudotojui. Naudojasi modeliu. Vaizdo komponentas dažniausiai pateikia rezultatą HTML kodo pavidalu. Remiasi modeliu.

Kontroleris

keisti

Naudotojo komandas ar užklausas perduoda modeliui, bei parenka reikalingą vaizdą. Apibrėžia aplikacijos veiksmus(veiksmus, kuriuos gali atlikti naudotojas), suriša naudotojo veiksmus su atitinkamais modelio veiksmais. Ši dalis yra atsakinga už visą darbą su interneto protokolu ir gautų užklausų apdorojimą. Priklausomas nuo modelio ir vaizdo komponentų.

Rezultatai

keisti
  • Tas pats modelio komponentas gali būti panaudojamas keliose vietose.
  • Lengviau testuoti atskiras dalis.
  • Lengviau keisti atskiras dalis.
  • Kontrolerio ir vaizdo komponentams lengviau pritaikomos kodo generavimo ir konfigūracijos valdymo priemonės.