Hmm velmi zaujimavy nazor. Mimochodom ako vedlajsi efekt dakujem za ten Freemaker. Toto je nieco co som dlho hladal. Tiez sa mi zhodou okolnosti protivia JSPcka.
Zdenko 2011/7/27 Petr Novak <kek.for...@gmail.com> > ** > Zkusím poslat svůj názor na pojem Controler a jak si ho vykládám a používám > já, bez ohledu na podporu v různých frameworcích. Zároveň nechci tvrdit, že > ten můj pohled je správný, prostě s ním jen takto žiju a zdá se mi to zatím > docela funkční :). > > Můj pohled na aplikaci vychází z pojmu Use Case (UC) - jeden nějaký případ > užití aplikace - založení objednávky, vyskladnění zboží, apod. Tento > UC má typicky nějaký začátek a řadu alternativních toků, které mohou > znamenat i výce způsobů jak ukončit jeho běh (dokončím vše, opustím to přes > cancel, opustím ho přes menu, apod.) . Mezi UC se dá provádět navigace, > přesně vím, kdy který začíná a kdy končí. Mohu ho autorizovat, apod. > (Myslím, že ve springu by se tomuto mohlo říkat Web Flow) > > No a když to implementuji, tak k jednomu UC dělám typicky jeden Controler, > který ho obsluhuje. UC se může skládat z více stránek (View) - třeba > wizardy, apod. Úkolem Controleru je obsloužit veškeré vstupní požadavky z > view - validovat vstupy, konvertovat vstupy, na základě vstupů volat > příslušnou business logiku (Model). Následně buď volí View, kterým daná > data vyrenderuje,nebo získá další (wizzard) a nebo se na základě vrácených > dat z business logiky rozhoduje o přechodu na jiný UC (tedy i jiný > controler) - tomu říkám Aplikační flow. A to řeším tak, že ten Controler v > případě přechodu na jiný UC prostě jen vyšle kód toho nového UC a nějaký > centrální handler provede ten přechod. - Tomu se může říkat třeba > FrontController. Takže já rozlišuji Application Controller a > FrontController - viz patterny. > http://www.corej2eepatterns.com/Patterns2ndEd/ApplicationController.htm, > http://www.corej2eepatterns.com/Patterns2ndEd/FrontController.htm > > No a co se týče toho View - U mě View nesmí nikdy obsahovat logiku, jen > renderovat, proto taky nemám rád JSP, PHP a jiné podobné technologie, ale > člověk se musí uhlídat. Z pohledu funkčnosti se mi více líbí technologie > jako Freemarker, které nic jiného, než vypsání a formátování dat na výstup > neumožňují. A k tomu renderingu jak píšete - tak buď bych to řešil tak, že > controler volí jen logické označení view, které se má použít - tedy řeknu - > ShowFormXYZ a pak nějaký FrontControler, ViewHandler, Filter, nebo jak > chcete, na centralizované úrovni vybere podle technologie klienta konkrétní > realizaci view, třeba tak, že k ShowFormXYZ přidá technologii: > ShowFormXYZ_800x600.jsp to pouze v případě, že opravdu logika je stejná > pro všechny variace toho view. > V případě, kdy logika je jiná - například pro malé rozlišení by se šlo na > wizzard, kdežto pro velké rozlišení je vše v rámci jednoho formu - bych asi > už na frontControlleru rozstřelil podle klienta na různé implementace > obslužných AplikačníchControllerů. > > A pak je tu ještě jedna možnost, použít tzv TwoStep view: > http://martinfowler.com/eaaCatalog/twoStepView.html > > Controler vybere View, to view ale nerenderuje pro konkrétní technologii, > ale sestaví jakýsi metamodel-view - třeba popíše výslednou obrazovku pomocí > XML (XUL, XAML, XML-FO, jiné) a toto se pak teprve transformuje podle > technologie klienta do výstupu, takže třeba budete mít různé transformace > podle rozlišení obrazovky, apod. Takže pak to neřeší controler, ale jakýsi > renderovací procesor toho view. > > Podle mě je vždycky MVC také otázka granularity pohledu, můžeme se koukat > na MVC s pohledu AJAXu, z pohledu serveru, z pohledu konkrétní visuální > komponenty. Možností je spousta, takže se těžko odpovídá na podobné obecné > dotazy. Jako zajímavé mi připadne řešení MVVM > http://en.wikipedia.org/wiki/Model_View_ViewModel. > > S pozdravem > > Petr > > > Dne 27.7.2011 14:33, Zdenko Vrabel napsal(a): > > Mne neslo uplne o typovo rozne view-s. Toto uz myslim presahuje MVC. Pri > niecom takom, kedy uz clovek uvazuje o napriklad tej konzolovke a tak sa uz > budeme bavit v rovine backend | frontend (alebo to SEO). Mozno som uviedol > blby priklad ale zoberme si MVC v iOS (no flame). Svojho casu to bolo jasne > ako facka. Tie devices mali rovnake rozlisenie obrazovky. Zrazu prisli > tablety, obrazovka sa zmenila a designeri mali silne nutkanie tuto plochu > vyuzit. Funkcionalita sa nemeni, len sa meni rozlozenie ovladacich prvkov. A > teraz ci je dobre mat nejaky obecny system na to alebo to s kludom moze > riesit controller a netreba tam pridavat dalsiu zlozitost. Podla mojho > nazoru sa MVC situuje vo frontende kde by controller mal riesit 'kliklo sa > na nejaky button' . View by to fakt mal len a len zobrazovat. Ja osobne uz > JSP povazujem za nie idealne, lebo clovek tam moze dat nieco co tam > nepatri (a castokrat tam aj da). > > Mozete mi pls poslat link na vas clanok ohladom toho SOA? > > Och asi strasne spekulujem ale kazdopadne dakujem za kazdy postreh. > > Dakujem, > Zdenko > > 2011/7/27 Oto Buchta <ta...@buchtovi.cz> > >> Ono je to hodně složité. Při různých View (a myslím tím typově jiných) je >> podle mého klasický model MVC trošku zavádějící. >> To, co v takovém případě chceme, je mít obecný model, nad kterým postavíme >> obecnou business logiku. Potom máme nějaké View, tedy něco, pod čím rozumíme >> vlastní renderování. Business logika je pak bude ovládána NĚČÍM, co se podle >> mne dá nazvat Controller (minimálně ve Strutsech se tak opravdu jmenuje) >> přes obecné API, ale co už renderování není. Něco, co rozhoduje, co se má >> zobrazit příště. O tom, že je naprosto jiné ovládání aplikace pro Androida, >> Web či z tlustého klienta je více méně jasné, ale přestoi bychom spekulovat, >> že ono rozhodování, co bude dál, ale může být typicky stejné pro celou >> aplikaci a že controller je tedy obecný a stejný a že controllerem je ono >> generické API. Zásadní rozdíl ale nastává ve chvíli, kdy si řekneme, že >> jedním z View bude také příkazový řádek, že chceme aplikaci ovládat ze >> skriptu. Tím se z toho skriptu stává do jisté míry controller. A nemyslím, >> že bychom mohli tvrdit, že příkazový řádek pak má možnost pouze komunikovat >> s modelem, tedy že máme zcela nový controller se stejným modelem. Nikoli. >> Chceme komunikovat s onou Business logikou, volat její SLUŽBY. Taktéž si >> nemyslím, že je skript ve stejné situaci ovladače jako člověk, tedy že před >> ním stojí nějaké View, za ním je controller a pak model. >> >> Tím se dostáváme k dalšímu problému, tedy kde je MVC v SOA. Pak by každá >> služba byla MVC sama o sobě. Ale o tom jsem už kdysi psal na blogu. >> >> >> 2011/7/27 Zdenko Vrabel <vrabel.zde...@gmail.com> >> >>> Dakujem za odpovede. Presne nieco taketo som potreboval zistit. Mna >>> zaujimal nazor viacero ludi ako to vidia. Ja osobne nejdem sutazit :) >>> >>> Zdenko >>> >>> Dňa 27. júla 2011 10:25, Dusan Msk <msk.c...@gmail.com> napísal(-a): >>> >>> Tiez nadobudam ten pocit. Nevidim dovod, preco by view nemohol vybrat >>>> controller. Je to na jednom mieste, nemusi sa to patlat tonou xml >>>> konfigurakov filtrujucich cosi kdesi z kadesi. Je mozne, ze v urcitych >>>> pripadoch to tak moze byt vyhodne, ja osobne som si ale zatial >>>> vystacil v kode v ramci controlleru. >>>> >>>> >>>> -- >>>> Dusan >>>> >>>> 2011/7/27 <michal.niko...@elanor.cz>: >>>> > Obcas mi pripada, ze to je soutez "Jak co nejvice vyber konkretniho >>>> view >>>> > zasmodrchat" >>>> > >>>> > NkD >>>> > >>>> >> Od: Petr Prikryl <peter.prik...@gmail.com> >>>> >> Komu: konference@java.cz >>>> >> Datum: 27.07.2011 09:48 >>>> >> Předmět: Re: Otazka ohladom MVC >>>> >> Odeslal: konference-boun...@java.cz >>>> >> >>>> >> Dobry den, >>>> >> myslim si ze view by nemel vybirat controller, ale nejaky filtr na >>>> >> requestu a mam takovy pocit ze to v spring MVC dokonce takto je, ze >>>> jde >>>> >> podle urcitych pravidel urcit jaky filtr se aplikuje. >>>> >> Dale me v tom navadi to, ze se kontroluje accepted-content-type takze >>>> >> snad se i takovy princip castecne pouziva (ikdyz toto je jakoby na >>>> >> jinou vrstvu). >>>> >> >>>> >> PP >>>> >> >>>> >> On Wed 27 Jul 2011 09:40:30 AM CEST, Zdenko Vrabel wrote: >>>> >> > Dobry den, >>>> >> > >>>> >> > Moju otazku by som chcel smerovat skor k MVC patternu ako ku Jave >>>> >> > samotnej tak snad to nebude vadit. Ak sa nahodou tiez budem pytat >>>> >> > somarinu, tak ma ospravedlnte ale potreboval by som sa len proste v >>>> >> > niecom uistit alebo naopak aby mi niekto povedal ze je to somarina. >>>> >> > Totizto nedavno som premyslal nad MVC patternom (pre web). Totizto >>>> >> > zaujimalo by ma, ci je spravne/nespravne ak v kompetencii >>>> controllera >>>> > je >>>> >> > rozhodovat o tom aky view sa pouzije alebo naopak. Mal by >>>> controller >>>> >> > vobec nieco vediet o viewoch? Vysvetlim na priklade. V dnesnej dobe >>>> sa >>>> > >>>> >> > dostavaju do popredia rozne iPhony, Androidy, iPady a neviem co. K >>>> > tomu >>>> >> > sa zacina aj prisposobovat design niektorych webov. Ide o to, ze >>>> dajme >>>> > >>>> >> > tomu design pre iPad je nieco uplne ine ako design pre klasicky >>>> > browser >>>> >> > (z pohladu web designera). To ma privadza k tomu, ze je potrebne >>>> > riesit >>>> >> > aky view sa na zaklade User Agenta pouzije. Moja otazka je vlastne >>>> o >>>> >> > tom, ci je spravne mat v ramci MVC nejaky mechanizmus routingu a >>>> >> > Controller by do toho nemal zasahovat (v podstate len produkuje >>>> model) >>>> > >>>> >> > alebo naopak. Takyto mechanizmus znecistuje MVC/ zvysuje jeho >>>> > zlozitost >>>> >> > a toto by mal riesit prave controller. Alebo je to uplne jedno? >>>> Este >>>> >> > doplnim ze hovorim o MVC vseobecne nie o nejakom konkretnom ako >>>> Spring >>>> > MVC. >>>> >> > >>>> >> > Za odpovede vopred dakujem, >>>> >> > Zdenko Vrabel >>>> >> >>>> >> >>>> > >>>> > >>>> >>> >>> >> >> >> -- >> Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com >> > > > > -- > Petr > >