PDA

Pogčedajte punu verziju : To framework or not to framework


dinke
30. 06. 2006., 23:49
Sad pricam sa kolegom oko ovih novih MVC igrackica (cake, symphony, ...) itd. Licno nisam nikada koristio, a i nemam nesto mnogo vremena da se igram sa njima, ali rekao bih da su ovde neki ljudi to koristili.

Voleo bih da mi neko od vas kaze nesto o upotrebljivosti istih u real life projektima. Znaci ne ono "igrao sam se, i napravio 5 strana za malog pericu" vec upotrebljivost istih kod vecih sajtova, koji imaju high load, potrebe kreiranja multi permissions sistema (admin, superadmin, user, ...) i sl.

Inace, kad smo vec kod ove teme, istrazivao sam i nasao na netu interesantan MVC tutorial (http://www.onlamp.com/pub/a/php/2005/09/15/mvc_intro.html) ali nekako nisam uspeo da razumem primere do kraja (rekao bih da je autor ili suvise zakomplikovao stvari, ili sam ja preplitko usao u to). Takodje, nasao sam dosta argumenata protiv MVC-a u web aplikacijama (kao na primer HF ovde (http://www.sitepoint.com/blogs/2005/12/22/mvc-and-web-apps-oil-and-water/)).

Ajd da cujem vase misljenje :)

ppavlovic
01. 07. 2006., 01:55
Uh... Frameworks...
Negde na jesen krenem da razvijam jedan CMS i resen da ga napravim modularno krenem u izucavanje MVC patterna i drugih design patterna. Tu se usput nametne prica o framework-ovima. I krenem ja da ih razgledam, jedan za drugim, procitam taj clanak sa O'reilly sajta, kontaktiram lika, on unapred objavi svoje resenje frejmvorka na svom blogu... Gledam, gledam i ... Od svega toga ne izaberem nista. Krenem nesto svoje da budzim.

Razmatrao sam Symphony (bas sam veceras ponovo pogledao video tutorijale za njega), CakePHP (nije nesto bio aktivan tada), Phrame (MVC2, cudno osmisljen, ali upotrebljiv), WACT i jos neke... Tad su najavili razvoj Zend Framework od kojeg se mnogo ocekuje... Sad kad je izasao, daleko od toga da je potpun. Ima dosta problema u razvoju jer ga neki kljucni ljudi napustaju, ActiveRecord je neupotrebljiv, itd, itd...

I naravno, tu je RoR, nazalost, samo za Ruby. Iz tutorijala koje sam pogledao vidi se da su ljudi dosli do tog frejmvorka od muke, cesto ponavljanje dosadnih zadataka i sl.

Poenta frejmvorka je da bude kompletan, da ti omoguci instant pocetak, pisanje koda bez previse ucenja, da je dovoljno prosiriv i naravno da ima dobre performanse. Symphony je jako dobar, ali ima milion stvari koje me nerviraju (ucenje Yaml, Prado drajver[sta je vec?!] za pristup bazama, stupid sistem za templejte, mnogo custom APIja i sl.). Imam osecaj da sam previse star da sve to ucim.
Moj izbor bi bio CakePHP (zato sto Zend nije potpun). Od frejmvorka ocekujem da bude dovoljno pametan da ti da ono glupo "// Insert Code Below" i da ti instant krenes da kucas kod bez da razmisljas gde se sta desava. Bar je tako M$ davno ucinio sa Visual C++. Koprcas se par dana sa pitanjima "Gde je ovo, sta radi, kako, zasto ovo ovde..." i na kraju te jednostavno bude briga jer se koncentrises na kod, logiku, a ne na razna tvikovanja i sl.
CakePHP zato sto mi dozvoljava da koristim AdoDB sa kojim radim poslednjih 5 godina, Smarty za koga sam vezan od pre 2 godine, ima odlican sistem dozvola tako da ne moram da integrisem PHPGACL, ActiveRecord (mmm...) al' kazu jako spor kod cross-table upita i odlican Nested Set model za predstavljanje hijerarhijskih podataka u tabeli.

So, za moj sledeci projekat bice CakePHP. Mmm... donuts...

Ilija Studen
01. 07. 2006., 02:21
Ni jedan FW nije silver bullet, ni jedan framework ne rešava sve probleme i ne bi trebalo to da radi. Dobar start? To je loš razlog za korišćenje frameworka. Samo ime mu govori da treba da ti pruži okvir i da automatizuje zadatke koji mogu da se automatizuju. Da rutinski zadaci budu rutinsku, da se ne uvrtiš u ponavlaljanje i copy paste način rada (neki copy - pasta smatraju reusable kodom ;) ) i da te na neki način navede da koristiš dobre programerske prakse. To je manje više to.

Sajtovi koji imaju veliki load a koriste frameworke? Pogledaj proizvode 37s, ALA, projekte zasnovane na Djangu. Jako veliki broj korisnika i hitova. Što se PHP tiče ne znam dobar primer sajta koji koristi framework. Kod PHPa se tek razvija grupa korisnika koja koriste složenija OO rešenja (pravi OO je došao tek sa PHP5, sve pre toga je hakeraj a ne OO razvoj). A PHP5 još nije ni dominantan... Čekaćemo mi još na dobar PHP5 framework.

Pogledao sam par frameworka i po mom mišljenju PHP trenutno nema šta mnogo da ponudi. Možda Cake, ali to je za manje stvari i previše je "the PHP way". Django i Rails su za sada bez takmaca što se razvoja web aplikacija tiče.

Btw, MVC je pattern koji možeš okvirno koristiti. Poenta je razdvajanje biznis logike, načina obrade korisničkih zahteva i prezentacije. Da li će to biti po samom patternu ili ne stvar je ukusa. Bitno je da se postigne osnovni cilj: jasno razdvajanje navedenih stvari. Većina već koristi nešto slično jer je to prilično prirodan način razdvajanja osnovnih elemenata aplikacije.

Petar Marić
01. 07. 2006., 02:39
Ne znam da li možemo spominjati Django u ovoj diskusiji jer je on:
a) Python powered framework a ne PHP
b) MTV (http://www.djangoproject.com/documentation/faq/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names) a ne MVC model ;)

ivanhoe
01. 07. 2006., 03:20
ja imam dva velika problema sa upotrebom frameworka:

1) da odvojim dovoljno vremena (i zivaca) da naucim sta je gde i cemu sluzi, koji API je za sta i tako to..

2) da prilagodim svoj nacin rada i razmisljanja onom koji autori smatraju "pravilnim". Od railsa na ovamo se potencira pristup sa minimumom konfiguracije, gde je komplet postavka hardcodovana u srz FW, i od fajlova pa do imenovanja tabela moras da se toga pridrzavas... shvatam naravno da je to nacin da se stvori konzistentan kod, ali mene to u startu odbija (jer mi naprosto njihove konvencije nisu najlogicnije i samim tim mi je napor da ih prirodno primenjujem u radu..)

I tako, obicno krenem da se igram sa novim FW-om i na pola se smorim sa onim cuvenim "ma ja bih ovo bolje/brze/drugacije uradio..". Verovatno je slicno kao kad ucis novi jezik, stalno mi se neke stvari cine nelogicnim i pogresnim, a mozda sam naprosto matori konzervativac :D

zira
01. 07. 2006., 09:05
@ivanhoe: Ja za sada koristim svoje programsko okruzenje koje mi omogucava rad u sopstvenom stilu i brz razvoj (i mnogo koda koji mogu ponovo koristiti), ali ukoliko neko od PHP okruzenja postane toliko dobro i primjenljivo, koristicu ga. Za sada ne...
A i uvijek bi dolazio u iskusenje da nesto mijenjam u samom kodu okruzenja :)

@Ilija Studen: slazem se za MVC.

toxonics
01. 07. 2006., 10:18
Da li je neko mozda video ovo:

http://www.codeigniter.com/

nije komplikovan, ne izmislja novi "pravilan" nacin rada...

Bojan Zivanovic
01. 07. 2006., 14:38
Deluje solidno, mada mi je nesto cudna ta njegova interakcija izmedju Controllera i Modela.Ako sam dobro shvatio, obicno je Controller samo klasa koja pozove Model, a tamo se sve desava.. Ovde je glavni kod u Controlleru a u Modelu samo deo koda za rad s bazom.. U principu tu se moze i zaobici Model i sve staviti u Controller... Ako se ne varam, Zend Framework i sl. ovo rade drugacije.. Al opet, mozda i gresim, ionako svi tumace MVC na svoj nacin..

EDIT: Ok, definitno greshim, al nek ostane post... Pregledao sam ovaj CodeIgniter, izgleda super (manual mu je 10 puta bolji od Cake-ovog), samo mu fali Auth klasa... Ima i neki mini template engine koji nije nizasta (ne kompajlira template nego svaki put radi str_replace), al dobro ,lako se ubaci neki drugi... Poigracu se s ovim

zextra
01. 07. 2006., 22:26
Moje shvatanje MVC podele podrazumeva pre svega mogucnost zamene bilo kog dela sistema odgovarajucim (onim koji ce pravilno odgovarati na unapred odredjene ulazno-izlazne zahteve), kao i jasnu separaciju modela (izvora/skladista podataka), view-a (izlaza/prikaza podataka) i kontrolera (veznog koda). Najcesci primer krsenja MVC patterna je recimo validacija formi, i to u situaciji kada se cela forma generise unutar kontrolera i prosledjuje view-u radi prikaza, pa jos ako se desi da kontroler fetchuje template, da bi napravio lepo dizajniranu formu...

Prema tome, ako nadjes framework koji ce ti omoguciti da brzo sinhronizujes svoj nacin razmisljanja sa autorovim, i koji ce ti omoguciti da brzo realizujes onu vrstu projek(a)ta koje (nameravas da) radis, onda svakako treba da razmislis u tom pravcu. Mislim da je cak najbitnije poklopiti nacin razmisljanja, jer, iz onoga sto sam do sada primetio, vecina frameworka (direktno ili indirektno) tera programera da radi i razmislja na tacno odredjen nacin, inace se ponistava efekat celog frameworka.

...a sve to kazem ja, koji vecito izmisljam nesto svoje :) Vredi razmisliti, svakako.