Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MVC] Pytań kilka...
Zepco
post 27.01.2004, 23:49:48
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 5.09.2003
Skąd: Kielce

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


Ponieważ nie mam dostępu do forum DEV, a wiem, że tam po części problem MVC był poruszany, postanowiłem zadać kilka pytań.

Coraz więcej mówi/pisze się na temat MVC (Model-View-Controller) ale pomimo usilnych starań nie mogę zrozumieć pewnych mechanizmów, tymbardziej, że większość przykładów podawanych jest w Java'ie.

Może zacznę od tego co już wiem, jeśli się mylę, proszę poprawcie mnie. smile.gif
Cała aplikacja składa się z trzech części:

:arrow: Kontrolera, który odbiera operacje z zewnątrz (input) i odpowiednio je przetwarza, wywołując konkretny model (modułu) i metodę tegoż modelu. Może również odwoływać się bezpośrednio do widoku.

:arrow: Modelu, który jest niejako modułem odpowiedzialnym za jakiś ułamek pracy aplikacji (menu, news, sonda itp, itd.). Także jak widać w przeciwieństwie do kontrollera istnieje wiele modeli. Jak wcześniej wspomniałem model odbiera od kontrolera odpowiednie rządania, przetwarza je i wynik może przesłać do widoku.

:arrow: Widok natomiast wszystkie dane wysłane z modelu lub kontrolera wysyła na zewnątrz (wyświetla wynik na WWW, tworzy dokument XML, PDF itp.). Tak więc może być kilka podwidoków, które wywołane przez widok głowny tworzą efekt końcowy widoczny dla użytkownika.

A teraz czas na pytania:
* w jaki sposób elementy te komunikują się?
* wiem, że najbardziej naturalnie będzie zastosować programowanie obiektowe, ale czy da się to zrobić strukutralnie?
* co jest w przypadku gdy jeden model jest zależny (potrzebuje danych) od drugiego modelu?
* czym są akcje (actions) i łańcuchy (chains)?

Jeśli coś pominąłem, proszę dopiszcie, Myślę, że dyskusja na ten temat wpłynie w jakimś stopniu na rozpowrzechnienie tego rozwiązania, a chyba na tym nam zależy, aby łatwiej tworzyć aplikacje webowe i w przyszłości korzystać z już napisanego kodu...


--------------------
Jak stworzyć szybko działającą aplikację wolną od błędów?
Tego nie wiedzą nawet najstarsi indianie... :D

Oprogramowanie jest jak katedra - budujesz, budujesz, budujesz, a potem... modlisz się!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bumelang
post 4.02.2004, 09:54:56
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 30.11.2003

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


Wszystko wskazuje na to, że mamy odmienne pojęcia na "abstrakcję źródła danych". Z tego, co wiem, to w typowym znaczeniu oznacza ona po prostu klasę dostępową do źródła, niezależną od implementacji na konkretnej bazie danych czy pliku - taki API, jak np. AdoDB.

Innymi słowy, w 3-warstwowym modelu aplikacji najniżej jest warstwa dostępu do danych (do której API dostępu z warstwy drugiej można określić "abstrakcją na źródło danych", jeśli takie jest zastosowane).

Warstwa druga, która jest najczęściej modelem, stanowi tymczasem zbiór klas czy funkcji tzw. "logiki biznesowej", co przede wszystkim oznacza, że ta warstwa + warstwa danych tworzy gotową aplikację - realizuje wszystkie zadane operacje na bazie danych, uwierzytelnianie użytownika, tworzy jakieś logi, wywołuje jakąś usługę SOAP, wysyła maila, cokolwiek, ale jest to kompletny, działający system, tyle, że zamiast interface'u użytkownika udostępnia API programistyczne dla warstwy jeszcze wyższej.

Warstawa kontrolera i widoku to tymczasem warstwa prezentacji, czyli jeszcze wyżej. I teraz wygląda to tak, że użytkownik się loguje, łaczy się z kontrolerem, któremu przesyła żądanie, ten czyści dane wejściowe i jeśli wszystko jest ok wywołuje funkcję zaloguj($login, $haslo) warstwy logiki biznesowej (czyli model) i sprawdza, czy to się powiodło, ale nie wie nic o szczegółach implementacji w modelu i - przede wszystkim - nie ma dostępu do bazy danych, nie może wywołać żadnego zapytania SQL. Później kontroler przekazuje sterowanie do odpowiedniego, w zależności od powodzenia operacji, widoku - ale to jest jasne.

Oczywiście 3-warstwowy model aplikacji jest tu tylko po to, żeby objaśnić zagadnienie modelu jako takie w kontekście "abstrakcji źródła danych". W rzeczywistym systemie z zastosowanym MVC mogą być z równym powodzeniem tylko 2 warstwy - sama prezentacja i model.

Jak widzisz, być może że tylko 1 pojęcie sprawiło, że myślisz, że tego nie rozumiesz, a rozumiesz - jeśli tak to sorry za zamotkę winksmiley.jpg
Go to the top of the page
+Quote Post

Posty w temacie
- Zepco   [MVC] Pytań kilka...   27.01.2004, 23:49:48
- - rzseattle   No wiec tak sorry ale odpowiem nie po kolei : ad ...   28.01.2004, 06:44:34
- - radziel   Re: [MVC] Pytań kilka...   28.01.2004, 09:45:57
- - rzseattle   Re: [MVC] Pytań kilka...   28.01.2004, 13:51:40
- - radziel   Re: [MVC] Pytań kilka...   28.01.2004, 14:11:11
- - Zepco   CytatNo wiec tak sorry ale odpowiem nie po kolei :...   28.01.2004, 15:50:32
- - rzseattle   CytatNie wiem czy dobrze rozumiem, ale w pliku kon...   28.01.2004, 16:03:04
- - Zepco   Specyfikacja URLa oczywiście nie ma znaczenia i za...   28.01.2004, 18:20:48
- - radziel   CytatSpecyfikacja URLa oczywiście nie ma znaczenia...   28.01.2004, 18:32:24
- - rzseattle   CytatSpecyfikacja URLa oczywiście nie ma znaczenia...   28.01.2004, 18:39:50
- - kubatron   A mógłbym zapytać gdzie to można ściagnąć jak zain...   28.01.2004, 21:10:05
- - scanner   Jeden z dostępnych: http://phiend.sourceforge.net   28.01.2004, 21:48:24
- - Nalfein][WR   CytatNie wiem czy dobrze rozumiem, ale w pliku kon...   29.01.2004, 13:49:18
- - bumelang   CytatJak juz wspomnialem model jest klasa tworzaca...   4.02.2004, 00:15:33
- - rzseattle   Cytatzaś całość logiki zawiera się w modelu. Musz...   4.02.2004, 00:48:46
- - bumelang   Wszystko wskazuje na to, że mamy odmienne pojęcia ...   4.02.2004, 09:54:56
- - rzseattle   CytatWarstwa druga, która jest najczęściej modelem...   4.02.2004, 11:22:27
- - bumelang   Być może to jest OT, ale nie wiem, czy można nazwa...   4.02.2004, 11:46:58
- - Zepco   Jak dla mnie takie OT mogą być, o ile mieszczą się...   4.02.2004, 12:18:48
- - Sh4dow   Moze troche sie wtrącam do waszej zrozmowy, ale mo...   4.02.2004, 12:55:15
- - hawk   CytatJak napisal scanner ze jeden z takich MCV jes...   4.02.2004, 15:22:33
- - bumelang   CytatTak na marginesie chciałem zapytać skąd czerp...   4.02.2004, 15:30:08
- - DeyV   jak już trwa taka zaciekła rozmowa na temat MVC, ...   4.02.2004, 19:27:46
- - hawk   Hmm, ciekawe... Z tego co na razie widziałem, WACT...   4.02.2004, 22:22:12
- - scanner   CytatHmm, jako autor phienda potwierdzam że proste...   4.02.2004, 22:58:39
- - cagrET   CytatAnyway, gdzie tam jest założenie, że mamy jed...   5.02.2004, 01:41:57
- - Nalfein][WR   CytatJeżeli dobrze doczytałem to doszli do wniosku...   6.02.2004, 15:57:13
- - hawk   Minusów jest więcej: - Co zrobić, jak tego pliku a...   6.02.2004, 17:25:01
- - Nalfein][WR   Nie wywalili kontrolera, ale wywalili obiekt typu ...   6.02.2004, 21:57:31
- - hawk   Ale warstwa kontrolera bez kontrolera? To tak jak...   6.02.2004, 22:57:34
- - Nalfein][WR   Chyba za dużo nad Phiendem przesiedziałeś To tak ...   7.02.2004, 12:28:19
- - cagrET   Cytat- Co zrobić, jak tego pliku akurat nie ma? Ko...   7.02.2004, 14:28:31
- - hawk   To w takim razie każda aplikacja w php jest oparta...   7.02.2004, 15:38:42
- - Sh4dow   Hmm, tak szczerze mowiac, to kazda strona napisana...   7.02.2004, 17:03:06
- - Nalfein][WR   CytatTo w takim razie każda aplikacja w php jest o...   7.02.2004, 17:35:12
- - KaGe   Małe wtrącenie na część chyba bardziej toporną i praktyczną   11.05.2004, 00:05:41
- - marcin96   http://phppatterns.com/index.php/imagecata...clevi...   11.05.2004, 07:10:35
- - KaGe   Kilka pytań   12.05.2004, 00:54:57
- - marcin96   ad 1) poczytaj dokumentacje phienda ) http://phie...   12.05.2004, 06:11:35
- - KaGe   czyli jak?   12.05.2004, 22:39:58
- - marcin96   Re: czyli jak?   13.05.2004, 07:43:40
- - KaGe   Jeszcze jedna sprawa z MVC   13.05.2004, 23:27:38
- - marcin96   Re: Jeszcze jedna sprawa z MVC   14.05.2004, 08:38:47
- - KaGe   Modele   16.05.2004, 01:22:32
- - hawk   Nie rozumiem :? ArticleDataModel i ArticleModel ma...   16.05.2004, 09:27:50
- - KaGe   OK   20.05.2004, 14:59:58
- - hawk   Hmm, zaczynasz od końca... co nie jest jakąś szcze...   20.05.2004, 18:49:22
- - KaGe   HeHe   26.05.2004, 09:30:05
- - Balin   Ja mam pytanie o cos innego. Wiadomo, ze niektore ...   23.06.2004, 14:01:04
- - gkeb   Ostatnio troche dumałem nad MVC i w związku z tym ...   4.07.2004, 10:43:35
- - Zepco   1. Z tego co ja już zdążyłem się zorientować, to n...   4.07.2004, 10:52:58
- - rmn   kurcze od jakiegos czasu probuje dowiedziec jak ...   15.07.2004, 22:10:03
- - Ozzy   MVC jest dobre, ale....w Javie:) Przykład: Swing, ...   16.07.2004, 11:10:33
- - Ace   Tak, tez mam takie wrazenie. Wyszedlem z zalozenia...   16.07.2004, 11:21:29
- - gkeb   Tak sobie dumam i dumam i.... : koncepcja 1: 1.wy...   25.07.2004, 23:01:49
- - marcin96   Żadna nie jest ;>) 1. index[*] odpala kontrole...   25.07.2004, 23:57:46
- - gkeb   Hehe Wiedziałem ze sie myle W mojej koncepcji c...   26.07.2004, 16:11:51
- - hawk   Oczywiście że model nie powinien korzystać z żadny...   26.07.2004, 21:12:51
- - gkeb   Co do wielu kontrolerow to zauwaz ze to Marcin wla...   26.07.2004, 22:24:39
- - hawk   Z tymi wieloma kontrolerami to Marcin raczej pisał...   27.07.2004, 11:00:25
- - marcin96   Cytat(hawk @ 2004-07-27 11:00:25)Z tymi wielo...   27.07.2004, 11:30:50
- - aleksander   witam, więc bez zbędnych wstępów parę pytań: 1....   30.10.2004, 15:07:53
- - bela_666   Cytat1. nie wiem czy dobrze rozumuje: model to cze...   30.10.2004, 15:18:47
- - matid   A czy taki przebieg pracy aplikacji jest zgodny z ...   30.10.2004, 15:54:58
- - aleksander   ale teraz wywiązuj się pytanie: jeżeli dodam nową ...   30.10.2004, 18:25:26
- - ActivePlayer   Nie wiem czy moja idea jest dobra ale czy mozna na...   30.10.2004, 21:03:23
- - matid   Cytat(Olo @ 2004-10-30 19:25:26)ale teraz wyw...   30.10.2004, 21:29:47
- - aleksander   no tak, ale jeżeli nowy widok bedzie kozystal z no...   30.10.2004, 21:43:19
- - dag   ArticleModel: - dodaj - edytuj - usun - get title ...   30.10.2004, 22:32:32
- - hawk   @ogólnie: Nie ma sensu zastanawiać się, czy model...   31.10.2004, 20:55:35
- - Vengeance   hmm no tak w MVC nigdy nie wnikalem ale teraz moje...   31.10.2004, 21:11:30
- - hawk   Zaczynamy od tego, że mamy ten Article tak jak w t...   2.11.2004, 09:29:23
- - bela_666   hm dzis sobie w szkole myslałem o mvc i narysowałe...   8.11.2004, 22:39:22
- - hawk   1. Ja bym to zrobił tak, że Widok może dostać dane...   9.11.2004, 09:33:31
- - DeyV   CytatJa bym to zrobił tak, że Widok może dostać da...   9.11.2004, 09:55:15
- - hawk   @DeyV: ale phiend wcale nie ma routera. Ba, nie zn...   9.11.2004, 10:49:26
- - Vengeance   to moze trzeba opatentowac bill ci opatentowal po...   9.11.2004, 14:17:48
- - bela_666   Cytat1. Ja bym to zrobił tak, że Widok może dostać...   9.11.2004, 16:51:40
- - dag   bela_666 @ przeczytaj dokładnie artykuł o MVC na p...   9.11.2004, 17:12:40
- - bela_666   Cytat(dag @ 2004-11-09 18:12:40)bela_666 @ pr...   10.11.2004, 18:56:30
- - aleksander   zapytania nie wymagające akcji: SELECT zapytania w...   10.11.2004, 18:58:18
- - hawk   @Bela: Lepiej nie mówmy o zapytaniach, bo w MVC w...   11.11.2004, 09:34:32
- - bela_666   Cytat(hawk @ 2004-11-11 10:34:32)Lepiej nie m...   12.11.2004, 00:00:03
- - aleksander   ok to mi jeszcze ukazał się taki oto problem: wyo...   15.11.2004, 15:14:00
- - hawk   Hmm, są dwie zasady: 1. Widok powinien być jeden....   15.11.2004, 16:47:21
- - hamlecik   Witam, Mam taki maly OT. Otoz stworzylem sobie os...   17.12.2004, 11:15:45
- - Ludvik   Kontroler z natury tego wzorca jest jeden. CytatWy...   17.12.2004, 12:35:45
- - Seth   @hamlecik: Ja to robie w ten sposob: Mam jeden glo...   17.12.2004, 13:12:42
- - hamlecik   Seth: Wielkie dzieki za rozjasnienie mi sprawy, ch...   18.12.2004, 11:30:28
- - Seth   Faktycznie troche zmodyfikowalem wzorzec ale inny ...   19.12.2004, 13:01:48
- - Vengeance   Pora na moje pytanie Dwa różne schematy działani...   31.12.2004, 15:35:43
- - bregovic   U mnie to wyglada tak: Wyswietlamy temat: FrontCon...   31.12.2004, 15:53:30
- - kurak   Vengeance, co u Ciebie robi showTopic?   31.12.2004, 16:25:47
- - Vengeance   to jest akcja wyswietlajaca to co widzisz teraz t...   31.12.2004, 17:26:42
- - kurak   A po co Ci i showTopic, i showTopicView? Przeciez ...   31.12.2004, 19:00:01
- - bregovic   Zaraz, moment, akcja jest częścią kontrolera - i n...   31.12.2004, 19:07:42
- - kurak   bregovic, sciagnij sobie pdf'a z artem hawka ...   31.12.2004, 19:12:40
- - bela_666   Cytat(kurak @ 2004-12-31 20:12:40)bregovic, s...   31.12.2004, 19:38:02
- - Vengeance   @kurak : Cytat(hawk)Powinno być tak: 1) Zawsze ur...   31.12.2004, 20:22:03
- - kurak   Hmmm... no to mamy tu przypadek rozbieznosci zezna...   1.01.2005, 14:33:29
2 Stron V   1 2 >


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: 26.04.2024 - 10:08