Jos ohjelmistokehityksessä on ongelmia, sen suunnittelumalli on tärkein ratkaisu tämän korjaamiseen. Ne ovat kuin ennalta määritettyjä piirustuksia, joita käytämme projektisi oliosuunnitteluongelmien ratkaisemiseen. Ensin se selvittää, missä ongelma on, ja sitten korjaa sen sekä kuvailee menettelyn ja sen seuraukset. MVC ja MVC2 ovat kaksi erilaista lähestymistapaa kuuluisaan MVC (Model View Controller) -arkkitehtuurimalliin.
MVC vs MVC2
Ero MVC:n ja MVC2:n välillä on se, että MVC on sovellussuunnittelumalli, joka koostuu kolmesta toisiinsa kytketystä osasta, kun taas MVC2 on monimutkaisempi malli, jossa sovelluksen tilan ja esityksen ohjauslogiikan irrottaminen tehdään. MVC sisältää mallin (tiedot), näkymän (käyttöliittymä) ja ohjaimen (prosessipyyntö). Suurin ero MVC:n ja MVC2:n välillä on monimutkaisuus. Java-maailman verkkosovelluksissa kaksi yleistä suunnittelumallia (Model 1 ja Model 2) liittyvät läheisesti MVC:hen ja niitä kutsutaan usein virheellisesti MVC1:ksi (tai vain MVC:ksi) ja MVC2:ksi.
MVC oli ensimmäisen sukupolven lähestymistapa Java-verkkosovelluksiin, joissa JavaServer Page (JSP) -sivuja käytettiin käyttöliittymänä yhdessä JavaBeansin kanssa, joka pystyi kapseloimaan useita objekteja yhdeksi objektiksi MVC-arkkitehtuurin toteuttamiseksi. Käyttäjäpyynnöt selaimelta lähetetään JSP:lle, joka pitää sisällään ohjaimen logiikan ja sitoo mallin dataa varten, joka päivittää näkymän ja lähettää vastauksen takaisin käyttäjälle, joka näytetään käyttöliittymässä. Tämä lähestymistapa yhdistää Controller- ja View-toiminnot JSP-sivulla ja rikkoo siten MVC-paradigman.
Sun Microsystem org esitteli MVC2:n suunnittelumallina, joka ei riko MVC-paradigmaa, toisin kuin MVC, jossa liiketoimintalogiikka erotettiin näkymistä ja kaikki asiakaspyynnöt käsiteltiin yhdessä paikassa eikä jokaisessa MVC:n JSP-tiedostossa. MVC2-mallissa JSP on korvattu servletillä ohjaimen logiikkaa varten.
Vertailutaulukko MVC:n ja MVC2
Vertailuparametri | MVC | MVC2 |
Määritelmä | MVC:ssä yksi komponentti vastaa pyyntöjen vastaanottamisesta ja vastausten lähettämisestä. | MVC2:ssa on useita komponentteja pyyntöjen vastaanottamiseen ja vastausten lähettämiseen. eli Controller & View. |
Navigointi | MVC:ssä jokaisella JSP:llä on ohjain- ja näkymälogiikka, joka määrittää seuraavan näkymäsivun navigoinnin, jolloin se jaetaan uudelleen. | MVC2:ssa servlet sisältää seuraavan näkymäsivun navigointilogiikan, mikä tekee siitä keskitetyn |
Aikaavievä | Koodin kirjoittaminen vie enemmän aikaa mukautettujen JSP-tunnisteiden kehittämiseen komentosarjatunnisteiden välttämiseksi | Kehittämiseen menee vähemmän aikaa, koska kaikki navigoinnin ohjaus on keskitetty. |
Itsenäisyys | Liiketoimintalogiikka ja esityslogiikka on yhdistetty JSP:ssä, joten web-suunnittelijat ja web-kehittäjät eivät voi työskennellä samanaikaisesti. | Koska logiikka ja näkymä eroavat toisistaan, suunnittelija ja kehittäjä voivat työskennellä yhdessä. |
Uudelleenkäytettävyys | Sitä on vaikeampi käyttää uudelleen ja laajentaa logiikan ja näkymän tiiviin yhteyden vuoksi | Sitä on helppo käyttää uudelleen ja laajentaa, mikä sopii suurempiin sovelluksiin |
Mikä on MVC?
MVC on ohjelmistosuunnittelun toistuvien ongelmien arkkitehtoninen suunnittelumalli, joka antaa korkean tason kuvauslähestymistavan ratkaisuun. MVC-arkkitehtuurissa on kolme moduulia: malli, näkymä ja ohjain.
Malli: Se edustaa tietojen tilaa (jotka näytetään käyttäjälle katselusivulla).
Näytä: Näkymämoduuli on käyttöliittymä, jonka kautta käyttäjä suorittaa toiminnon ja viestii sisäisesti palvelimelle.
Ohjain: Ohjainmoduuli käsittelee käyttäjän pyynnöt, liiketoimintalogiikkaa ja manipuloi mallin avulla käyttöliittymään näytettävää dataa.
MVC alkaa siten, että JSP hyväksyy asiakaspyynnön, joka toimii yhdessä JavaBeansin kanssa asiakkaalle lähetettävän tiedonkäsittelylogiikkaan. Työ on jaettu JavaBeansin ja JSP:n kesken, jossa JSP kutsuu JavaBeansia ja liiketoimintalogiikkaa, jossa JavaBeans kutsuu sisäisesti tietokantaa tallentaakseen/hakeakseen tiedot. Lopulta JSP lähettää vastauksen takaisin asiakkaalle, joka päivittää näkymän selaimessa.
JavaBeans, jota kutsutaan myös Beaniksi, on vastuussa useiden objektien kapseloinnista yhdeksi objektiksi, kun taas JSP:ssä on sekä ohjain- että näkymälogiikka. MVC:tä kutsutaan myös sivukeskeiseksi, koska sillä on suora pääsy toiselle näkymäsivulle, joka on ihanteellinen pienempiin sovelluksiin.
Mikä on MVC2?
Useimmat ohjelmistosuunnittelijat ajattelevat, että MVC2 on parannettu versio MVC:stä, kuten versio 2.0; se ei ole. Malli 1 ja malli 2 kehitettiin samanaikaisesti, ja ne ovat kaksi muunnelmaa siitä, miten asiat pitäisi tehdä.
MVC2 on monimutkaisempi malli, jossa sovelluksen tilan ja esityksen ohjauslogiikka irrotetaan. Siinä on ohjain, johon on kirjoitettu logiikka käsittelemään kaikki saapuvat pyynnöt ja tarvittavat toimenpiteet, kuten navigointi toiselle näkymäsivulle tai mallin tilan päivittäminen.
Tässä MVC2:ssa servlet toimii ohjainkerroksena, joka on myös rajapinta näkymäkerroksen ja mallikerroksen välillä, jossa se vastaanottaa pyynnön asiakkaalta tai käyttöliittymältä, joka on vain näkymäkerros, ja käsittelee ne tarvittaessa asianmukaisella validoinnilla. JSP:ssä on näkymälogiikka, joka käyttää sisäisesti Beansia, joten jos servletit päivittävät mallin tilan, se näkyy näkymäsivulla.
Toisin kuin MVC, MVC2:n JSP:ssä ei ole sekä ohjaimia että näkymälogiikkaa; sen ainoa vastuu on hakea mallin päivitetty tila kyseisestä servletistä näytettäväksi näkymäsivulla.
Tärkeimmät erot MVC:n ja MVC2:n välillä
Sekoitamme usein MVC2:n MVC:n 2.0-versiona, mutta se ei kuitenkaan ole, se on Java-suunnittelumalleja, joissa MVC2-arkkitehtuuri on monimutkaisempi ja sopii parhaiten suurempiin sovelluksiin.
Erotustekijä MVC- ja MVC2-suhteiden välillä voidaan tiivistää seuraavista syistä:
- MVC:ssä yksi komponentti vastaa pyyntöjen vastaanottamisesta ja vastausten lähettämisestä, mutta MVC2:ssa on useita komponentteja pyyntöjen vastaanottamiseen ja vastausten lähettämiseen. eli Controller & View.
- MVC1 yhdistää tiiviisti esityslogiikan liiketoimintalogiikkaan, mutta MVC 2 eristää tai irrottaa esityslogiikan liiketoimintalogiikasta.
- MVC:ssä Business-logiikka ja esityslogiikka on yhdistetty JSP:ssä, joten web-suunnittelijat ja web-kehittäjät eivät voi työskennellä samanaikaisesti, mutta MVC2:ssa logiikka ja näkymä on erotettu toisistaan, minkä vuoksi suunnittelija ja kehittäjä voivat työskennellä yhdessä.
- MVC 1:ssä ohjain ja malli molemmat ovat JSP:tä tai voisimme sanoa, että ne on kirjoitettu samalla JSP:llä. Mutta MVC2:ssa ohjain on servlet ja malli Java-luokka.
- MVC ei tue sovelluskomponenttien uudelleenkäytettävyyttä, kun taas MVC2 tukee komponenttien uudelleenkäytettävyyttä, mikä on hyvä isommille ja monimutkaisemmille sovelluksille.
Johtopäätös
Kuten näimme, paksu viiva ero MVC:n ja MVC2:n välillä huolimatta niillä on samanlaiset nimet, mutta molempia käytetään ratkaisuina toistuviin järjestelmän suunnitteluongelmiin.
MVC2 on monimutkaisempi ja siinä on erillinen huolenaihe, jota hyödynnetään suuremmissa sovelluksissa tai intuitiivisessa käyttökokemuksessa sen keskitetyn ominaisuuden ansiosta, jossa kaikki pyynnöt käsittelee yksi ohjain. Toisin kuin MVC, jossa nykyinen JSP määrittää seuraavan avattavan näkymäsivun.
MVC2 irrottaa näyttösivut ohjaimista, toisin kuin MVC, joka pitää sekä liiketoiminta- että näkymälogiikan yhdistettynä JSP:hen. Näin ollen MVC2:ta on helpompi ylläpitää useille käyttäjille sen uudelleenkäytettävyyden ja laajennusominaisuuden ansiosta, ja se pystyy tukemaan monimutkaisempaa järjestelmää reaaliajassa, kuten Facebookia, Instagramia.
Viitteet
- https://www.scientific.net/AMM.198-199.537
- https://ieeexplore.ieee.org/abstract/document/777091/
- https://academic.oup.com/jpp/article-abstract/64/3/397/6135294