Itseäni alkoi kiinnostaa MVC-arkkitehtuuri, siis lähinnä PHP:n yhteydessä ja mietin, että mahtaisiko olla jotain hyvää suomenkielistä kirjaa aiheesta? Haluaisin myös tietää voiko tälläistä arkkitehtuuria käyttää ilman mitään frameworkkejä kuten Zendiä? Entä kannattaako tuota toteutusmallia hyödyntää erilaisissa sisällönhallintajärjestelmissä tai verkkokaupoissa vai onko siitä enemmän hyötyä vielä laajemmissa projekteissa? Eli mielellään otan tietoa vastaan tästä aiheesta, kun tuon englannin kielen kanssa on hieman hankaluuksia...
http://mureakuha.com/koodikirjasto/768
Koodi dokumentoitu englanniksi, kommenteissa sepostusta suomeks.
Ohjelmistoarkkitehtuuri on ohjelmiston suunnittelussa käytettävä malli, joka kuvaa ohjelmiston perusrakennetta, eli järjestelmää korkealla abstraktiotasolla. Usein arkkitehtuuri on kerroksellinen, eli siinä on itsenäisiä päällekkäisiä tasoja. Käytännössä kerroksellisuus tarkoittaa sitä, että joku (ylempi) taso käyttää alempien tasojen palveluita, suoraan ehkä vain seuraavaksi alemman tason palveluita. Tasoja ei välttämättä tietysti olekaan kuin kaksi. Alemmat tasot eivät pyydä ylemmiltä mitään. MVC on yksi suosittu kolmitasoinen kerrosarkkitehtuuri, jossa ohjelmiston osien sisältö on jaoteltu tietyllä tavalla.
MVC-mallia voi käyttää ohjelmassa ilman mitään frameworkia. Kyse on toiminnallisten osien erottelusta itsenäisiksi yksiköiksi ohjelmaa kuvaavassa mallissa ja lopulta koodissa. Kyllä MVC:tä voi käyttää ja käytetäänkin mainitsemissasi sovelluksissa. Tottakai kaikki mallinnus nousee sitä suurempaan arvoon, mitä laajempi kokonaisuus on kyseessä.
MVC:hen perehtymiseksi kannattaa varmaan ensin tutustua oliomalliin ja muihin koodia lähempänä oleviin suunnitteluperiaatteisiin. Löysin googlettamalla tällaisen suomenkielisen teoksen, joka ehkä sisältäisi sitä, mitä etsit: Haikala, Märijärvi: Ohjelmistotuotanto.
Kiitos vastauksesta. Tämä selkeytti varsin paljon!
Minua jäi kuitenkin mietityttämään sellainen asia, jos kysymys on kerran siitä, että ohjelmisto jaetaan useimpiin tasoihin, niin miten todella voidaan määritellä, että onko jokin sovellus toteutettu juuri MVC:n mukaan vai onko siinä sovellettu jotain omaa... Sillä varmasti on olemassa useimpia tapoja toteuttaa se. Vai onko kysymys lähinnä siitä, että tälläistä sovellusten toteutusmallia kutsutaan yleisesti MVC-arkkitehtuuriksi?
http://fi.wikipedia.org/wiki/MVC-arkkitehtuuri:
MVC-arkkitehtuurissa ohjelma jaetaan kolmeen osaan: malliin, näkymään ja ohjaimeen.
Malli huolehtii järjestelmän sovellusaluekohtaisen tiedon tallentamisesta, ylläpidosta ja käsittelystä.
Näkymä määrittää käyttöliittymän ulkoasun ja mallin tietojen esitystavan käyttöliittymässä.
Ohjain eli kontrolleri vastaanottaa käyttäjältä tulevat käskyt sekä muuttaa mallia ja näkymää vastauksena niihin.
tsuriga kirjoitti:
http://fi.wikipedia.org/wiki/MVC-arkkitehtuuri:
MVC-arkkitehtuurissa ohjelma jaetaan kolmeen osaan: malliin, näkymään ja ohjaimeen.
Malli huolehtii järjestelmän sovellusaluekohtaisen tiedon tallentamisesta, ylläpidosta ja käsittelystä.
Näkymä määrittää käyttöliittymän ulkoasun ja mallin tietojen esitystavan käyttöliittymässä.
Ohjain eli kontrolleri vastaanottaa käyttäjältä tulevat käskyt sekä muuttaa mallia ja näkymää vastauksena niihin.
Eli kun sovellus täyttää nämä "vaatimukset", niin se on tehty MVC-arkkitehtuuri mukaisesti? Onko MVC-arkkitehtuuria tehtäessä välttämättä käytettävä olioita vai onnistuuko proseduaalisella tavalla?
Ei MVC ole mikään standardi, joka tulisi toteuttaa. Se on malli, jota voi halutessaan käyttää sellaisenaan tai muokattuna. Ennen kuin sitä lähtee muokkaamaan (tai edes käyttämään) kannattaa ensin selvittää itselleen, mihin tavoitteisiin sillä pyritään. Sitten tietää soveltuuko se omaan käyttötarkoitukseen, ja jos ei, niin miltä osin ei.
Kyllähän MVC ja vastaavat mallit ovat oliohenkistä ajattelua. Yleensäkin ohjelmistojen suunnittelu tapahtuu nykyään aika pitkälti olio-ajattelun pohjalta, koska se sopii hyvin havainnollistamiseen. Se, että ohjelmasta tehdään oliohenkinen käsitetason kuvaus, ei mitenkään estä toteuttamasta ohjelmakoodia proseduraalisesti. Käsitetasolla nimenomaan ei oteta kantaa koodin toteutukseen. Tämäkin on oliohenkistä touhua.
Kannattaa varmaan perehtyä johonkin ohjelmistojen suunnittelua käsittelevään materiaaliin, vaikkapa em. kirjaan. Arkkitehtuurit eivät ole oikeastaan ensimmäisiä asioita, joita on syytä opiskella ohjelmistotuotannon tiimoilta.
Kiitos taas avartavasta vastauksesta! :)
Itselläni sellainen tilanne, että pitäisi kasata CMS-sovellus ja sen tulisi olla mahdollisimman paljon muokattava eli se muodostuisi ikäänkuin moduuleista. Näinpä ajattelin, että tämä MVC-malli olisi hyvä ratkaisu tähän, koska se tekee siitä jotenkin selkeemmän. Tietenkin voisin käyttää valmiitakin sovelluksia, mutta haluan jälleen kerran kokeilla rajojani... :P
Aihe on jo aika vanha, joten et voi enää vastata siihen.