Czy wzór MVC jest często stosowany w przemyśle? Jaki jest ten szum? [Zamknięte]

16

Jestem studentem, ale mam nadzieję, że wkrótce przeniosę się do branży oprogramowania. Wydaje się, że jest dużo szumu na temat wzoru oprogramowania MVC. Zauważyłem, że frameworki PHP są często MVC, a co z językami innymi niż internetowe… czy z nimi jest tak samo? W mojej pracy magisterskiej (C ++) wybrałem wzorzec MVC, ponieważ ładnie oddziela logikę i interfejs użytkownika.

Czy w przemyśle jest często używany? Jeśli tak, jakie są główne powody i jakie są inne konkurencyjne, popularne projekty?

ale
źródło
13
MVC to po prostu popularna implementacja separacji problemów. Ważne jest SoC, a nie sama MVC.
Raynos,
1
Możesz zajrzeć do „Katalogu architektury aplikacji korporacyjnych” Martina Fowlera, aby znaleźć alternatywne warianty / warianty MVC, które mogłyby lepiej pasować do konkretnych aplikacji: martinfowler.com/eaaCatalog/index.html
Mchl
3
Zauważ również, że wiele rzeczy, które są oznaczone jako „MVC”, w rzeczywistości nie są tak naprawdę MVC, ale raczej podążają za (nowszym) wielopoziomowym modelem aplikacji: przechowywanie danych - logika - prezentacja (która, IMHO, i tak ma sens).
tdammers
MVC wyprzedza programowanie sieciowe, jeśli coś ci to mówi.
Jeremy

Odpowiedzi:

6

MVC zyskuje dużo szumu i używania, ponieważ jest to bardzo przydatny wzorzec dla swojej domeny.

MVC zachęca do rozdzielenia obaw. Może to uprościć programowanie, jeśli zostanie wykonane poprawnie. Każda aplikacja, która wyświetla i / lub modyfikuje dane zawarte w magazynie danych, będzie miała funkcję MVC, ale nie można jej rozdzielić. Brak podziału komponentów może spowodować niepożądane połączenie między problemami.

W przypadku MVC zmiana interfejsu użytkownika (widok) aplikacji powinna być stosunkowo łatwa bez modyfikowania kontrolera lub modelu. Może to być pożądane, jeśli chcesz zezwolić na dostęp ze smartfona, Internetu i jednej lub więcej aplikacji.

W przypadku dużych zespołów MVC może pozwolić na lepsze wykorzystanie zasobów, ponieważ programiści mogą wykonywać zadania w jednej z warstw, a w innych warstwach mogą nie potrzebować dużych umiejętności. W zależności od obciążenia zasobów koordynacyjnych może to być bardziej wydajne.

BillThor
źródło
12

Tak, jest często używany. Aplikacje iPhone / iPad są skonfigurowane jako MVC. Ostatnio widziałem wiele aplikacji asp.net MVC.

MVC pozwala na większą elastyczność i zachęca programistów do pisania osobnego kodu dla każdej funkcji. Ułatwia utrzymanie.

Trevor
źródło
Frameworki Cocoa firmy Apple (używane w MacOS X) to ewolucja NextStep, która datuje się na koniec lat osiemdziesiątych. NextStep, Cocoa i Cocoa Touch (używane w iOS) współużytkują MVC.
Caleb
4

Obecnie jest w modzie.

Nigdy nie lekceważ potęgi szumu. Wkrótce ktoś wymyśli coś innego, nowszego, bardziej błyszczącego i łatwiejszego do zrozumienia, a wszyscy będą potępiać MVC jako źródło wszelkiego zła (stało się z formularzami internetowymi), albo będzie tak wielu ludzi, którzy będą go używać, że więcej wiedźmich weteranów potępić to jako „byka zarządzania * * ” (stało się z XML). Albo nastąpi zmiana na inny wzorzec, ponieważ MVC „nie jest wystarczająco elastyczny, aby rozwiązać bardzo trudny problem, który muszę rozwiązać” (języki o typie statycznym vs. języki dynamiczne).

Pod koniec dnia MVC jest podejściem ramowym, które jest odpowiednie dla wielu problemów, które wywołuje programowanie sieciowe. Będzie jeszcze przez jakiś czas, ale wyobrażam sobie, że powodem, dla którego większość ludzi go używa, jest zgodność z modnymi słowami.

EDYTOWAĆ

Uwaga: jestem w pełni świadomy, że wzorzec MVC istnieje od lat i był używany w frameworkach przed asp.net MVC. Mówię tylko, że w tej chwili jest dość popularny, więc zyskuje więcej prasy niż inne podejścia. Używam MVC do wszystkich moich osobistych projektów i korzystam z niego także w projektach komercyjnych (jestem programistą .net).

To nie był rant.

Ed James
źródło
7
-1 dla: „W tej chwili”, chyba że rozważasz na przykład początek Smalltalk lub Java / Swing jako technologię Moment, MVC jest na to trochę za stary.
keppla,
4
Z wyjątkiem tego, że „w tej chwili” jest dość dokładne; MVC prawie do niedawna nie był używany, z wyjątkiem świata Java. Gdzie indziej nie był używany aż do czasu, gdy Rails stał się popularny.
Wayne Molina,
4
Większość z GUI-Frameworków (bez HTML), z którymi się spotkałem, używała MVC, nie wydawało się, że jest „ledwo używana” do określenia ostatnich 10 lat.
keppla,
1
W rzeczywistości MVC zostało już zaatakowane przez MVP w niektórych częściach wszechświata.
Tom Anderson
3
Osobiście nienawidziłem formularzy internetowych na długo zanim jeszcze ASP.NET MVC był pomysłem. Czasami rzeczy są popularne, ponieważ w rzeczywistości są najlepszą opcją w większości przypadków - i tak, można je zastąpić czymś nowszym i potężniejszym, ale co z tego? To postęp, a nie szum.
Aaronaught,
3

Z mojego doświadczenia wynika, że ​​nie jest on używany tak często, jak powinien. Jest to znacznie lepszy model niż niektóre alternatywy, ale w ciągu ostatnich kilku lat zyskuje dużo szumu; z tego powodu istnieje wiele starszych wątków, które ludzie boją się przekonwertować na MVC lub boją się używać MVC do przyszłej pracy, ponieważ jest to poza ich strefą komfortu.

Wayne Molina
źródło
1

Myślę, że przekonasz się, że cała rodzina Stack Exchange działa na MVC

Garry
źródło
Wspaniale, nie wiedziałem, że +1
ale
1

ASP.NET MVC zyskał duże znaczenie dla aplikacji internetowych, ponieważ .NET jest często używany w branży.

Aplikacje internetowe Microsoft ewoluowały z klasycznej ASP do ASP.NET, która opiera się na formularzach internetowych (aby umożliwić programistom VB6 Win Forms łatwe tłumaczenie na nową granicę sieci).

Niestety formularze sieciowe są oparte na stanie, a HTTP (na którym oparta jest sieć) jest bezstanowe, więc potrzebne było wiele nieprzyjemnych obejść związanych z takimi rzeczami, jak stan wyświetlania.

ASP.NET MVC pozwala na przetłumaczenie umiejętności programistów WebForm na platformę internetową, która ma dobre SoC i która włożyła wiele wysiłku w testowanie (ponieważ WebForms nie jest bardzo testowalny, zespół MVC włożył wiele wysiłek w ramach).

To powiedziawszy, to nie jest panaceum / srebrna kula, i jak każdy framework, są czasy, aby go użyć i razy, aby go nie używać. Mamy nadzieję, że ludzie nie wykorzystają go do rozwiązania wszystkiego: gdy jedynym narzędziem jest młotek, każdy problem wygląda jak gwóźdź.

StuperUser
źródło
1

To tylko moment w historii, ponieważ MVC to kilka bardzo prostych koncepcji, które spotkały się z hype z kilku konkretnych ram, które wyróżniają go w swoich materiałach marketingowych. Zdarza się również, że ominęło wiele dobrych praktyk, które pojawiły się w rozwoju oprogramowania. Dotyczy to podwójnie rozwoju pseudo-stanowego, takiego jak HTTP; do tego stopnia, że ​​znam tylko jeden naprawdę inny „wzorzec”, który jest używany w świecie sieci Web - bardzo zły model oparty na zdarzeniach WebForms ASP.Net.

Jestem szczerze zaskoczony, że jest wystarczająco dużo na całą rozprawę.

Ale żeby odpowiedzieć na twoje pytanie. WebForms to wąski kawałek webcarta, który głównie znajduje zastosowanie w intranetowych aplikacjach biznesowych. Strony kodowane spaghetti bez prawdziwego wzoru prawdopodobnie stanowią przyzwoitą ilość diagramu Venna, ale prawie wszystko, co jest ramą, jest przynajmniej pod silnym wpływem MVC, więc twoja krótka odpowiedź będzie brzmiała TAK .

George Mauer
źródło
@geroge: Dzięki za odpowiedź. Ha ... nie martw się, oprogramowanie zawarte w mojej rozprawie wykorzystuje MVC .. tak naprawdę nie jest na MVC!
ale