Czy jest jakiś wzór projektowy oprócz MVC dla sieci?

15

Chcę wiedzieć, czy oprócz MVC istnieją jakieś wzorce projektowe dla sieci?

Wiem, że istnieją wzorce projektowe, takie jak: Registry, Observer, Factory, ActiveRecord, ... i MVC zestaw innych wzorców projektowych i struktury folderów.

Czy istnieje wzór projektowy, taki jak MVC to zestaw innych wzorów projektowych?

Edycja: moim językiem programowania jest PHP.

Saeed M.
źródło
Zawsze istnieje wzór BBOM .
zzzzBov
1
@ Mr-Moqadam, proszę spojrzeć - meta.stackexchange.com/questions/5234/…
Yusubov
Wierzę, że poniższe odpowiedzi odpowiadają wszystkim aspektom twojego pytania. Możesz zaakceptować najlepszy i pomóc społeczności.
Arpith,
Co z wzorem strumienia FB.
Muhammad Umer,
Zobacz też Zobacz pierwszy .
nawfal

Odpowiedzi:

25

Istnieją różne wzorce w tworzeniu oprogramowania; MVP, MVVM, MVC itp. Są jednymi z dobrze znanych. Musisz jednak zdefiniować konkretny problem lub technologię, którą zamierzasz rozwiązać lub wykorzystać.

wprowadź opis zdjęcia tutaj

Każdy z tych wzorów jest dobry do rozwiązania określonych zestawów problemów. Na przykład wzorzec MVP (Model View Presenter) pomaga wprowadzić separację problemów w rozwoju WebForms ASP.NET. Polega ona na podziale odpowiedzialności za gromadzenie, wyświetlanie i przechowywanie danych ze strony internetowej na osobne obiekty: obiekt Model, obiekt View i obiekt Presenter.

Najbardziej znaną ogólną książką kucharską wzorców projektowych jest Gang of Four (GoF) .

wprowadź opis zdjęcia tutaj

Edycja: Przypuszczam, że jesteś bardziej zainteresowany wdrażaniem wzorców projektowych na platformie .NET

Jusubow
źródło
1
+1. Czy będziemy żyć z MVC zdefiniowanym jako wzorzec, czy technika, która wkrótce zobaczy lub zobaczy, że będzie następcą?
Niezależny
6
+1, ale MVP, MVVM i MVC to wszystkie odmiany tego samego motywu: oddzielenie (g) interfejsu użytkownika od logiki modelu i pośredniczenie między nimi przez podmiot zewnętrzny (kontroler, prezenter).
Marjan Venema
2
@ Mr-Moqadam: MVC na pierwszy rzut oka wygląda na przesadną i skomplikowaną. Robi to, co powinieneś robić, oddzielając interfejs użytkownika, logikę i dane. Jedyne, co jest pewne w rozwoju oprogramowania, to zmiana. I co do zasady; 20% to rozwój, 80% to utrzymanie. Z tej perspektywy MVC z pewnością jest warte wysiłku. To chyba też najbardziej podstawowy wzorzec do osiągnięcia tego.
Bruno Schäpper
3
@ Mr-Moqadam: Nie, bardzo ci to pomaga, nawet jeśli jesteś sam. A szczególnie w dużych projektach.
Bruno Schäpper
1
@ Mr-Moqadam Kto powiedział, że MVC jest wzorem rozwoju zespołu? Od dłuższego czasu sam się rozwijam, używając PHP, a MVC jest dla mnie obowiązkowe, aby utrzymać rzeczy w utrzymaniu. Próbowałeś już używać frameworków PHP?
Songo,
7

Fajnym wzorem, z którym spotkałem się kilka tygodni temu, jest MOVE . Wygląda nieco bardziej wyrafinowany niż MVC, ale opiera się na tej samej zasadzie. Jednym minusem MVC jest to, że twoje kontrolery mogą stać się naprawdę duże. Używając wzoru MOVE, poradzisz sobie z tym problemem.

Inne wzory, nazwane przez innych, są również dobrą alternatywą.

Jan_V
źródło
Myślałem, że MVC awansowało przy użyciu cienkich kontrolerów ?! Znasz powiedzenie „Cienkie kontrolery i modele tłuszczu”
Songo,
Tak jest, ale w rzeczywistości kontrolery mają tendencję do przybierania na wadze.
Jan_V,
2
To dlatego, że umieściłeś logikę domeny w kontrolerach, co nie było intencją oryginalnego MVC Krassner & Pope. Kontrolery w pierwotny sposób dotyczą obsługi danych wejściowych, np. łączenie kliknięć myszką współrzędnych (X, Y) w operację modelową (np. wzrost temperatury w aplikacji termostatu). To powiedziawszy, większość warstwy kontrolera w sensie MVC jest w pełni zautomatyzowana, a zatem niewidoczna dla programisty aplikacji w środowisku.
Aadaam
jest MOVE like flux
Muhammad Umer
4

Pierwszą rzeczą do ustalenia jest to, co dokładnie musisz zrobić, aby zdecydować, czy ramowa i / lub MVC (lub inny wzorzec projektowy) byłby korzystny.

Ramy mają zapewniać spójną platformę programistyczną, a jednocześnie zazwyczaj zapewniać rozwiązania dla wspólnych wymagań programistycznych (takich jak interakcja z bazą danych, tworzenie i sprawdzanie formularzy, uwierzytelnianie użytkowników itp.)

W PHP przynajmniej wzorzec projektowy MVC / HMVC ma tendencję do dominowania w dostępnych ramach głównego nurtu (np. Zend , CakePHP , CodeIgniter itp.), Ale istnieje wiele różnych wzorców projektowych, których można użyć.

MVC jest tak popularny, ponieważ oferuje ustalony i zrozumiały sposób oddzielania modelowania danych i logiki przetwarzania od warstwy widoku / prezentacji (co jest uważane za pożądane w celu stworzenia solidnych, skalowalnych aplikacji).

Należy zauważyć (i jak to wyraził @Mjanjan Venema w komentarzu do odpowiedzi @ ElYusubova), że MVC, MVP, MVVM i inne wzory MV x są (co najmniej zasadniczo) tym samym „wzorem”.

Zazwyczaj różne wzorce projektowe służą (często subtelnie) różnym celom, aw kilku przypadkach zostały opracowane z myślą o konkretnym języku. Jednak prawdziwy „wzorzec projektowy” nie jest twardą i szybką zasadą programowania i jest bardziej filozoficznym / ideologicznym rozumieniem wymagań dotyczących wdrażania i projektowania programów oraz funkcji logicznych.

Badania to najlepszy sposób na poznanie różnych zasad programowania i najlepszych praktyk, oto kilka linków do Wikipedii na początek:

W praktyce nic nie stoi na przeszkodzie, abyś wdrożył swój własny „wzorzec”, IMO najlepiej jest uczyć się, robiąc, dla mnie przynajmniej nie w pełni zrozumiałem wzorzec MVC, dopóki nie zacząłem pisać strony internetowej z jego wykorzystaniem.

Po zapoznaniu się z niektórymi pojęciami dotyczącymi programowania i najlepszymi praktykami można je wykorzystać do zbudowania własnego systemu w celu rozwiązania określonych problemów i spełnienia potrzeb, niezależnie od tego, czy jest on zgodny z ustalonym „wzorcem”, czy nie.

Jeśli nie masz określonego zestawu problemów do rozwiązania, najlepszym rozwiązaniem jest nauka jednej ze wspólnych ram.

Chris
źródło
3

Jednym z najbardziej znanych przykładów jest Knockout.js, który jest strukturą javascript używającą wzorca projektowego MVVM . Jest tutaj świetny artykuł na temat przepełnienia stosu, porównujący środowisko MVC Backbone.js vs Knockout.js .

Zaskoczeniem jest, że wzorzec projektowy MVVM pochodzi od Microsoft jako specjalizacja wzorca projektowego PM Martina Fowlera. MVVM jest szeroko stosowany przez aplikacje WPF.

dodgy_coder
źródło
Strona nie znaleziona!
Muhammad Umer,
1
@MuhammadUmer Dzięki, zaktualizowałem link. Niestety StackOverflow usunął ponad 1000 punktów pytania. Na szczęście maszyna wycofująca nie ma ścisłego systemu moderacji.
dodgy_coder
Nie dziwi mnie wcale ... spodziewam się, że wszystkie witryny również będą takie.
Muhammad Umer,
0

Jak zauważył ElYusubov, środowisko ASP.Net od dawna ma wzorce MVP i MVVM, jeśli szukasz względnie głównych przykładów. Jedną z głównych różnic między MVC i MVVM jest sposób aktualizacji jednostek; MVC lepiej nadaje się do tradycyjnego bezstanowego lub półstatycznego podejścia do aplikacji internetowych. Struktura ASP.Net próbowała obejść ten problem, utrzymując stan osadzony w formularzu (aby można go było przywrócić na każde żądanie), co sprawiło, że wzorce MVP i MVVM mają tam większy sens.

Dzięki HTML5 aplikacje stają się coraz bardziej obciążone JavaScript, a znaczna część ich stanu jest po stronie klienta. Może to prowadzić do odrodzenia się w ramach MVVM, a Knockout JS jest jednym z przykładów.

Daniel B.
źródło
0

Większość wzorów na wolności to MVC lub jakiś smak MVC. W końcu sensowne jest podzielenie danych (Model), reprezentacji (Widok) i interakcji z nim (Kontroler). Jeśli spojrzysz na MVC, ponieważ został założony w latach 80-tych, przekonasz się, że nigdy nie miał być platformą internetową. W ten sposób stwierdziłem, że jest znacznie przeciążony w sieci.

Innym dobrze znanym wzorcem byłaby architektura zorientowana na usługi (SOA). Opierając się na tym, nowoczesnym podejściem byłoby posiadanie MVC (lub smaku) na twoim serwerze, tylko w celu ujawnienia usługi, z którą możesz pracować. Po stronie klienta byłaby inna aplikacja w stylu MVC, na przykład aplikacja internetowa z obsługą HTML5 i JavaScript (na przykład Twitter lub Linked In). Aplikacja kliencka użyłaby usługi po stronie serwera („Widok” serwera) jako swojego modelu. IMHO, to byłby stan techniki i prawdopodobnie odepchnie na bok tylko serwer MVC.

Bruno Schäpper
źródło
0

Osobiście zastanawiam się nad wdrożeniem czegoś, co korzysta z idei reprezentacji metod zasobów , chociaż na tym etapie jest to w większości eksperyment bardziej niż cokolwiek innego. Ma kilka istotnych argumentów w tym, że modeluje żądanie / odpowiedź HTTP lepiej niż MVC (co jest przeznaczone do długotrwałych aplikacji działających na jednym komputerze, w przeciwieństwie do krótkotrwałych sesji żądania / odpowiedzi). Ma jednak tę wadę, że jeśli umieścisz w swoich zasobach metody obsługi GET, POST, PUT, DELETE itp., Wówczas Twoje zasoby zostaną połączone z interfejsem użytkownika. Myślę, że podzielę to na inną warstwę.

GordonM
źródło
0

Istnieje ponad 1000 sposobów, z wyjątkiem MVC, niektóre z nich są podobne do MVC, a niektóre zupełnie inne

na przykład :

  1. Widok szablonu modelu - MTV
  2. Model – widok – prezenter - MVP
  3. Hierarchiczny model – widok – kontroler HMVC
  4. Widok modelu ViewModel- MVVM

itp

Saurabh Chandra Patel
źródło
1
wydaje się, że nie oferuje to nic istotnego w porównaniu z punktami poczynionymi i wyjaśnionymi w poprzednich 7 odpowiedziach
gnat
myślę, że jest to najprostsza odpowiedź na pytanie.
Saurabh Chandra Patel