Jest to niemal natychmiastowe, ilekroć rozmawiam z programistami na temat Model View Controller ( MVC ), mówią, że wysyłasz zapytanie do adresu URL, na którym serwer tworzy jednostkę (MODEL) i zapewnia wizualną reprezentację tego modelu.
Czy to oznacza, że MVC jest przeznaczony tylko do Internetu, czy też spotkałem ludzi, którzy są tylko programistami, którzy używają MVC do pisania aplikacji internetowych?
Czy są zastosowania MVC w aplikacjach w stylu komputerowym?
Po pierwsze jestem nowy w paradygmacie i chciałbym wiedzieć o jakimkolwiek super-zestawie do MVC
web-development
design-patterns
mvc
Deeptechtons
źródło
źródło
Odpowiedzi:
MVC jest wzorem. Wzorce obowiązują we wszystkich programach. MVC po prostu działa bardzo dobrze w kontekście sieciowym.
Jak wskazuje gnat, wystarczy spojrzeć na tag mvc, a zobaczysz wiele przykładów jego implementacji.
źródło
Biorąc pod uwagę, że MVC pochodzi z 1977 roku, a sieć została wynaleziona dopiero w 1991 roku, powinno być całkiem oczywiste, że MVC jest nie tylko dla sieci.
źródło
Nie, programowanie dla OS X i iOS używa wzorca Model View Controller.
źródło
Zadaj pytanie w środowisku Microsoft, a wiele osób uzna, że masz na myśli Asp.Net MVC, który jest implementacją MVC przeznaczoną specjalnie dla Internetu.
Niestety wiele osób nie zdaje sobie sprawy z tego, że jest to implementacja wzorca MVC i uważa, że są to terminy wymienne, co prowadzi do założenia „tylko sieć”.
źródło
Przynajmniej o ile wiem, pierwsze wdrożenie MVC miało miejsce w Smalltalk. Na pewno był obecny w Smalltalk-80. Chociaż nie mam żadnej dokumentacji, która mogłaby to udowodnić, wierzę, że (lub coś podobnego zresztą) było w Smalltalk od kilku lat.
Większość frameworków graficznych interfejsu użytkownika zawiera przynajmniej niektóre warianty MVC. Nie jestem jednak pewien, co dokładnie oznaczałoby „nadzbiór” w tym przypadku. Trochę trudno powiedzieć, czy dany wariant jest nadzbiorem, podzbiorem lub równorzędną częścią MVC, ale zwykle rozważam większość z nich.
W każdym razie wiele (większość?) Z nich zostało wykorzystanych do tworzenia desktopów, a nie do tworzenia stron internetowych. Dzięki niektórym starym patentom AT&T większość systemów okienkowych wymaga, aby programy mogły ponownie generować widoki na żądanie. To (prawie) wymusza przynajmniej pewien stopień separacji między kodem, który utrzymuje aktualny stan (model), a kodem, który wyświetla ten stan (widok). To wciąż pozostawia wiele miejsca na zmiany w 1) stopniu, w jakim funkcjonalność kontrolera jest izolowana, oraz 2) dokładnych szczegółach, gdzie narysować linie między każdym z głównych elementów.
źródło
Nie, dotyczy to nawet samodzielnych aplikacji. Przykład Java Swing następuje po MVC.
źródło
W tym obszarze istnieje wiele różnych wzorów projektowych.
i tak dalej. Przez lata były one ze sobą splecione, połączone, zmienione i zastosowane w wielu różnych kontekstach. Ważną kwestią jest to, że wzorzec projektowy MVC z 1977 r. Bardzo się zmienił i nie jest już wzorcem używanym przez frameworki sieciowe na serwerach. Jako przykład w oryginalnej implementacji smalltalk, Model obserwowałby widok zmian, co już nie ma miejsca, ponieważ strona serwerowa po prostu nie może obserwować elementów HTML w przeglądarce użytkownika. Zamiast tego, jeśli widok się zmieni, widok wyśle żądanie do kontrolera, który następnie zaktualizuje widok. Ponownie nie zastosowano się do oryginalnej implementacji MVC, ponieważ aktualizacja modelu oznaczałaby aktualizację wszystkich widoków zależnych od modelu.
Nowoczesne frameworki internetowe oparte są na prostej architekturze trójwarstwowej znanej również jako architektura Model 2.
Istnieją oczywiście przykłady prawdziwych architektur MVC w Internecie, ale często są one tylko po stronie klienta, podłączone do serwera zgodnego z architekturą Modelu 2, ponieważ widoki są xml i json i nie są obserwowane dla zmian. Przykładami architektury czystego mvc po stronie klienta są Sencha Touch i Sproutcore.
Jeśli masz MVC w przeglądarce, mvc jak na serwerze i mvc jak jako warstwę danych, masz hierarchiczną implementację mvc.
Uwaga. Mówiłem tylko o frameworkach internetowych, innych implementacjach MVC, takich jak Java Swing i Flex, ale istnieją także inne różnice implementacyjne.
źródło
Jedną rzeczą, którą musisz wiedzieć, jest to, że istnieje tyle smaków MVC, ile jest ram, które twierdzą, że implementują MVC.
Większość zgadza się co do faktu, że Model posiada pewien stan, a Widok go renderuje. Ale kontroler ma bardzo różne role.
W Smalltalk, gdzie został po raz pierwszy opisany, Model jest rdzeniem aplikacji, danych i metod biznesowych. Widok jest graficzną reprezentacją stanu aplikacji (inaczej Model), a Kontroler zarządza danymi wejściowymi użytkownika, zdarzeniami myszy i klawiatury. Na przykład kontroler kieruje zdarzenia klawiatury do elementu widoku, który ma fokus.
Na stronach .jsp Model to głównie dane, widok renderuje ten model do HTML, a kontroler kieruje model do odpowiedniego widoku, aby go wyrenderować.
Tak więc, aby odpowiedzieć na twoje pytanie, podczas gdy MVC jest używany zarówno w samodzielnych aplikacjach (Java, .Net, Flex), jak i w Internecie (strony jsp), jest to zupełnie inna sprawa. Oznacza to, że MVC, którego znasz, nie jest używany w samodzielnych aplikacjach.
źródło