Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů k článku
Nette Framework: Refactoring

uživatel si přál zůstat v anonymitě ---.antik.sk
2. 4. 2009 21:03

spring mvc

Pan Grudl, prestante bojovat s veternymi mlynmi ;-), skuste sa pozriet na http://ics.upjs.sk/~novotnyr/java/spring/spring-mvc.pdf Mozno tam najdete odpovede na mnohe svoje otazky. S pozdravom uspesny konverter zo sveta PHP do sveta Javy. ;-)
Roman
Roman (neregistrovaný) ---.87-197-103.telecom.sk
2. 4. 2009 23:27

Re: spring mvc

Ak náhodou nie si nejaký geroj, čo sa zamestnal v nejakej firme, berie pravidelne plat za to že obetuje svojmu zamestnávateľovi X hodín zo svojho bezvýznamného programátorského života tak by tento tvoj komentár mohol mať aj nejakú výhu, v opačnom prípade músim skončtatovať, že je podstatný rozdiel medzi životom robotníka v kompromise a životom človeka ktorý "riadi". Hlavne je tak trochu trápne mu dávať nejaké rozumy. Ja osobne mám väčší rešpekt voči ľuďom ktorí sa nad vecami zamýšľajú a rišenia prinášajú ako nad tými ktorí ich "iba" akceptujú. S týmto súvisí aj môj obľúbený citát o (priemyselnom) dizajne. "Design is about how something works, not how it looks. It's what's inside that counts.
The best designs are the result of someone's questioning everything around them." (James Dyson) Treba sa občas snažiť aj o veciach premýšľať. Nie sa na ne iba slepo adaptovať. Hlavne v prípade ak človek chce niekam pokročiť vo vývoji.
uživatel si přál zůstat v anonymitě 217.75.90.---
3. 4. 2009 9:39

Re: spring mvc

Lenze to vobec nie je o tom, ze sa nad niekym chcem vyvysovat. Pan Grudl je urcite inteligentna ludska bytost a snazi sa optimalne riesit problemy suvisiace s tvorbou webovych aplikacii. V PHP som programoval zhruba tri roky a takisto som si naprogramoval spustu kniznic, ktore mi v danej chvili riesili problemy - a na druhej strane vytvarali nove. S casovym odstupom mozem tvrdit, ze som vtedy programoval dost s klapkami na ociach. Budete sa divit ale prave konfrontovanie s pracou inych ludi ma posunulo niekam inam. Ono je totiz rozdiel vymyslat aplikaciu , ktoru bude programovat jeden clovek a za mesiac sa odovzda, objedna sa cez nu par objednavok na nete a po pol roku domena zanikne. Studoval som framework pana Grudla, nette aj dibi, avsak pri vsetkej ucte si dovolim tvrdit, ze nie je vobec vhodny pre timovu pracu na projekte ktory trva roky a na ktorom spolupracuje desat dvadsat programatorov. A o tom to je, naco vymyslat mini pidi frameworcok, bez ambicii aby prekrocil tien miniwebiku, ktory je one man show? Zrejme ste si len potrebovali slovne ulavit, alebo mate stereotypnu predstavu o tom ze timova firemna praca programatora spociva len v bezhlavom prijimani prikazov od skusenejsich programatorov a lepenie kodu len aby fungoval. Divili by ste sa kolko toho vasho hlbaveho premyslania na dizajne sa v takomto projekte vyskytne. ;-)
Jiří Knesl
Jiří Knesl (neregistrovaný) ---.awebsys.cz
3. 4. 2009 10:20

Re: spring mvc

Každý framework se hodí na něco jiného. Že se podle Vás nehodí Nette na projekt na 30 člověkolet, to je docela dobře možné. Uvědomte si ale, že takových projektů je ze všech vznikajících webů sotva půl procenta (Zdroj: vycucáno z prstu).

Nette může být naopak mnohem lepší/jednodušší/snažší na údržbu a na kvalitu zdrojáků pro 80 % projektů.

Nechci a nebudu tady kopat ani do Springu, ani do Nette. Každý framework má to svoje. A brečet, že se assembler nehodí na kódování webu a ruby na programování operačních systémů (nadsázka), to je prostě zcela mimo.
uživatel si přál zůstat v anonymitě 62.65.188.---
3. 4. 2009 10:41

Re: spring mvc

Zopar poznamok.. je kopec zle urobenych projektov (ci uz je to pidi projekt alebo enterprise solution) ktore funguju a zarabaju peniaze cele roky.. a je jedno ci ich robi velka alebo mala firma.. to vedia vsetci co robili vo velkych aj malych firmach. Nejde totiz o to na com sa to robi, ale presne o to hlbave premyslanie, o analyzu, riadenie projektu a ostatne hovadiny. Je fakt jedno ci je to one man show alebo velky projekt, pre to ci projekt bude mat navratnost alebo ustoji svoj rast to nie je absolutne podstatne. Najviac sa mi pacia vsetky tie korporacie co sa snazia po mesiacoch usilia na webe pretlacit svoje portaly a smejem sa ked to ich sefstvo zasa po mesiacoch zaklincuje pretoze to nefunguje a potom sa pozries kusok vedla kde na kolene niekto zbuchal nejaku somarinu ktora zaraba miliony dolarov rocne. A potom pride nejaky mudrlant a zacne rozpravat nieco o timoch a jedinom uzasnom skvelom frameworku. ;-) To je ta relativita.

Kazdopadne. Myslim ze si ma uplne presne pochopil. To mi staci, netreba riesit. Kludne si uzivaj svoj jednoduchy zivot a povazuj to za spravne rozhodnutie vo svojom zivote. Mozno je to naozaj to spravne rozhodnutie. Zamestnat sa, mat pravidelny prijem, postavit dom zasadit strom, postarat sa o rodinu. Kazdy je strojcom svojho osudu. Niektori si budu pidizlikat nejake smiesne vlastne riesenia a trpiet cely zivot.. mozno z toho nic nebude.. ale pre pokrok je to rovnako dolezite ako udrzanie rodu. ;-)
Aleš Roubíček
Aleš Roubíček (neregistrovaný) 193.165.135.---
3. 4. 2009 10:46

Re: spring mvc

Přece jen segment menších webů je celkem velký na to, aby i pro nějmohli existovat frameworky, ktere jejich vyrobu zefektivní. Na ty velke tu jsou pak pracanti jako vy.
v6ak aura:72
3. 4. 2009 11:01

Trefné

To bylo celkem trefné. Stejnětak, dohnáno do extrému, pro víceméně statické stránky obsahující kontakt, otevírací dobu a základní info bude MVC spíš zbytečné zdržování. Dynamické stránky se mohou použít tak nanejvýš na jednoduché šablony pro kostru stránky. Nette je zde sice asi použitelné, ale spíš zbytečné.
Podobně nelze Spring cpát kamkoli...
David Grudl
David Grudl (neregistrovaný) ---.vodafone.cz
3. 4. 2009 1:41

Re: spring mvc

Cele PDF jsem poctive precetl a prekvapilo (a samozrejme povzbudilo) me to, ze je to Spring MVC, kdo by se mohl od Nette hodne ucit. I kdyz je otazka jak moc je ten dokument vypovidajici, protoze treba o MVC jsou tam velmi chybne informace. Ale nechci se prit, kdo je nebo neni lepsi, je to proste muj dojem.
uživatel si přál zůstat v anonymitě 217.75.90.---
3. 4. 2009 9:52

Re: spring mvc

Vas pri citani Spring MVC prekvapilo ze by sa mohol od Nette ucit? A kde ste na to narazili, mozno som prave ten slajd preskocil, ked to tam bolo uvedene. Nuz neviem, skromnosti zrejme nemate na rozdavanie. Tvrdit ze Spring - celosvetovo rozisreny od pidifiriem po korporacie sa moze od vas ucit. Zeby nova konkurencia pre Roda Johnsona? ;-)
roman
roman (neregistrovaný) 62.65.188.---
3. 4. 2009 10:43

Re: spring mvc

namiesto nekonkretnych blabolov by ste obaja mohli prejst k samotnemu boxu.. teda ak je na to vola.. prednost by mohol mat obhajca springu.. nech sa paci ;)
David Grudl aura:74
3. 4. 2009 16:46

Re: spring mvc

Ano, ano, přesně to tvrdím a skromnosti mám doufám přiměřeně. Nepleťme si skromnost a pokoru. Tu jsem v reakci na váš komentář odhodil, i když chápu, že jste to myslel v dobrém, nicméně jsem chtěl být také provokativní. Ovšem argument "jak by něco lokálního mohlo být v jakémkoliv směru lepší než to, co vytvořill člověk s anglickým jménem", ten rozhodně neberu ;)

Pokud bychom skutečně chtěli oba frameworky srovnat, musí se to odehrát konstruktivně, v rovině rozumných argumentů - já jsem pro a klidně začnu.

První a nejdůležitější věc - nika Javy a PHP se téměř neprotíná, tyto jazyky si téměř nekonkurují. Dosud tu není plnohodnotná platforma pro hostování Javy stylem ověřeným pro PHP, stejně tak PHP nemá žádnou enterprise edici. Tudíž ani frameworky si nekonkurují a nelze říct "k čemu kvalitní framework pro PHP, když existuje Java a Spring?".

Srovnání začnu od Modelu, protože to je oblast, kterou Nette záměrně přenechává jiným knihovnám. Důvod je ten, že způsob "class diagram = E-R diagram = formulář", je sice na pohled hodně elegantní a dnes i populární, ale s praxí se překrývá jen v 80-90 % a zbývající procenta se strašně těžko pokrývají. Nette hledá jiné cesty, viz třeba http://phpfashion.com/mvc-paradox-a-jak-jej-resit.

Vedle toho controller a view můžeme velmi dobře porovnat. Podle odkazovaného PDF jsou oba frameworky v mnoha směrech velmi podobné, zaměřím se tedy na rozdíly:

- URL vrstva: zatímco Nette Framework ji zcela odděluje, Springu je s URL úzce svázaný. Díky tomu jsem mohl třeba před dvěma týdny přídáním JEDNOHO řádku http://jdem.cz/a6gq7 dosáhnout toho, že tvar všech URL v demonstrační aplikaci se dynamicky změní podle konfigurace serveru. Ve Springu by podobný efekt (opět vycházím z PDF) znamenal změnu na mnoha místech kódu kontroleru a šablon.

- kontroller: ve Springu se jim může stát jakákoliv třída, v Nette musí implementovat interface IPresenter. Je to rozdíl, ale nedokážu jej zhodnotit. Fungování metod s parametry je v obou frameworcích prakticky totožné. Předávání návratových hodnot naopak Nette nemá.

- view: odvození jeho názvu a namapování na šablonu je opět velmi podobné, jen Nette se vyhýbá konfiguraci v XML. Podobná je dokonce i syntaxe šablon. Z PDF těžko říct, který jazyk je v praxi silnější, jak to funguje v Nette uvidíte v příštím díle.

- validace dat: Nette věc pojímá trošku jinak, ale nějaký zásadní rozdíl v tom nevidím.

- odkazování: opět to souvisí s oddělenou URL vrstou, takže místo return "redirect:nejake-url.do" ve Springu se v Nette odkazuje přímo na název metody kontroleru, tj. $this->redirect('metoda'); V tom vidím zásadní přínos, místo, kde by se Spring mohl inspirovat.


Suma sumárum, Spring MVC vypadá jako velmi dobrý a šikovný framework. Nevidím ale nic, kvůli čemu bych měl padnout na kolena a opustit Nette. Naopak řada vlastností by mi chyběla.
uživatel si přál zůstat v anonymitě 88.212.6.---
4. 4. 2009 7:09

Re: spring mvc

Spring je v URL zviazany v dvoch oblastiach:
--------
* Sufixy URL adries su uvadzane v anotaciach pre kontrolery.
Tohto sa mozno alebo napisanim vlastneho mapovania requestov na kontrolery, ktory moze byt taky dynamicky ako sa ziada a jednym riadkom ho deklarovat v XML.

Nette adresy generuje plne dynamicky. Ak som pochopil spravne, tak trik spociva v pritomnosti premennej $presenter, ktorej metody vygeneruju URL. Vyzera to ako dobry napad, pretoze naozaj sa zbavite URL adries vo view vrstve.

Ale: Spring MVC absolutne neriesi, v com bude napisany view. JSP? Freemarker? JasperReports? RSS? Staci, ze view rendered dostane modelovu mapu a ako ju zrenderuje je na nom. Nette podporuje primarne PHP, ako je to s inymi vrstvami?

* Modelom moze byt lubovolna trieda. Myslim, ze uz po Struts 1.x sa ludia poucili a zistili, ze nema zmysel, aby model musel byt nieco specialne. Automaticke vkladanie navratovych hodnot do modelu je super vec. Tu sa zhodneme

* Kontroler. Spring MVC razi zasadu, ze obsluzne triedy maju byt jednoduche, najlepsie bezne triedy s anotaciou. (Anotacia je ekvivalentna marker interfacu bez metod).

* Mapovanie nazvu view na konkretnu implementaciu je riesene jednym riadkom v XML.

* Odkazovanie. "redirect:" je skratka pre pohodlnych. Pokojne mozete vratit specialny RedirectView, kde uvediete logicke meno viewu a model (presny ekvivalent "->redirect()"). Alternativne mozete view do kontrolera zadrotovat cez dependency injection a kontroler ani nebude tusit, ze nejaky redirect sa deje.

Tu by som podotkol, ze netreba mat totalnu paranoju z XML. Bezna springova aplikacia ma aj tak XML subor pre dependency injection, cize tam je to jedno (a pozor: DI je velmi dobry pattern, ktory vyvoj velkych aplikacii sprehladnuje).

////////////////////////////////////////////

Inak som velmi poteseny, ze vidim nejaky slubny MVC framework pre PHP. PHP si ho zasluzi.

Mam len otazku:
* ako sa riesia ine formaty view? (Vid vyssie)
* ako je mozne pouzivat vlastne formulare (Nette generuje kod formularov dynamicky, toto Spring MVC nema, view vrstvu nechava na vyber implementatora)
Robert Novotny
Robert Novotny (neregistrovaný) 88.212.6.---
4. 4. 2009 7:11

Re: spring mvc

To hore som ja :-)

Este mi napadlo: ktore vlastnosti by vam chybali?

Mna primarne zaujalo to generovanie formularov spolu s JS validaciou. To vyplyva z generovania formularov cez PHP.
David Grudl aura:74
6. 4. 2009 14:31

Re: spring mvc

Co by mi chybělo? Ze zmíněných věcí asi ta oddělená URL vrstva a pohodlné generování formulářů, které stačí jednou popsat jazykem PHP a automaticky se vygeneruje HTML, JavaScript a provede validace na straně serveru.

Naopak uživatelům Springu by asi nejvíc chybělo propojení s modelem a databázi.

Ono se na to těžko odpovídá, protože Spring jsem viděl jen z rychlíku, přitom sílu frameworku člověk pozná, až když s ním pracuje.
David Grudl aura:74
6. 4. 2009 14:23

Re: spring mvc

Ale: Spring MVC absolutne neriesi, v com bude napisany view. JSP? Freemarker? JasperReports? RSS? Staci, ze view rendered dostane modelovu mapu a ako ju zrenderuje je na nom. Nette podporuje primarne PHP, ako je to s inymi vrstvami?

Podobně to funguje i v Nette. Zítra by měl vyjít další díl seriálu, který se týká právě renderování šablon, takže tam to bude popsáno podrobně.

Kontroler. Spring MVC razi zasadu, ze obsluzne triedy maju byt jednoduche, najlepsie bezne triedy s anotaciou. (Anotacia je ekvivalentna marker interfacu bez metod).

Anotace PHP prakticky nezná. Zkusil jsem s nimi přijít v Nette, ale narazilo to na technické a „filosofické“ problémy, takže se držím zpět ;)

Odkazovanie. „redirect:“ je skratka pre pohodlnych. Pokojne mozete vratit specialny RedirectView, kde uvediete logicke meno viewu a model (presny ekvivalent „->redirect()“).

Tady mi šlo spíš o ty URL, které Nette generuje dynamicky. Tedy ačkoliv když vrátím RedirectView, tak se jich nezbavím. (teda jestli to dobře chápu).

Tu by som podotkol, ze netreba mat totalnu paranoju z XML. Bezna springova aplikacia ma aj tak XML subor pre dependency injection, cize tam je to jedno.

Ano, to je věc zvyku. Ve světě PHP jsou preferovanější INI soubory, nejspíš proto, že samotné PHP se tímto způsobem konfiguruje.

(a pozor: DI je velmi dobry pattern, ktory vyvoj velkych aplikacii sprehladnuje).

Bezpochyby!

ako je mozne pouzivat vlastne formulare (Nette generuje kod formularov dynamicky, toto Spring MVC nema, view vrstvu nechava na vyber implementatora)

V podstatě lze volit v řadě úrovní od prostého manuálního vykreslení a obsluhy formuláře až po plně automatické v režii objektu Form (například automatická obsluha + manuální vykreslení v šabloně). Asi největší vývoj probíhá na straně automatického vykreslování, protože je to pohodlné (čti: uživatelé to chtějí), ale zároveň by to mělo být co nejlépe konfigurovatelné (čti: každý formulář vypadá úplně jinak).

uživatel si přál zůstat v anonymitě 158.197.31.---
3. 4. 2009 16:32

Re: spring mvc

Nechcem liat ohen do ohna v debate "PHP je pre lamy, Java rulez!", pretoze ta je uplne zbytocna.

Prezentacia (ktorej som zhodou okolnosti autorom) pokryva ,,highlights" zo stylu vyvoja Spring MVC, ktory je zalozeny na konvenciach a anotaciach. Paralelne s nou existuje ,,stara" moznost, kde su konvencie vymenene za XML konfiguraciu. Ale zakladna filozofia ostava taka ista.

V ktorych konkretnych bodoch vidite vyhody Nette oproti Spring MVC? (Prirodzene, su to dva rozlicne frameworky pre dva rozne programovacie jazyky.)
Zasílat nově přidané příspěvky e-mailem