2009-04-28 12 views

Odpowiedz

19

Aby zilustrować wcześniejsze odpowiedzi (oraz dodanie wyjaśnień od this article):

MVC2 jest abuse of language odnosząc się faktycznie do architektury JSP model 2, w przeciwieństwie do JSP model 1:

pierwsza technologia Java dla rozwoju po stronie serwera WWW była aplet.
Pisanie aplikacji za pomocą serwletów było bardzo podobne do pisania aplikacji CGI w Perlu w tym wszystkie dane wyjściowe musiały być zbudowane jako napisy z kodu Java.
To było bardzo uciążliwe i podatne na błędy. Bardzo utrudniało to projektantom stron internetowych bez doświadczenia w języku Java zmianę wyglądu i sposobu działania stron generowanych przez serwlety.

alt text http://www.javaworld.com/javaworld/jw-12-1999/images/MODEL1_sml.gif

Potem przyszedł JSP. Strony JSP, takie jak Microsoft ASP i podobne do popularnego języka skryptowego PHP, traktują wszystko jako tekst szablonu, ale umożliwiają wstawienie kodu Java do znaczników zwanych skryptletami i wyrażeń JSP.
Pozwoliło to na pracę z aplikacjami po stronie serwera, podobnie jak w innych popularnych językach skryptowych, ale miało kilka wad.

  • Nie było rozdzielenia obaw.
  • Jeden skrypt zawierałby kod bazy danych, logikę biznesową, znaczniki HTML i dowolny kod javascript potrzebny do końcowego renderowania strony.
  • Ponowne użycie kodu było trudne, podobnie jak testy automatyczne.

To było znane jako programowanie JSP "Modelu 1".

MVC or the Model View Controller pattern była popularną techniką oddzielania różnych problemów w kodzie GUI wynalezionym przez Trygve Reenskaug, pracującym na Smalltalk dla Zerox.

W pewnym momencie stało się jasne, że ta technika może zostać dostosowana do aplikacji Java EE w celu osiągnięcia tego samego poziomu separacji.
Powoduje to zapisanie warstwy modelu jako fasoli lub zwykłych starych obiektów Java (POJO), użycie serwletów jako kontrolera, a następnie, po zakończeniu podnoszenia, przekazywanie do strony JSP w celu sformatowania i oznaczenia wyników.
Aplikacje serwletów/JSP napisane przy użyciu architektury MVC stały się znane jako programowanie JSP w Modelu 2.

alt text http://www.javaworld.com/javaworld/jw-12-1999/images/MODEL2_sml.gif

Ponieważ istniał ten wzór w innej formie przed użyciem w Servlet/JSP aplikacji, było czasami określane jako „MVC2”. Ta nazwa doprowadziła do pewnego zamieszania, ponieważ sugeruje, że istnieje MVC1 dla aplikacji serwletowych, których nie ma.
Wystarczy powiedzieć MVC.

+0

Niż za podanie gooooooood ans, muszę zadowolić formularz ur odpowiedź –

+0

@Ashvin Serdecznie zapraszamy – VonC

+0

@VonC - Nie jest to dobry pomysł, aby skopiować bez podawania odniesienia. Podaj referencję w oryginalnym wpisie. Dzięki. –

3

Zabawny historyczny uwaga na warunkach ...

[Chciałabym znaleźć papier ... (Ja tylko starałem googlowania, ale bez powodzenia!)]

jakiś czas temu, ktoś napisał artykuł opisujący dwa podejścia MVC do aplikacji internetowych. W nim miał dwie postacie.

Napisy dotyczyły "modelu 1" i "modelu 2".

one nie były pomyślane jako rzeczywistych nazw wzorców (więcej jak „Rysunek 1” i „Rysunek 2”), ale ktoś ją przeczytać i pisał o nim tak, jakby to była nazwa wzór ...

(ktoś ma ref?)

VonC opisuje różnicę całkiem dobrze

+0

Interesujące (+1). W zasadzie tylko kopiuję i przeformatowuję oraz artykuł javaworld. Odnosząc się do twojego komentarza, ta prezentacja (http://www.javapassion.com/j2ee/MVCPatternAndFrameworks.pdf) wspomina "MVC model 1" i "MVC model 2"! (ale może to być produkt uboczny twojego papieru, a nie faktyczny dokument, do którego się odwołujesz) – VonC

+0

Arf, w tym "arkuszu odpowiedzi" (http://csdl.ics.hawaii.edu/~johnson/613s05 /613s05FinalAnswerKey.pdf), model MVC "1" jest zorientowany na aplikacje po stronie klienta, takie jak aplikacja GUI z interfejsem Swing . W tym przypadku cały kod aplikacji istnieje w pojedynczej wirtualnej maszynie wirtualnej na pojedynczym kliencie. Model MVC "2" jest zorientowany na kontekst aplikacji klienckiej klient-serwer, w którym użytkownik wysyła żądania HTTP do serwera. W przeciwieństwie do Modelu 1 architektura Modelu 2 wymaga implementacji pojedynczego serwletu , który działa jako kontroler i odbiera wszystkie żądania od przeglądarek po stronie klienta. – VonC

+0

Ta prezentacja slajdów jest blisko, ale wywołuje Model 1/Model 2 tak, jakby były rzeczywistymi terminami ... "Model 2" nie jest tak naprawdę krokiem ewolucyjnym, jak to mówią; to tylko inna implementacja separacji modelu/interfejsu użytkownika. –

Powiązane problemy