Symfony pro és kontra
Üdv!
Azon morfondírozok mostanában, hogy milyen alapokra építsek egy elég összetett webes alkalmazást. Több keretrendszer is felmerült, köztük a témacímadó nevezetesség is.
Symfonyval nincs tapsztalatom (néhány óra homokozást és olvasgatást leszámítva), Zend Frameworkben és Code Igniterben egy fokkal több. Mégis szimpatizálok a Symfonyval, mert egyrészt nagyon szeretném élesben is kipróbálni, másrészt pedig sok mindent nagyon átgondoltam és kényelmesen támogat (messziről nézve).
A kérdésem az lenne, hogy aki közületek használta már, milyen tapasztalatokat gyűjtött vele.
Előreis köszi minden gondolatot!
■ Azon morfondírozok mostanában, hogy milyen alapokra építsek egy elég összetett webes alkalmazást. Több keretrendszer is felmerült, köztük a témacímadó nevezetesség is.
Symfonyval nincs tapsztalatom (néhány óra homokozást és olvasgatást leszámítva), Zend Frameworkben és Code Igniterben egy fokkal több. Mégis szimpatizálok a Symfonyval, mert egyrészt nagyon szeretném élesben is kipróbálni, másrészt pedig sok mindent nagyon átgondoltam és kényelmesen támogat (messziről nézve).
A kérdésem az lenne, hogy aki közületek használta már, milyen tapasztalatokat gyűjtött vele.
- Mire alkalmas igazán? Mennyire univerzális? Mennyire rugalmas?
- Ajánlott-e komoly látogatottságra aspiráló oldalt Symfonyra alapozni?
- Skálázható lesz a későbbiekben (és milyen módon, vertikálisan/horizontálisan, vannak-e ezzel kapcsolatban konkrét tapasztalatotok)?
- Milyen a tanulási görbéje? Mennyi idő alatt vonható be a munkába későbbiekben új fejlesztő, akinek nem volt előtte Symfonys tapasztalata?
- Mik a gyengéi, milyen oldalt/feladatot nem érdemes rá alapozni?
- minden ami eszetekbe jut. :) (pl profi, de nem szerettem, mert... )
Előreis köszi minden gondolatot!
Követelmény?
Magáról a Symfonyról nem tudok nyilatkozni, sose jutottam el odáig, hogy összerakjak egy oldalt. A RoR-ral ellentétben beüzemelni sem sikerült 5 perc alatt, úgyhogy igazából hagytam a fenébe az egészet. Nyilván, ha több energiát feccöltem volna bele, akkor ment volna, de kicsit elvette a kedvemet az egész bonyolultsága.
Alapjában véve egy oldal, ami kis terhelésre készül, nagyon ritkán fog nagy terhelést kapni. Tehát egy cégnek gyártott weboldal, akármilyen nagy brand site, csak ritkán igényel egynél több szervert. (Hacsak nincsenek elcsettintett bugyuta elvárások monstre querykkel.) Ezzel nincs is probléma. A közösségi vagy hasonló oldalak meg eleve annyira egyedi igényekkel bírnak, hogy az előre megszabott keretrendszer valószínűleg inkább korlátoz mint segít, mivel kénytelen vagy mondjuk modelleket úgy implementálni, ahogy elő van írva, pedig sokkal egyszerűbb modellek is megtennék. (Ha végig gondolod: a legnagyobb és legjobb közösségi oldalak nagyon egyszerű querykkel megoldhatóak.)
Üzleti szemszögből: ha egy oldal eljut odáig, hogy MySQL, Memcache, stb skálázással már nem megoldható a terhelés akkor remélhetőleg a bevételek is kezdenek egy olyan szintet megütni, hogy az alkalmazás újragondolható. Amennyiben nem, el kell gondolkozni azon, hogy a projekt tud-e hosszú távon nyereséges lenni ha nincs anyagi forrás embereket megfizetni a refaktoráláshoz. Off: vicces, hogy ezt az átgondolást pont a (köz)gazdászok, cégvezetők szokták benézni és tovább eröltetni a dolgot.
Követelmény minden, de azon kívül semmi :)
Ami fejlesztői szempontból kiemelendő:
Symfony komoly referenciái közt a Yahoo nem is tudom melyik szolgálatatását szokták említeni, de azt gondolom az akár lehet egy erőtelesen átalakított Symfony is, nem látom mit demonstrál számomra azon kívül, hogy egy nagy cég merte alkalmazni. (Ami egyébként nem túl mérvadó, de ebbe a témába nem merülök inkább bele...még)
Az egyedi igényekkel kapcsolatban viszont szerintem egy ilyen fejlesztésnek igenis alkalmasnak kell lennie a majdnem minden webes szituáció esetén. Hiszen miben különbözik egy közösségi oldal egy fórumtól? Nem olyan sok dologban. Ha meg annyira általánosságra törekszik minden keretrendszer, nehogy már gondot okozzon nekik, ha éppen nem egy tipikus blogot, vagy hírportált akarok benne megvalósítani. Akkor aztán nem érte meg éveken át csiszolgatni... Ezekre elég lenne egy cms, abban aztán tényleg össze lehet kattintgatni.
Szerintem a tipikus kisvállalati oldalak, illetve egyszerű brandsiteok kialakításához a töredéke bonyolultságú keretrendszer is tökéletes volna és már az is roppant gyors fejlesztést tenne lehetővé. Egy Symfonynak ennek tükrében egyszerűen nem lenne értelme. Akkor már inkább egy library szemléletű dologban lenne érdemes gondolkozni. Azokkal meg manapság sok baj van. A Pear sajnos nagyon visszaesett aktivitásban. Nem mozogtam tűzközelben náluk, de nagyon lassan születnek új verziók a csomagokból, és nagyon lassan portolják a meglévőket PHP5-re. (Nem tudom mekkora szerepe van ebben a Zend Framework megjelenésének) A ZF pedig mostanában inkább a keretrendszerként való használhatóságra és a dojo integrációra gyúrt. Na de nem is kalandozok most el jobban. :)
A kérdés továbbra is az: Ugyan mire jó egy Symfony? Provokatívítva. Mennyire támogatja a dolgokat amikre utaltam? Mit nyújt azon kívül, hogy
A model az külső komponens (Doctrine az esetemben), a levelezője Swift Mailer, más nem nagyon jut eszembe. Mit ad még? A célom tulajdonképpen a keretrendszerek mottója. Az általános dolgokkal minimálisan szeretnék foglalkozni. A konkrét alkalmazást szeretném felépíteni, nem akarok tőrődni a routolással, sablonkezeléssel, formokkal, validációval, események kezelésével, nyelvesítés útvesztőivel, szerszámos ládáról álmodok, amiben mindez (és még ami itt hirtelen nekifutásból nem jutot eszembe) benne van.
Értesz hozzá?
Nem véletlen indultunk a nyelvesítéstől
Munkafolyamat jó dolog, de ez most egy egyedi és első ilyen építkezés, talán éppen most fognak megszületni a praktikus lépések.
Érteni fogok hozzá, ha úgy döntök, hogy Symfonyval oldom meg. Ez a terv. :)
Csókolom
Sokba fog kerülni?
Én használom
Néhány dolog nekem máshogy kellett, de azokat magam átírtam vagy megírtam hozzá a kiegészítéseket.
Sztem nem probléma, hogy néha belenyúlok átírni ezt-azt, hogy optimalizáljam az adott feladatra, kiiktassak felesleges dolgokat. Ettől még ad egy alapot, amire bátran lehet építeni, és bár "bekorlátoz", sok feladat megoldását leveszi a válladról. Vmit, vmiért. Ha nagyon számít a sebesség, akkor már felmerül az a kérdés is, hogy PHP-t akarsz-e használni.
A többi keretrendszert nem próbáltam, lehet, azok is jók neked.
Jaja
Egykaptafára épülő fejlesztésekhez használtad, vagy valamilyen személyre szabott feladatra? Mennyire volt nehéz megtanulnod/megtanulnotok?
Szerintem sok példa van a nagy terheltség melletti php használatra. Vagy így, vagy úgy meg lehet azt oldani. Nem hiszek a nyelvi elemeken múló optimalizációban sem. (Van aki szerint kerülni kell az absztrakt osztályok és interfészek használatát is, mert rontják a teljesítményt.)
Egyedi
Mindig személyre kellett szabni, de ezzel nem volt gond.
Egy alap munkát abban csináltam meg, aztán jöttek a bonyolultabbak... 1 hónap?
Találj ki vmi egyszerűt és csináld meg, kísérletezz. Hozz létre mondjuk egy fórum oldalt, csak úgy. Lesz párszor, hogy elakadsz majd, de ez természetes.
Van symfony levlista, érdemes feliratkozni arra is. Vagy ha más mellett döntesz, annak a levlistájára.
Nézd, sztem ez így kicsit meredek. "Aki jól ért a kalapácshoz, mindenhol szöget lát." A csavart is be tudod verni a falba, mégis jobb, ha ahhoz csavarhúzót használsz. Csak azért, "mert meg lehet vele oldani", az még nem jelenti azt, hogy azzal érdemes megoldani. A programozás egyébként is egzakt "tudomány". Lehet mérni, bizonyítani az elképzelés működőképességét. Éppen ezért, a hitedet tedd félre és mérjél! Merthogy te mit hiszel, azt a valóság figyelmen kívül fogja hagyni ;) Még az is lehet, hogy jól hiszed, meg az is, hogy nem.
Szóval ne a hiteddel gyere, hanem összehasonlító tesztekkel ;)
Félre ne érts, te ismered a munkát, valszeg a PHP bőven elég a feladathoz, én a hozzáállást kritizáltam. Kicsit úgy érzem, hogy a kognitív disszonancia esete forog fent, mivel Te csak a PHP-hoz értesz, így ahelyett, hogy logikus döntést hoznál, inkább érvekkel alátámasztod a saját "döntésedet".
Ha rászánsz időt lehet a te barátod.
Megvan.
Az alkalmazást te tervezed - fejleszted, a symfony csak a kereteket adja (ahogy a zf is), szóval ez leginkább rajtad múlik.
Itt nézz körül. Na meg itt.
A jeleneg támogatott cache megoldások. Ezeket a rendszerben több helyen is használhatod (i18n szövegek, routing beállítások, view cache) Emellett te magad is írhatsz relatív egyszerűen sajátot.
Answers, bookmark, delicious (valóban nem túl mérvadóak ;) ).
Ez kissé zavaros, nem tudom mit hiszel/gondolsz/tudsz a keretrendszerekről. Szvsz újra kéne gondolnod a dolgokat.
Alapvetően keretrendszerről van szó, tehát a fejlesztés kereteit határozza meg. Ezt ne korlátozó tényezőként fogd fel. Többé-kevésbé rád kényszerít dolgokat, amik először furcsák, később nem tudsz elég hálás lenni értük (egységesebb lesz az alkamazásod szerkezete). A formos részt nézd meg nagyon, akár symfony nélkül is használható a cucc. A legszimpatikusabb az eddig látott megoldások közül (HTML_QuickForm, Zend_Form).