Artykuł

gru 22 2008
0

Architektura Model View Controller

Kiedy na początku lat 90siątych w Internecie zaczęły pojawiać się pierwsze strony WWW wykonane w technologii HTML nikt, nawet w najśmielszych oczekiwaniach, nie mógł przypuszczać, że rozwój Internetu będzie taki szybki i dynamiczny. Początkowo statyczne strony wzbudzały podziw. Każdy mógł mieć swoją wizytówkę w sieci. Dla firm był to oczywiście pewien sposób marketingu, reklamy, dla użytkowników prywatnych było to możliwość zaprezentowania siebie, swoich zainteresowań, upodobań itp. Wraz z rozwojem sieci, rola Internetu zaczęła się zmieniać. Szybko dostrzeżono błędy statycznego interfejsu strony WWW. Zaczęły powstawać technologie pozwalające na tworzenie dynamicznie generowanych stron Internetowych (zachęcam do przeczytania artykułu przegląd technologii Internetowych, znajdującego się na tej stronie), nastąpił szybki rozwój baz danych i ich optymalizacja pod kątem Internetu. Rozrósł się również tradycyjny HTML. Rozwój wszystkich powyższych technologii (oraz konieczność umieszczenia ich w jednym miejscu) spowodował chaos w dotychczasowym kodzie witryny. Dlatego też programiści musieli znaleźć jakąś receptę jak nad tym wszystkim zapanować. W jaki sposób oddzielić logikę biznesową od warstwy prezentacji. I to im się udało. Powstały standardy tworzenia aplikacji nazywane wzorcami projektowymi, a jednym z ciekawszych z nich jest Architektura MVC, której poświęcimy dzisiejszy artykuł.

Ogólna charakterystyka MVC

Architektura Model View Controller jest obecnie jednym z najpopularniejszych wzorców projektowych używanych projektowania zaawansowanych aplikacji biznesowych. Ideą stosowania architektury MVC jest rozdzielenie logiki biznesowej od warstwy prezentacji. Możemy tego dokonać rozdzielając kod źródłowy na poszczególne elementy. Aby to uczynić, musimy sięgnąć po trzeci element - strukturę kontrolera, który będzie odpowiedzialny za obsługę nadchodzących żądań. Pełna lista elementów architektury prezentuje się następująco:

  • Kontroler (z ang. Controller) - element odpowiedzialny za obsługę żądań przychodzących od użytkowników.
  • Model (z ang. Model) - element odpowiedzialny za obsługę logiki biznesowej.
  • Widok (z ang. View) - element odpowiedzialny za obsługę warstwy prezentacji.

Dzięki rozdzieleniu aplikacji na warstwy, w znaczący sposób ułatwiamy rozwój aplikacji. Od tej pory programiści i projektanci nie będą sobie wchodzić w drogę i każda z osób tworząca zespół projektowy będzie odpowiedzialna za sciśle określony fragment aplikacji.

Przepływ żądań w architekturze MVC dla platformy JEE został przedstawiony na screenie poniżej. W kolejnych akapitach omówię poszczególne elementy architektury.

Kontroler

Kontroler jest jednym z najważniejszych elementów architektury MVC. Głównym zadaniem kontrolera jest odbieranie żądań (z reguły są to żądania typu POST i GET), a następnie ich interpretacja. W zależności od tego jakie żądanie napłynie, zostanie wykonana odpowiednia akcja np. utworzenie obiektu określonej klasy modelu, pobranie danych z bazy danych itp. Tak przetworzone dane zostają wysłane do warstwy prezentacji. Wszystkie powyższe akcje są właśnie inicjowane w kontrolerze. Dlatego jest on uznawany za łącznik między warstwą logiki biznesowej, a warstwą prezentacji.

Ilość kontrolerów w jednej aplikacji uzależniona jest od jej wielkości oraz zastosowania. W przypadku prostych, nieskomplikowanych aplikacji można pokusić się o wykorzystanie jednego kontrolera. Jednak gdy aplikacja staje się rozbudowana, posiada wiele modułów warto pomyśleć o implementacji kilku kontrolerów. Każdy z nich, byłby odpowiedzialny za określoną funkcjonalność (moduł). Nadchodzące żądania kierowane byłby na odpowiedni kontroler w zależności od poszukiwanej w danym momencie funkcjonalności.

Model

Model jest odpowiedzialny za realizację logiki biznesowej. To właśnie w klasach modelu realizowana jest logika biznesowa. Wszelkie zaawansowane operacje związane z funkcjonalnością witryny można znaleźć właśnie tu. Najczęstszym zastosowaniem klas modelu, (które można spotkać w większości aplikacji opartych o architekturę MVC) jest tworzenie klasy odpowiedzialnej za obsługę bazy danych. Taka klasa posiada określone metody zapewniające obsługę połączenia z bazą danych, obsługę metod odpowiedzialnych za pobieranie i uzupełnianie danych w naszej aplikacji.

Innym zastosowaniem klas modelu może być np. obsługa plików XML. Jeśli nasza aplikacja korzysta z takich plików, wtedy operacje odczytu/zapisu plików XML możemy realizować np. za pomocą DOM. Wygodnie jest umieścić obiekt parsera DOM w stosownej klasie, utworzyć metody, które czytają/zapisują interesujące nas tagi i korzystać z nich w dowolnym, oczekiwanym przez nas momencie.

Widok

Widok jest ostatnim, ale z punktu widzenia użytkowników prawdopodobnie najważniejszym elementem tej architektury. Widok jest odpowiedzialny za warstwę prezentacji. Najczęściej są to statyczne dokumenty HTML wzbogacone o proste elementy skryptowe charakterystyczne dla użytkowanej platformy, które pozwalają na przetwarzanie danych pozyskanych z kontrolera. To jaka strona widoku będzie wyświetlona użytkownikowi na ekranie, w zależności od określonej akcji, determinowane jest w kontrolerze. W każdej aplikacji, takich stron jest przynajmniej kilka, a z reguły znacznie więcej (w zależności od wielkości naszej witryny).

W stronach widoku tworzymy również utworzyć szablon naszej witryny, dzięki czemu w szybki i łatwy sposób będziemy mogli go modyfikować, nie zagłębiając się w kod źródłowy całej aplikacji, a skupiając się tylko na aspekcie projektowym. Jak już wspomniałem, strony widoku mogą być wzbogacone o elementy skryptowe charakterystyczne dla użytkowanej platformy, skrypty JavaScript, animacje Flash, arkusze CSS itp. Nie mamy tutaj żadnych ograniczeń i możemy zrobić właściwie wszystko to co w normalnych witrynach, a nawet więcej:)

Przykładowe implementacje MVC

Platforma JEE

Przykładowa implementacja architektury MVC dla platformy JEE może wyglądać następująco:

  • Kontroler - klasy serwletu.
  • Model - klasyczne klasy Javy wspierające dostęp do baz danych za pomocą ODBC.
  • Widok - dokumenty JSP, wspomagane HTML, CSS i innymi podobnymi technologiami.

PHP i Smarty

Przykładowa implementacja architektury MVC dla aplikacji opartej na PHP może wyglądać następująco:

  • Kontroler - skrypty PHP.
  • Model - obiektowe klasy języka PHP.
  • Widok - szablony Smarty, wspomagane HTML, CSS i innymi podobnymi technologiami.

Podsumowanie

Architektura MVC jest niewątpliwie ciekawym rozwiązaniem, godnym naszej uwagi, choć teoretycznie główne zastosowanie dla tej architektury upatrywane jest w rozbudowanych aplikacjach, warto z niej korzystać zawsze, nawet przy prostych stronach prywatnych, choćby dla samej praktyki. Tworząc witryny trój warstwowe, konieczne wydaje się sięgnięcie do programowania obiektowego np. Javy czy PHP. Klasy modelu napisane w ten sposób będą w pełni optymalne i łatwo dostępne w każdym miejscu witryny, a sama aplikacja będzie mieć nowoczesny charakter.

Data ostatniej modyfikacji: 05.06.2011, 17:20.

Podoba Ci się ten wpis? Powiedz o tym innym!

Send to Kindle

Komentarze

blog comments powered by Disqus