Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Nowy projekt, ZF1 czy ZF2?
Forum PHP.pl > Forum > PHP > Frameworki
Dejmien_85
Witam Panowie,

Właśnie szykuje mi się projekt, który z założenia ma zostać napisany w Zend Frameworku (góra tak mówi i nie ma innej opcji), do wyboru pozostaje tylko wybranie wersji (aktualnie albo 1.12, albo 2.2). To pytanie chciałbym skierować do osób, które mają już doświadczenie w pisaniu aplikacji, szczególnie w wersji 2.x.

Ja osobiście wolałbym do projektu nowszą wersję, jednak mam pewne "ale"- przeróżne testy (benchmarki) ukazują, że Zend w wersji 2 jest strasznie powolny.

Ten temat jest równocześnie prośbą o poradę - nie wiem, czy postawić na 1.12, który wydajnością przewyższa dwójkę, czy może jednak zaryzykować. Jakie jest wasze zdanie? Czy ZF 2 jest gotowy "do produkcji"? Jak bardzo odstaje od 1.x? Jak wiele tracę skupiając się na wersji 1.x? Jak wiele zyskuję skupiając się na wersji 2.x?
RiE
Cytat
przeróżne testy (benchmarki) ukazują, że Zend w wersji 2 jest strasznie powolny


Mógłbyś podać linki do tych testów? Bo z tego co pamiętam to owszem, były takie testy, ale z pierwszego/drugiego kwartału 2012 roku, kiedy Zend 2 był jeszcze we wczesnej becie. Jeżeli dobrze pamiętam to firma Zend zapowiedziała że optymalizacją zajmie się dopiero w kolejnych odsłonach frameworka po ukończeniu bety i wypuszczeniu stabilnej wersji. Więc testy przeprowadzone na 2.1/2.2 byłyby miarodajne, natomiast na te z 2012 roku patrzyłbym z przymróżeniem oka.

Uważam że testy frameworka nie odzwierciedlają prawdziwej wydajności aplikacji i nie brałbym ich jako jedynego kryterium przy wyborze. Zend 2 nie jest przeznaczony do małych projektów i stawianie na nim strony dla zakładu fryzjerskiego byłoby przerostem formy nad treścią.
W becie, Zend 2 do rozruchu podstawowej aplikacji(Skeleton Application) ładował ponad 160 plików, gdzie Symfony 2 potrzebował ~40 jeżeli dobrze pamiętam. O ilości wywoływanych funkcji nawet nie będę wspominał bo cóż... taka jest specyfika tego frameworku.
W Zend 2 zmieniła się nieco architektura całego frameworka, mamy nowości typu EventManager, ServiceManager itp. przy prostej stronie z całego tego dobrodziejstwa nawet nie skorzystamy, a większość ładowana jest na 'dzień dobry'. Potrzebowałbyś podpiąć zaczep pod routing adresu? Nie ma problemu wystarczy jedna linijka kodu, jak chcesz i kiedy chcesz. Możesz podpiąć się praktycznie w każde miejsce, nie modyfikująć standardowych plików. A jak jest w innych frameworkach? Niektóre nie mają nawet takiej możliwości, inne wymagają dodatkowych bibliotek, a jeszcze inne wymagają modyfikowania plików.

To wszystko przekłada się na szybkość.
Zend framework 2 jest wolniejszy od Zend 1- zgoda, natomiast z tym że jest "strasznie powolny" to bym polemizował.

Dodam jeszcze że za kilka/kilkanaście (Wstępna data miała być podana 6 listopada) miesięcy ma być wydany Zend 3, już trwają prace nad nim. Będzie on zmienioną wersją Zend 2. Architektura ma zostać ta sama, na pewno większą role ma odgrywać Dependency Injection, które obecnie jest uznawane za zbędny luksus, reszta zmian ma dotyczyć bibliotek, chociaż wszystko cały czas jest obgadywane i każdy ma wpływ na rozwój tego frameworka. Nowe wersja ma być prostsza, ulepszona, szybsza, a co będzie to się okaże.
Tutaj link do sugestii Zend 3 http://www.google.com/moderator/#15/e=207d...f=207d6f.6bdbc1

Cytat
Czy ZF 2 jest gotowy "do produkcji"?

Nie jest to żadna Alfa, ani Beta, tylko stabilna wersja, która konkuruje na równi z innymi frameworkami. Zdarzają się bugi, jak wszedzie, ale są one łatane.

Cytat
Jak bardzo odstaje od 1.x?


Architektura jest inna przez co można doznać szoku przesiadając się z pierwszej wersji na drugą. Natomiast biblioteka klas jest mniej więcej ta sama. Niektóre klasy nie różnią się niczym(nawet nazwy metod są identyczne), inne zostały nieco inaczej przepisane.

Cytat
Jak wiele tracę skupiając się na wersji 1.x?

Po wydaniu stabilnej wersji Zend 2 było coś mówione że prace nad wersją 1 mają być zakończone. Tzn. ma nie być rozwijana, nie wiem czy coś się zmieniło bo nie bardzo interesuje się Zend 1, natomiast wiadomo jak to jest z oprogramowaniem, które nie jest rozwijane.

Cytat
Jak wiele zyskuję skupiając się na wersji 2.x?

Przede wszystkim zyskujesz to co oferuje nowsza wersja PHP. Zend 2 wymaga PHP 5.3, przesterzenie nazw są standardem. Nie przypominam sobie tego w Zend 1.
Masz okazje zaryzykować i skorzystać z frameworka, które być może będzie wyznaczało nowe standardy, za którymi inne firmy będą podążać, albo... będziesz miał okazje skorzystać z frameworka, któremu nadadzą nazwę 'Niewypał' i dość szybko zostanie zapomniany.

Dejmien_85
Dzięki kolego za opinię, samemu wolę wchodzić w nowe technologie i rozwiązania, także wolałbym ZF2, jednak martwi mnie jego opinia o powolności (nie wiem jak jest z wersją 2.2), w sieci są testy wcześniejszych wersji, także z tego powodu założyłem ten temat - aby osoba korzystająca z ZF 2.2 powiedziała mi jak to w rzeczywistości jest. Ja niestety z Zenda jestem zielony. sleep.gif
lucio1988
Jeżeli ty i twój zespól nie znacie ani zf ani zf2 - śmiało wybieraj zf2.

zf2 oferuje multum opcji cachowania, począwszy od cachowania plików konfiguracyjnych po cachowanie samych plikow framerowka (świetny moduł EdpSuperluminal). Mozna tez na przykładzie EdpSuperluminal stworzyć własny mechanizm do cachowania plików naszych modułów. W skrócie da się wszystko schachowac tak, iz będziesz miał ładowanych tylko kilka, max kilkanaście plików. Dodatkowo masz classmap_generator - dzięki temu framework wie jakie pliki są i nie przeszukuje wszystkich folderów.

Zresztą jestem zdania, ze jak liczy się przede wszystkim wydajność to nie wybierasz PHP. zf2 jest bdb frameworkiem dającym olbrzymie możliwości i oferujący szybki development. A o to przecież chodzi.

Ale jeżeli szukasz wydajności w PHP to zainstaluj najnowsza wersje (o ile już nie masz). Wersja 5.5 niesie ze sobą bardzo duża poprawę jeżeli chodzi o wydajność. Ewentualnie zainteresuj się frameworkiem Phalcon - na te chwile chyba najbardziej wydajny framework PHP. Poza tym tak jak napisał RiE zf czy zf2 nikt nie używa do prostych stronek. Używając tego frameworka masz dedyka, albo przynajmniej VPS. Zawsze możesz tez zainteresować się HHVM. Z tego co ostatnio się interesowałem ma ponad 90% pokrycia w testach dla zf2.

Modułowość, modułowość i jeszcze raz modułowość - wszystko jest modułem! Chcesz pliki biblioteki js, lub pliki css dla konkretnego modułu? Nie ma problemu! Ponadto daje to olbrzymia skalowalność. Tworzysz cos raz i używasz potem w X projektach. zf strasznie kulał z modułowością.

Zf2 jest dobrze przemyślany - możesz używać MOVE lub MVC, ddd lub tablegateway. Na tym polu daje ogromne możliwości. Pod tym względem zf jest strasznie ograniczony - o ile pamiętam oferował jedynie active record i MVC. Przez co kontrolery często wyglądały jak śmietniki dla kodu.

Jeżeli dobrze znasz wzorce to zf2 opanujesz bardzo szybko co jest dużym plusem. W zf dużo rzeczy "nie dało się zrobić" i trzeba było kombinować jak to ugryźć, aby działało. W zf2 to po prostu działa. Dodatkowo zf3 ma być lepszym zf2 - dla mnie wybór jest oczywisty wink.gif Sam od prawie roku używam zf2 i do zf nie mam zamiaru wracać wink.gif

Jedyna wada jaka na obecna chwile zaobserwowałem w zf2 jest brak wsparcia dla ddd i relacji wiele do wielu. Trzeba podpinać doctrine. A i jest także problem z wersjami. Osobiście staram się utrzymywać zawsze najnowsza wersje, ale już parę razy tak miałem, ze cos działało w wersji np 2.1.x a już w wersji 2.1.xx nie działa. Ale działa znów od wersji 2.1.xxx.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.