Nemůžu si pomoct, ale tyhle všechny moderní a populární MVC frameworky jsou až na detaily pořád na stejné brdo. Zkoušel jste někdo třeba framework Seaside? To je úplně jiný pohled na tvorbu web aplikací. Žádné předpřipravené HTML šablony a podobně, ale komponenty, ze kterých se web stránka skládá a každá si udržuje svůj stav. To vše se píše ve Smalltalku (další plus) a nemusíte napsat ani řádku HTML. Na persistenci můžete použít například Gemstone, což je robustní a výkonná objektová databáze.
O Seaside tady na Rootu před nějakým rokem vyšel skvělý seriál od Pavla Křivánka a i když už je trošku zastaralý, tak jako ukázka co a jak je výborný.
No asi jste Seaside nevidel, ze? Tady jde predevsim o to, ze je zde naprosta konzistence zapisu. Nemusite psat cast aplikace jako HTML sablonu a kontroler treba v Ruby. Proste vsechno pisete ve Smalltalku. Navic nemusite resit zadne volani kontroleru ze sablony. Proste primo napisete primo kod, ktery se ma provest - napriklad u odkazu napisete:
html anchor
callback: [html text: 'Ahoj'];
with: 'Vypise ahoj'
Navic kazda komponenta si pamatuje svuj stav, takze nemusite vubec resit nejak slozite predavani parametru treba pres URL. Proste je to stejne, jako byste psal desktopovou aplikaci, kterou taky skladate z komponent.
Pokud píšu aplikaci sám, žádnou nevýhodu nevidím. Pokud mám v týmu někoho, kdo má psát HTML šablony, pak tam problém nastává, to uznávám. Na druhé straně, pokud mi někdo dodá šablonu jako HTML, myslím, že ji do Seaside přepíšu během velmi krátké doby.
Nejedná se o generátor. Píšete kód, jenom místo nepříjemné syntaxe HTML používáte podstatně příjemnější Smalltalkový kód, ale možnosti jsou naprosto rovnocenné jako u psaní přímo HTML. Ale to je to relativně menší plus. Především při tvorbě aplikace uvažujete ne o stránkách jako celku, ale o komponentách, ze kterých se ta výsledná stránka skládá. Opravdu doporučuji si něco o Seaside přečíst.
Ja to chapem. Lenze tu staviate Smalltalkovske helpery nad nieco viac. Ono to je vsetko super, len tieto pomocky su potrebne leda tak k odkazom a otvaraciemu tagu pre formular. Ostatne pomocky na generovanie HTML nemaju zmysel, pretoze sa vacsinou vzdy jedna o tak jednoduche HTML znacky, ze vyuzivanie vstavanych helperov v konecnom dosledku len zneprehladni kod. (Ano mozete argumentovat tym, ze je to konzistentne v jednom jazyku, no templaty nemusia spravovat ludia, ktori neovladaju pracu so samotnym Smalltalkom)
A o rozkuskovani si stranky na urcite casti, ktore su znovupouzitelne na inom mieste je myslim filozofou kazdeho normalneho frameworku.
Při vší úctě, pořád mluvíme každý o něčem jiném. V Seaside se pracuje pouze s komponenty, takže žádné templaty neexistují a je to jedna ze základních vlastností Seaside. Prostě se nepracuje stylem, že jeden navrhne HTML template a druhý napíše controlery napojené na model od někoho třetího. Pracuje se stejně, jako u tvorby klasické desktopové alikace. Tam taky nemáte templaty, ale přidáváte do okna třeba komponentu kalendář, tabulku, tlačitko apod.
Jinak ty MVC frameworky, které znám (i když přiznávám, že nejsem jejich velkým znalcem), mají koncepci komponent na trošku jiné úrovni, než Seaside. Možná se tomu blíží WebObjects od Applu, ale s tím jsem nikdy nepracoval. Zkuste se podívat na 1. díl seriálu o Seaside tady na Rootu. Sice už mírně neaktuální, ale základní koncepce Seaside je patrná.
Priznavam ze o Smalltalku a Seaside som toho nevedel mnoho, preto som na zaklade Vaseho prispevku venoval asi hodinu predbeznemu zoznamovaniu. Zaprve musim povedat, ze Smalltalk ma ako jazyk zaujal, no musim mu viac prist na koren, kedze som skor odchovany na mainstreamovej vlne jazykov a teda to je pre mna "novsi" koncept.
Vsimam, ze Seaside sa snazi riesit vsetky "zakladne" problemy, aby co najviac odbremenil tvorcu, ktory s nim chce pracovat. No prave je tam to, ze samotny Seaside spaja dokopy controller a pohlad. To je vec, ktoru by som mu osobne vytkol. Som zvyknuty, ze controller je nieco co obsluhuje vsetky http volania a vysledok volania navrati pohladu, kde sa uz len pracuje s navratenymi hodnotami a neovplyvnuje to funkcnost inych casti.
Prave ze aj desktopove aplikacie zacinaju (urcite uz maju dlho, NET framework verzie 3 to dotahuje na pouzitelnu uroven) ze sa v XML(alebo iny znackovaci jazyk) definuje vzhlad a deklaracia objektov, a potom sa im len predavaju hodnoty.
No musim priznat, ze Smalltalkovska koncepcia je pre mna uplne ina. Prave tym, ze vsetko bezi v pamati VM a neexistuju subory ako take. Je to nove s cim som sa v beznej praxi nestretol, no urcite to je dost zaujimave.
Samozřejmě každý přístup má svá pro a proti. Přístup Smalltalku k programování je obecně jiný než u mainstreamu, ale rozhodně jak říkáte zajímavý. Každopádně si myslím, že tento jiný pohled může obohatit každého. No já jsem Seaside docela propadl a RoR, ve kterém jsem předtím něco dělal v podstatě zavrhnul ;)