Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasady pisania na forum Pro

Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.

3 Stron V  < 1 2 3 >  
Reply to this topicStart new topic
> Wzorce architektoniczne
Zyx
post 10.12.2010, 20:47:50
Post #21





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Kilka tygodni temu jako podsumowanie tej dyskusji postanowiłem zebrać wiadomości nt MVC do kupy w postaci artykułu Wikipedii z odpowiednimi przypisami.

http://pl.wikipedia.org/wiki/Model-View-Controller

Artykuł jest nieźle uźródłowiony i podaje definicję tego wzorca zgodnie z pierwszą pracą go opisującą datowaną na 1979 rok, a także późniejszymi klasykami takimi, jak "Wzorce projektowe: Elementy oprogramowania obiektowego wielokrotnego użytku". Dodatkowo znalazłem świetny katalog opisujący wzorce architektoniczne rozwijany przez pana Martina Fowlera, gdzie jest sporo na ten temat. Jest też m.in. oryginalna praca wprowadzająca Model-View-Presenter.

Kwestia tego, że oryginalnie wzorzec był zdefiniowany dla aplikacji desktopowych wiele tu nie zmienia, bo są to de facto dalej te same założenia, tylko uwzględniające specyfikę środowiska web i niekolidujące z oryginałem (w sensie: jak robimy aplikację WWW, musimy z konieczności korzystać z wariantów dla aplikacji WWW). Jednak z tych wszystkich materiałów dość jasno wynika, że w świecie frameworków WWW coś takiego, jak MVC zasadniczo nie istnieje. Zawsze są to jakieś pochodne oryginału... tyle że mają one swoje własne nazwy i w żadnym wypadku nie są MVC. Dominują:

- Model-View-Presenter - uproszczenie modelu i widoku na rzecz warstwy prezentera.
- Model-View-Presenter z Pasywnym Widokiem - jw. + zerwanie połączenia między modelem, a widokiem.

Jedna Kohana coś tam niby kombinuje, ale co - nie wiadomo, bo autorzy dalej lecą sobie w kulki z dokumentacją. Ponadto w przypadku hierarchicznych odmian jeszcze się tak do końca nie dokopałem do oryginalnych źródeł.

Dodatkowo, w ramach eksperymentu rozwijam na Githubie framework mający implementować założenia MVC (tego prawdziwego): https://github.com/zyxist/Trinity/tree/lightweight - i generalnie pisze się w nim zupełnie inaczej, niż w popularnych frameworkach, co moim zdaniem dość dobrze świadczy, gdzie są frameworki, a gdzie MVC.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
cojack
post 3.01.2011, 20:35:54
Post #22





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Cytat
(tego prawdziwego):[
Powód edycji: [thek]: Sprzątanie...


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
phpowiec84
post 3.01.2011, 20:54:25
Post #23





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 10.12.2010

Ostrzeżenie: (0%)
-----


Witam
Jakis czas temu wykonałem framwork którym do tej pory sie posługuje ,jego schemat działania wygląda tak :



ciekaw jestem waszych opini na jego temat .

Pozdrawiam
Go to the top of the page
+Quote Post
thek
post 3.01.2011, 21:26:11
Post #24





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Cojack... Nie bądźmy złośliwi winksmiley.jpg Czysty MVC jest nie do zaimplementowania w architekturze webowej i każdy rozumiejący ten wzorzec programista jest w pełni tego świadom. Mozna sobie rzeźbić i cuda wymyślać, ale pewnych możliwości MVC w komunikacji webowej nie uzyskasz, bo nie pozwala na to protokół. Bylo to już poruszane wielokrotnie. Zyx na pewnoma ten sam problem i jak mniemam zastosuje jakąś technikę mającą emulować brakujące formy komunikacji pomiędzy warstwami, na które http nie pozwala. Rozumiem, że pewne rzeczy mogą Ci nie pasować, ale moim zdaniem spośród osób tutaj siedzących ma on jedne z największych doświadczeń jeśli chodzi o "bebechy" stojące za tym wszystkim i z racji, tego to co rzeźbi jako autorski framework, może być ciekawe. Na razie się nie zagłębiam w niego, ale gdy wyjdzie jakaś wersja oficjalna, to chętnie przejrzę, bo być może sam coś z jego pomysłów uznam za wartościowe/nowatorskie rozwiązanie. Poza tym czytając to co piszę ja i co pisze on, to trudno nie zauważyć, że akurat oboje uznajemy, iż to co wiele frameworków nazywa MVC, nie jest nim, tylko pewnym wariantem zmodyfikowanym na tyle by był implementowalny dla sieci web. Tak więc jeśli coś ma implementować założenia MVC lepiej, to chętnie zobaczę JAK ma to robić zamiast marudzić smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Zyx
post 3.01.2011, 22:34:02
Post #25





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


phpowiec84 -> fajne te zaokrąglone ramki. Niezła czcionka przy numerkach. A na serio może byś tak rozwinął trochę tę myśl nieco?

Ten post edytował thek 4.01.2011, 12:01:51
Powód edycji: [thek]: Sprzątanie...


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
cojack
post 3.01.2011, 23:05:56
Post #26





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


thek no ale tego
Cytat
(tego prawdziwego)
nie rozumiesz?

Ten post edytował thek 4.01.2011, 12:02:37
Powód edycji: [thek]: Sprzątanie...


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
thek
post 4.01.2011, 12:19:22
Post #27





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Najprawdopodobniej moje rozumienie wzorca MVC jest bardziej zbieżne z tym co podają dokumentacja, książki i Zyx, zamiast tym co próbują frameworki nazwać MVC smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Cysiaczek
post 4.01.2011, 13:26:29
Post #28





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Wy nadal to samo...

Pisanie czegokolwiek po to tylko, aby implementowało jakiś wzorzec jest całkowicie sprzeczne z tym, co jest ideą wzorca projektowego, mianowicie dobrego i sprawdzonego sposób rozwiązania problemu. Nazwa jest tylko po to, aby można było łatwiej zapamiętać, zaprezentować i przedyskutować możliwe rozwiązania. Skoro żaden webowy FW nie implementuje prawdziwego wzorca MVC, to należy zadać pytanie, dlaczego tak się dzieje, że setki doskonałych programistów nie widzi zalet takiej idealnej implementacji i jej do tej pory nie zrealizowało w żadnym powszechnym frameworku? Hmm? Ja myślę, że to dlatego, że taka implementacja generuje więcej problemów (przynajmniej w świecie programowanie webowego) niż rozwiązuje.
Jednak sama architektura trójwarstwowa jest w porządku, więc modyfikują MVC w takim stopniu, aby nie stracił nic ze swego ducha i po prostu wdrażają. Potem 100 innych gości wpada na to samo, 50 z nich lubi klasyfikować różne rzeczy, więc dla odróżnienia nazywają to coś wspólne MVP i dzięki temu prowadząc akademickie dyskusje mają uszczegółowioną siatkę pojęć. Pozostałych 50, którzy mają w głębokim poważaniu ten podział, robi w tym czasie narzędzia implementujące ideę podziału na logikę działań, kontrolę pracy i prezentację wyników, w skrócie LCV.

Wracam do pracy.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
wookieb
post 4.01.2011, 14:10:52
Post #29





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat
Pisanie czegokolwiek po to tylko, aby implementowało jakiś wzorzec jest całkowicie sprzeczne z tym, co jest ideą wzorca projektowego, mianowicie dobrego i sprawdzonego sposób rozwiązania problemu. Nazwa jest tylko po to, aby można było łatwiej zapamiętać, zaprezentować i przedyskutować możliwe rozwiązania.

Dziwne podejście. Mianowicie popieram działania Zyx-a. Jak dla mnie jest on purystą językowym i jest to jak najbardziej w porządku. Dzięki takim osobom nie mówimy na jabłko "bardziej okrągła gruszka o smaku jabłka".
Ludzie mają tendencję do używania słów, skrótów których do końca nie rozumieją np z samolubnych przyczyn (chcą pokazać jakimi to sa znawcami, specjalistami lub marketingowcami). Dzięki temu np karta graficzna nie nazywa się "Karta graficzna od Nvidia wersja 105" tylko "super Hiper turbo 512 ultra god contact wireless graphic card". To samo się tyczy frameworków
Ileż to ja już widziałem "szybkich", "skalowalnych", "łatwych do zarządzania" frameworków wspierających RSS, HTML5 (to już jest maksymalnie nadużywane), FLASH, JS, AJAX itd itd.
Taka weryfikacja jest najbardziej na miejscu.

Cytat
Skoro żaden webowy FW nie implementuje prawdziwego wzorca MVC, to należy zadać pytanie, dlaczego tak się dzieje, że setki doskonałych programistów nie widzi zalet takiej idealnej implementacji i jej do tej pory nie zrealizowało w żadnym powszechnym frameworku? Ja myślę, że to dlatego, że taka implementacja generuje więcej problemów (przynajmniej w świecie programowanie webowego) niż rozwiązuje.

Co wcale nie znaczy, że powinni nazywać implementacji od jej "rodziców" bo psujesz w ten sposób naturalny porządek nazewnictwa.
Np jak dymasz córkę Oli to nie znaczy, że dymasz Olę.
Jak ty napiszesz zarąbisty system na jakim zarabiasz krocie a ktoś zrobi taki drugi i nazwie "TwojaNazwaSystemu2" to zrozumiesz co tzn "akademicka dyskusja".

Ten post edytował wookieb 4.01.2011, 16:36:06


--------------------
Go to the top of the page
+Quote Post
thek
post 4.01.2011, 15:00:08
Post #30





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A prawda jak zwykle pośrodku winksmiley.jpg Cysiaczek ma rację co do niepotrzebnego popadania w szczegóły. W końcu ma to działać, bo to najważniejsze. No i faktycznie pełna implementacja MVC w środowisku webowym jest niemożliwa z racji cudowania między modelem i widokiem, które nie mają możliwości mieć prostego połączenia, bez uciekania się do nowego żądania, które jest kolejnym, głębiej ukrytym MVC. Ale Zyx i wookieb mają racje co do złego nazywania. Niektórzy bratka nazwali by różą bo obie rośliny to kwiaty, więc co to za różnica? Analogicznie twórcy frameworków MVP nazywają je MVC bo to bardziej chwytliwe i znane "słowo-klucz", a mają podział na 3 warstwy odpowiedzialne za określone działania, więc co to za różnica czy ostatnia literka to P czy C? Równie dobrze możesz właścicielowi rodowego psa powiedzieć, że ma kundla winksmiley.jpg On to rozumie zupełnie inaczej niż Ty. Dla niego kundel to mieszaniec, pies bez rodowodu. Dla Ciebie kundel = pies w bardziej negatywnym znaczeniu (może kiedyś zawarczał na Ciebie i go nie lubisz). Dwa różne punkty widzenia na to samo słowo. Kłótnia jakakolwiek nie ma tu sensu. Dla mnie MVC jest w środowisku web nieimplementowalny i tyle. Każdy kto twierdzi inaczej jedynie się zbliża do niego bardziej niż inni i tyle, ale nic więcej. Pewnych barier nie przeskoczy, a to one sprawiają, że MVC jest niemożliwy do uzyskania w czystej postaci.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
wookieb
post 4.01.2011, 15:21:18
Post #31





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(thek @ 4.01.2011, 15:00:08 ) *
Niektórzy bratka nazwali by różą bo obie rośliny to kwiaty, więc co to za różnica? Analogicznie twórcy frameworków MVP nazywają je MVC bo to bardziej chwytliwe i znane "słowo-klucz", a mają podział na 3 warstwy odpowiedzialne za określone działania, więc co to za różnica czy ostatnia literka to P czy C? Równie dobrze możesz właścicielowi rodowego psa powiedzieć, że ma kundla winksmiley.jpg On to rozumie zupełnie inaczej niż Ty.

No właśnie po to jest tyle nazw, żeby porozumiewać się posługiwać się tymi nazwami pomiędzy ludźmi. 1 literka w nazwie jakiegoś leku to już nie "puryzm" tylko czyjeś zdrowie, życie. Oczywiście jest to przykład skrajny. Ale naprawdę nie po to Procesor nazywa się procesorem, żeby ludzi nazywali go za każdym razem "taka mała kostka krzemu, która 'myśli'" (co naprawdę wymagałoby dodatkowego rozwinięcia bo w komputerze masz jeszcze więcej "MIKROprocesorów"). To nie jest niepotrzebny szczegół bo niektórzy potrafią to nazwać "komputerem". Przekażą ta "wiedzę" innym i nagle firma Intel nie zajmuje się tworzenie procesorów a "komputerów". Bałagan? Oczywiście. Im więcej błędów w nazewnictwie tworzymy sami, tym więszky chaos. Skoro uważasz, że MVC a MVP nie jest dla kogoś ważne to tak naprawdę ten ktoś jest takim programistą który powinien siedzieć w domu z brakiem możliwości komunikacji z innymi programistami bo może się tylko ośmieszyć a nie daj boże nauczać innych takich "herezji". Nie rozumiecie naturalnego porządku i CELU nadawania czemuś nazwy.

Ten post edytował wookieb 4.01.2011, 15:23:42


--------------------
Go to the top of the page
+Quote Post
thek
post 4.01.2011, 16:10:47
Post #32





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Z komputerem i prockiem to trochę zły przykład winksmiley.jpg Komputer to w najbardziej pierwotnej wersji architektury (von Neumanna) urządzenie posiadające jednostkę obliczeniową, pamięć i jakąś formę urządzeń I/O. Od biedy wystarczyło by do procka podpiąć jakiś czujnik i by działał w oparciu tylko o swoja pamięć cache z wbudowanym programem. Jak chce, ale działałby winksmiley.jpg


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
wookieb
post 4.01.2011, 16:15:36
Post #33





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No i właśnie to co ty teraz zrobiłeś jest popadanie w szczegóły przykładu, który nie miał na celu wskazanie dokładnych znaczeń słów "procesor" i "komputer" a jedynie wykazać istotę potrzeby nazywania pewnych rzeczy.
Na temat porównania co rzeczywiście jest procesorem a komputerem z "definicji" można prowadzić ogromny wywód który zrobiłby to samo co Zyx na temat MVC.
P.s. Przypominam post o analizie twej osobowości - punkt o "zmianie tematu"

Ten post edytował wookieb 4.01.2011, 17:28:35


--------------------
Go to the top of the page
+Quote Post
thek
post 5.01.2011, 00:38:33
Post #34





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To co wskazałem to oczywiście przesada jak sam zauważyłeś. Dla większości ludzi komputer to takie pudełko duże lub nieco mniejsze i ma jakieś tam podzespoły. Dla informatyka, a nimi przecież oboje jesteśmy, to pewna "fizyczna implementacja" jakiejś architektury. To samo tyczy także wzorców architektonicznych. Dla ogółu to po prostu taka czarna skrzynka, którą z grubsza rozumieją po swojemu. Nie zawsze w sposób prawidłowy. To potem prowadzi do nieporozumień. Przykłady mamy także na forum tutaj. Ktoś coś chce, nie do końca rozumie czego chce, a używa terminologii w sposób niewłaściwy, co tylko nas wprowadza w błąd. My się wkurzamy, on się wkurza. Ile nieporozumień można by uniknąć gdyby określone zwroty czy frazy były jednoznaczne dla obu stron? A tak mamy galimatias, bo myśli się A, opisuje się to jako B, a inna osoba z tego wszystkiego rozumie C.

Tak więc nie chodzi mi tu o rozmycie tematu, ale ustalenie jednolitej definicji co jest czym. Zauważ, że ludzie mają problem nawet by określić co ma być w której warstwie wzorca MVC. Potem pakują do kontrolera to, co ma być w modelu i robi się syf. Oczywiście nie widzą tego, bo nie rozumieją do końca tego co robią i na czym określony wzorzec polega oraz co wynika z zastosowanych przez nich założeń czy środowiska. Taki się uprze, że to jest MVC i mu nie przegadasz, że się myli. Tylko że właśnie przez takie mylenie pojęć ludzie tylko tracą i czas i nerwy.

Ja osobiście nie lubię marketingowego bełkotu tylko łapie za specyfikację lub dokumentację i tyle. Więcej z niej zrozumiem. I kij z tym, że nieraz zasypie mnie kilkadziesiąt stron czy więcej. Przynajmniej to jest zazwyczaj pisane językiem ustandaryzowanym, a nie bełkotem. Weź sobie głupie kółka z tymi 3 literkami i narysuj możliwe w sieci web połączenia między nimi, a od razu stanie sie jasne, że MVC jest niemożliwy do implementacji. Ja to wiem, Zyx to wie, Ty też to wiesz i Cysiaczek także. Tyle że nie każdy z naszej czwórki przystaje na takie uproszczenia i to jest przyczyną tutejszej niezgodności.

A to co napisałem tyczy nie tylko MVC, ale każdego dowolnego wzorca projektowego. Dopóki nie będzie jednolitego standardu i dopóki ludzie na A będą mówili B to musi taki bajzel być czy to sie nam podoba czy nie. Nie sądzę by był sens ciągnąć dalej wątek co jest a co nie jest MVC bo i tak utkniemy na osobistych preferencjach, a nie rzeczowych argumentach. Dla mnie wykładnikiem są książki i twórcy tego wzorca, a nie jego implementacja przez frameworki i tego pierwszego się będę trzymał, choć ktoś inny da się przekonać i mnie by za takie podejście zjechał. Nie ma naprawdę sensu robić flame'a, bo i tak nas to nigdzie nie zaprowadzi. Jedynie wywoła kolejne akademickie dysputy. Mało ich już jest na innych stronach? Może niech ktośzłapie sie za inny wzorzec i to jego omówimy równie dogłębnie jak MVC? Przynajmniej byłby wtedy jakiś pożytek z tych rozważań na poziomie akademickim. Bo te 3 literki to już chcą mi uchodzić każdym możliwym otworem ciała winksmiley.jpg


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Cysiaczek
post 7.01.2011, 18:27:48
Post #35





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Nie miałem zamiaru uderzać w system nazewnictwa. Po prostu uważam, że stawianie sztywnych granic w takiej dziedzinie wiedzy jak wzorce projektowe bywa pozbawione sensu praktycznego i niekiedy jest śmieszne.
Nie chodzi wcale o wyjaśnienie dokładnego działania wzorca na poziomie współpracy jego części, tylko o nadanie sensu, naszkicowanie sposobu w jaki można rozwiązać napotkany problem. To jest podstawowa korzyść wynikająca ze zbierania doświadczeń przez wiele lat. Katalogowanie takich wzorców jest z kolei czynnością, bez której one same nadal pełniłyby swoje funkcje. Im bardziej szczegółowo je katalogujemy ze względu na różne kryteria, tym bardziej rozmywamy ideę. Zgoda, że do typowo "naukowych" rozważań, możemy trzymać się konkretów, ale nie popadajmy w przesadę, bo co jest łatwiej powiedzieć?
- "Architektura trójwarstwowa w rozumieniu takich jakie prezentują MVC i/lub MVP "
czy
- "Takie tam coś jak MVC"
W zwykłej forumowej odpowiedzi na pytanie nowicjusza "Jak ten kod uporządkować?" lepiej powiedzieć "Poczytaj o MVC" lub bardziej ogólnie "o wzorcach" niż "Poczytaj o różnicach między MVC i MVP, bo to niezwykle istotne, bo żaden FW nie implementuje MVC, bo blablabla". Co to obchodzi kogoś, kto szuka ogólnej drogi do rozwiązania ogólnego problemu?

Mała dygresja związana z tym topikiem:
Cytat
+ z jakiego wzorca ty korzystasz ?

Czy nie lepiej zadać pytanie o sposób w jaki Crozin rozwiązuje konkretny problem niż jakiego wzorca używa? Chcesz rozwiązać problem, czy sobie poużywać wzorca? :-)

Czy na wczasy latacie samolotem, jedziecie samochodem, czy też trójsilnikowym Boeingiem 734 lub BMW 330d rocznik 1999? Wzorzec odpowiada tu jedynie na pytanie czym się wybrać na wczasy. Całkowicie bez sensu dla przeciętnego turysty jest wiedza o szczegółach konstrukcyjnych.

Może i tłumaczę oczywiste oczywistości, ale nie rozumiem, dlaczego architektura, której jedynym zadaniem jest podzielenie fizyczne i/lub logiczne szkieletu aplikacji na conajmniej trzy warstwy, z których jedna kontroluje, druga wykonuje zadanie biznesowe, a trzecie prezentuje wyniki nie może nazywać się:
Model
View
Controller

Co mnie obchodzą flaki? Co mnie obchodzi, czy kontroler przekazuje dane do widoku, czy widok czerpie dane z modelu? Na koniec, co mnie obchodzi, czy to jest oryginalne, zgodne z założeniami wzorca MVC opisanego przez tego, czy owego człowieka? Czysta akademicka dysputa o szczegółach, której celem może być tylko wytworzenie jakiejś... specyfikacji wzorców godnej chyba tylko biologii.

Cytat
Np jak dymasz córkę Oli to nie znaczy, że dymasz Olę.

Masz rację, ale także: jeśli już dymasz córkę Oli, to nie każdemu musisz wyjaśniać, że samej Oli już nie dymasz.

To tu jeszcze macie mózgotrzepa http://codebetter.com/jeremymiller/2007/11...flavors-of-mvp/


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Crozin
post 7.01.2011, 19:50:20
Post #36





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@Cysiaczek: Głupoty piszesz. Mówiąc "MVC" powinno się mieć na myśli konkretną architekturę, ze ściśle określonym sposobem działania i jasno określonymi zależnościami pomiędzy elementami owej architektury. Zmieniając założenia powinniśmy już przestać używać takiej nazwy, bo to jedynie wprowadza w błąd (gdyby od początku nie pisano MVC, MVC, MVC, MVC tylko [tutaj jakaś nazwa dla architektury] nie byłoby żadnego problemu).
MVC nie jest pojęciem dla "przeciętnego turysty", a dla doświadczonego obieżyświata.

To trochę tak jakbyś przyszedł na rajd samochodowy i mówił, że twój samochód z faktycznym napędem na przednie koła ma napęd 4x4 bo przecież cztery koła się kręcą jak jedziesz. Ten pogląd podchwyci grupa ludzi i nagle samochód z toczącymi się czteroma kołami zaczynamy nazywać samochodem z napędem 4x4. I teraz dupa. Bo jak normalni kierowcy mogą mówić o "flakach" swoich samochodów, o tym że jeden ma FWD, drugi RWD a trzeci 4x4, że ten pierwszy powinien wziąć przykład z ostatniego biorąc udział w rajdzie terenowym itd?
Go to the top of the page
+Quote Post
Cysiaczek
post 7.01.2011, 20:45:38
Post #37





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




@Crozin, Pokaż mi konkretny i absolutnie właściwy sposób interpretacji tego... bo już na pewno nie wzorca wg tego co piszesz.
http://pl.wikipedia.org/wiki/Wzorzec_proje...architektura%29
Powód edycji: [


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Crozin
post 7.01.2011, 23:08:07
Post #38





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Chyba tutaj chciałeś podlinkować: http://pl.wikipedia.org/wiki/Wzorzec_proje...y_(informatyka) oraz chciałeś zapewne zacytować
Cytat
Elementy wzorca: [...] rozwiązania – opisuje elementy rozwiązania: ich relacje, powiązania oraz obowiązki, zawiera także wskazówki implementacyjne dla różnych technologii;
Mimo iż wiki często bzdury pisze, tutaj ma rację.

O MVC mówimy gdy [tutaj pełne zestawienie obowiązków poszczególnych warstw aplikacji i ich wzajemnych relacji] nie zważając na użyte nazewnictwo czy implementację. O MVC nie mówimy gdy w kodzie w ogóle pojawiają się gdzieś zwroty model, view, controller.
Go to the top of the page
+Quote Post
Cysiaczek
post 8.01.2011, 20:20:53
Post #39





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Link dałem dokładnie taki jaki chciałem.
Tak, masz rację zgadzając się z wikipedią, zgadzam się też z Twoim opisem MVC i nie widzę powodu dla którego trójwarstwowa architektura posiadająca Widok zajmujący się prezentacją danych, Model odpowiedzialny za logikę biznesową oraz Kontroler zajmujący się obsługą żądania. Tu dopiero pojawia się małe rozróżnienie w relacji miedzy warstwami w przypadku MVC i MVP (pomijam ograniczenia protokołu). Otóż zakłada się i to zupełnie niesłusznie, że w obecnych FW webowych nie można pisać inaczej niż zgodnie ze wzorcem MVP. W MVP to kontroler (presenter) ma za zadanie "obrobić" dane dla widoku

np.
  1. public function executeShow()
  2. {
  3. $this->setVar('name', $request->getParameter('name'));
  4. }


To chwileczkę... nie można po prostu przekazać modelu?
  1. public function executeShow()
  2. {
  3. $this->setVar('MyUserModel', new MyUserModel($request->getParameter('name'))); // widok sobie poużywa tego wg własnego widzimisię
  4. }


Czy nikt nie widzi różnicy jaka zaszła w samej filozofii, w relacjach między warstwami? Może to nie klasyczne MVC, ale z uwagi na znane nam ograniczenia, wypełniamy ten wzorzec, bo widok sobie już sam poradzi, prawda? Przyczepić się można, tylko pytanie po co? Czy nie kieruje się znanym mi wzorcem? Nie udało mi się spełnić wszystkich założeń, to prawda, ale WZORZEC znam i się trzymałem na tyle na ile mogłem. Jak to ktoś potem nazwie inaczej...

Pozdrawiam



--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
thek
post 8.01.2011, 21:34:59
Post #40





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Czy ja wiem... Jak dla mnie to podane dwa przykłady nie różnią się wiele jeśli chodzi o efekt końcowy. Czemu? Ponieważ i tak najpewniej do widoku trafią te same dane w obu wypadkach gdyby programista trzymał się minimalizmu. Kto pośle do widoku obiekt z 50 zmiennymi, skoro widok wymaga kilku zaledwie? KISS się kłania. W pierwszym wypadku zapewne kontroler gdzieś i tak wywoła model by mu te dane podesłał. Czy będzie taka różnica wielka między wysłaniem żądania danych do modelu by potem te dane (zapewne nawet nie tknięte jakąkolwiek metodą, helperem, whatever) wysłać do widoku (który i tak sobie je zinterpretuje wedle wewnętrznych mechanizmów), a bezpośrednim zestawieniem modelu i widoku? Dla mnie to tylko ciut inny zapis. Różnica w 2, góra 3 linijkach. Ogólnie to co napisałeś to więc nadal nie MVC dla mnie. Gdyby jedynym parametrem było tylko określenie widoku to bym się zgodził. zauważ, że w obu wypadkach i tak nakazujesz by widok skorzystał z określonych danych, tylko raz dajesz mu już konkretne, a w tym drugim mówisz by użył konkretnego modelu. Tak czy inaczej wymuszasz zestawienie tylko że albo pośrednio, albo bezpośrednio.

IMHO MVC ma miejsce gdy kontroler nawet nie musi zestawiać tego połączenia. Kontroler woła po prostu model, który sam decyduje, patrząc na dane, jaki widok wywołać. I vice versa. Kontroler chce dane w określonym widoku, a ten na podstawie owego żądania określa jaki model ma wywołać. Zauważ, że w www jest trudno uzyskać taką autonomię warstw. Trudno bowiem by widok widoczny u usera samodzielnie wywołał model na serwerze bez udziału pośrednika przetwarzającego żądanie. I stąd mamy MVP, czyli to Presenter wie jakie pary modelu i widoku wywołać, by je zestawić. Dzięki temu ten sam element może być wykorzystywany wielokrotnie do różnych celów. Najważniejszy jest tylko "styk" modelu i widoku. Muszą tutaj dane być identyczne zarówno dla strony wysyłającej, jak i odbierającej by zestawienie się powiodło. Jeśli wybiorę widok to musi mi Presenter podesłać dane przez ów widok wymagane. A to, z jakiego modelu, to już mało istotne. Z kolei wybierając model Presenter musi określić w jakiej formie zwrócić. Czy widokiem ma być plik strony www czy może wygenerowany pdf. I właśnie tak działają chyba niemal wszystkie frameworki php. Jawnie zestawiasz te połączenia. To dalekie od autonomii warstw.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

3 Stron V  < 1 2 3 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 09:09