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.
web-development
php
design-patterns
mvc
Saeed M.
źródło
źródło
Odpowiedzi:
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ć.
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) .
Edycja: Przypuszczam, że jesteś bardziej zainteresowany wdrażaniem wzorców projektowych na platformie .NET
źródło
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ą.
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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ę.
źródło
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 :
itp
źródło