Pulsar
26.11.2004, 18:06:30
Dzisiaj miałem średnio miłą sytuację. Otóż postanowiłem zainicjalizować wykorzystanie modelu MVC w nowym projekcie firmy. W tym celu przygotowałem wykład dla dyrekcji, oraz współpracowników i niestety zostałem zbojkotowany.
Niektóre argumenty które padły przeciwko temu rozwiązaniu to:
- zbyt duży rozmiar plików z klasami
- pochłanianie dużej ilości pamięci przy operacjach
- powolność rozwiązania, gdyż większość operacji wykonywana jest na obiektach (padło porównanie do powolności w Java)
- obiekty będą wykorzystywane ale w prostszy sposób, bez zbędnego komplikowania postulatami MVC
Powiem szczerze, że po tej dyskusji, jestem dosyć przygnębiony. Włożyłem w to dużo pracy, która poszła na marne.
Czy możecie mi przytoczyć jakieś mocne argumenty, dlaczego rozwiązanie oparte na MVC będzie lepsze? Co ogólnie o tym myślicie?
Imperior
26.11.2004, 18:22:50
Na mój gust, to MVC, nie daje nic prócz przejżystości i łatwości w rozszerzaniu funkcji, choć to i tak zależy od umiejętności i staranności programisty.
Zawsze można zrobić coś lepiej bez użycia MVC...
Moge się mylić, jeśli tak to wyprowadźcie mnie z błędu.
bregovic
26.11.2004, 18:45:35
Zalety MVC to nażucony pożądek w kodzie. Jeśli wykożystacie np [url=mojavi.org]Mojavi 3[/ur] (jeszcze troszkę beta, ale działa już pod php5!) to będziecie mieli znacznie ułatwioną współpracę - jedyne co będzie porzebne to ogólny plan aplikacji - nad strukturą nie będzie się trzeba zbyt zastanawiać bo większość dobrych frameworków nażuca bardzo dobrą strukturę - i daje mnóstwo różnych featuresów.
DeyV
26.11.2004, 22:47:21
Od dawna pracuję na MVC lub różnych wariacjach tego wzorca. Nie zawsze trzymam się go w 100% , z przekonaniem moge powiedzieć jedno - nie znam lepszego sposobu na pracę z kodem, szczególnie jeśli jest to praca zespołowa.
Czasami ludzie obawiają się tego terminu, mając wrażenie, że niesie on automatycznie znaczną komlikację kodu. Jednak tak nie jest - przecież widokiem może być dowolny system szablonów.
Czym natomiast jest model? |To przecież zwykły zestaw klas, w ktorych zawarte są wszystkie zapytania do bazy, wraz z przejżystym interfejsem.
Wszystko sprowadza sie do tego, że należy napisać ładne akcje, które to wszystko połączą, a dla ułatwienia - mają się automatycznie uruchamiać.
cdn. ...
Krolik
27.11.2004, 18:35:55
Trzeba bylo przedstawic im rachunek kosztow...
Mysle, ze zaoszczedzenie paru tygodni pracy dzieki modelowi MVC (bo bedzie mniej bledow, kod czytelniejszy i wszystko duzo ladniej) spokojnie pozwoliloby na zakup dwuprocesorowego Pentium IV XEON 3.8 GHz z 2 GB RAMu na ktorym chodzilby serwis.

Fakt, ze moze php najszybsze nie jest, ale chyba obiektowosc tak duzo znowu nie spowalnia. Nie rozumiem tych ludzi. Nie wiem skad sie biora te mity, ze to niby obiektowosc i ladny kod sa niewydajne. I te glupie porownania do Javy. Nie, to nie obiektowosc, a co najwyzej niedbala implementacja. Program w C tez mozna napisac tak, ze bedzie zarl wiecej zasobow niz odpowiednik w Javie.
Zwykle im przejrzystsza struktura kodu, tym latwiej sie to pozniej optymalizuje.
Swoje zdanie opieram glownie na jezykach Object Pascal, C, C++ i Java, bo w tych mam duzo wieksze doswiadczenie niz w php. Jesli w php jest inaczej, to mnie oswieccie
Pulsar
27.11.2004, 21:51:32
Czyli jednak moje podejście zastosowania MVC do nowej aplikacji było słuszne?
Moim zdaniem, ponieważ aplikacja będzie duża, poza tym będzie rozwajana na bieżąco przez przynajmniej 5 osób, to opłaca się zastosować MVC. To właśnie próbowałem przekazać.
Niestety bez powodzenia
zezik
28.11.2004, 23:09:13
Ja bym to teraz rozegral tak:
Wymysl jakis problem, rozszerzenie etc. i przedstaw latwosc rozwoju aplikacji pod kontem danego problemu, jak i przedstaw to z poziomu rozwiazania bez wykorzystania modelu. Ja w taki sposob przekonalem sie do wzorcow projektowych, dobre przyklady o rozszerzeniach i poprawkach powalily mnie ;-) No i tym sie trzeba bronic. Prawda jest taka ze ludzie boja sie takich rozwiazan jako ze dosc czesto nie wiedza o co wogole chodzi, a tym bardziej ile problemow implementacyjnych bedzie.
Ale walcz, jestesmy z Toba
NuLL
28.11.2004, 23:58:17
Pulsar: A jakiego MVC sie trzymasz - mowisz stricte o MVC

Jesli chcesz za wszelka cene trzymac sie tego wzorca , to chyba podlacze sie do bojkotu. Pilnowanie sie MVC na wszelkie mozliwe strony jest lekko bezsensowne. Wiele osob nie zauwaza ze MVC opracowano dla JAVY i jak dla mnie gdyby ktos w firmie zaproponowal mi zaisywanie kodu kazdej akcji w osobym pliku wysmial bym go.
Pamietajmy ze aplikacja w php dzial max. kilkanascie sekund w przeciwienstwie do aplikacji Javovwych ktore dzialaja jak normalne pisane w C. Ja korzystam ze wzroca MVC - ale z jego glownych zarysow. U mnie np jest kontroler strony, ale akcje odpowiedzilane za jakis pojedynczy modul sa zapisane w jednym pliku.
bela
29.11.2004, 00:29:41
Cytat(null)
MVC opracowano dla JAVY
Cytat(hawk)
MVC nie jest pomysłem nowym. Wymyślony został w laboratoriach PARC (Palo Alto Research Centre) firmy Xerox (tych samych, którym zawdzięczamy m. in. myszki i systemy okienkowe) już w latach siedemdziesiątych. Wtedy oczywiście nikt nawet nie myślał o wykorzystaniu wzorca do aplikacji internetowych. MVC został wykorzystany do zaprojektowania interfejsu użytkownika w języku Smalltalk, stworzonym zresztą również przez PARC. To, co nas jednak interesuje, to zastosowanie MVC w aplikacjach internetowych. Tego kroku dokonał Sun na potrzeby Javy.
hawk
29.11.2004, 09:20:59
@Pulsar: opinie o zżeraniu pamięci, zbyt dużych plikach itd biorą się raczej z totalnej niewiedzy i niechęci do zmiany przyzwyczajeń.
Owszem, można pokazać, że system napisany na chama, bez obiektów, będzie szybszy niż to samo w MVC. Ale w takim razie dlaczego nie napisać wszystkiego jako CGI w C? Też się da i będzie znacznie szybsze. Tylko że projekt się nie uda

.
A jeżeli już zgodzimy się na obiektowość i porządek w kodzie, to MVC wcale nie musi być wolny. Wszystko zależy od tego, co chcemy tam mieć. Kontroler nie musi wprowadzać żadnego narzutu - wystarczy że URLe będą miały postać index.php?action=foo. I tak, i tak jakaś namiastka kontrolera musiałaby być. Wywalenie SQL z plików z akcjami do modelu to w zasadzie bardziej wymóg zdrowego rozsądku niż MVC. Lepiej mieć coś w jednym miejscu, niż rozsiane po dziesięciu...
Ciekawe, czy któryś z oponentów może zaproponować bardziej wydajne, a jednocześnie sensowne rozwiązanie? Są frameworki wyraźnie szybsze od tego co może zaoferować MVC? No chyba że alternatywa polega na robieniu wszystkiego byle jak - wtedy nic nie da się poradzić

.
@bela_666:
Krolik
29.11.2004, 14:18:50
Nie wiem po co tyle gadania o tej wydajnosci. Jak chca miec super szybko to niech sobie napisza w czyms "natywnie kompilowanym" czyli C++ albo C. Tylko ciekawe ile czasu beda to pisac, bo bibliotek dobrych do tego nie ma... (na razie).
Jest kilka takich mitow dotyczacych wydajnosci glownie rozpowszechnianych przez ludzi, ktorzy nie znaja dobrze obu technologii ktore porownuja: "C++ jest wolniejsze niz C", "Garbage collectory sa wolniejsze niz malloc/free", "Java jest szybsza niz C" no i teraz jeszcze "MVC jest wolne". Kazdy z tych mitow da sie latwiej lub trudniej obalic, choc w kazdym jest jakies ziarnko prawdy.
Moim zdaniem ludzie sie po prostu boja uczyc nowych rzeczy. Wydajnosc jest chyba tylko pretekstem, zeby sie nie uczyc. To mi troche przypomina tez takie myslenie niektorych programistow C - "Nasi dziadkowie i ojcowie uzywali ansi C i funkcji malloc, to i ten system baz danych tez napiszemy w C...". Jak sie ktos przyzwyczail, to nie ma na niego sily. A w programowaniu bardzo latwo o nawyki i chodzenie "na skroty". Napisanie skryptu byle jak to wlasnie "chodzenie na skroty". Bedzie dzialac, ale jak zajdzie koniecznosc zmodyfikowania czegos po 2 miesiacach, to ja juz wspolczuje tym, co beda ten kod czytac.
squid
8.12.2004, 15:19:05
Cytat(hawk @ 2004-11-29 10:20:59)
Ale w takim razie dlaczego nie napisać wszystkiego jako CGI w C? Też się da i będzie znacznie szybsze.
wedlug testow z ksiazki "php zaawansowane programowanie" (
http://helion.pl/ksiazki/zprphp.htm ) niekoniecznie, php potrafi przewyzszyc inne rozwiazania jak CGI/c, CGI/PERL, mod_perl, mod_python
a mógłbyś powiedzieć coś więcej o tych testach, bo nie każdy ma tą książke
i podaj numer strony to zobacze sobie w empiku

Cytat(Krolik)
Jest kilka takich mitow dotyczacych wydajnosci glownie rozpowszechnianych przez ludzi, ktorzy nie znaja dobrze obu technologii ktore porownuja: "C++ jest wolniejsze niz C"
gdzie tak piszą ?
squid
8.12.2004, 20:46:21
nie mam tej ksiazki na wlasnosc, mam do nieje dostep na wydzialowej czytelni, postaram sie do piatku umiescic odpowiedni fragmet

badzcie cierpliwi
P.S.
w tej ksiazce jest caly rozdzail dotyczacy wydajnosci a te testy sa zaraz na jego poczatku, nietrudno wiec znalezc
Krolik
9.12.2004, 12:06:09
Nie pamietam gdzie dokladnie tak pisza, ze C++ jest wolniejsze niz C, ale co jakis czas spotykam sie ze stwierdzeniami: "Napiszmy to w C, to musi byc super szybkie". Jak pytam dlaczego nie w C++, to dostaje odpowiedz, ze "Cala ta obiektowosc C++ wprowadza strasznie duze narzuty" i tu jako argument pada przyklad jakiejs duzej i wolnej aplikacji KDE napisanej w C++. Zreszta niewazne, to zagadnienie na odrebny temat i niekoniecznie na to forum...
Co do CGI w C kontra php - no pewnie, ze bardzo latwo napisac program, ktory bedzie ponad 10 razy szybszy w php niz CGI. Daleko nietrzeba szukac: wystarcz zwykle "Hello world." Tyle, ze taki benchmark jest bez sensu. A im wieksza aplikacja, tym CGI bedzie sie zblizac wydajnoscia do php. W ktoryms momencie moze byc nawet szybsze. Zwlaszcza jesli kodu jest malo, ale duzo operacji do wykonania (np. jakies petle, jakies skomplikowane obliczenia). Tak czy inaczej CGI nie zalicza sie do zbytnio wydajnych technologii, bo kazde wywolanie to start nowego procesu.
Natomiast nic nie pobije szybkosci Fast-CGI pisanego w C. Tak na oko moze byc z jakies kilkanascie-kilkadziesiat razy szybsze niz php z akceleratorem. Ciekawe tylko, czy w tej ksiazce zrobili taki benchmark...
squid
9.12.2004, 16:17:19
Zaczerpnelem z elektronicznej wersji tej ksiazki
Niestety nie mozna uzywac html'a na tym fotum wiec musi wygladac to tak:
Cytat
The tests were done on:
CGI Perl scripts
The traditional way to code web sites and applications just one or two years ago
FastCGI Perl scripts
A mechanism to improve the performance problems of CGI scripts
Python CGI scripts
In this case we used Python to code CGI scripts
mod_python Python scripts
An Apache module to let Apache run Python code without calling the Python interpreter
C CGI scripts
Compiled C scripts running as CGI programs
mod_perl Perl scripts
An Apache module to let Apache run Perl scripts without having to execute the Perl interpreter
php
To compare the other languages to php, the same test were run on php
After several benchmarks, including different script types and server loads, it was found that mod_perl, FastCGi, and php were the fastest options with very similar results. Therefore, if a php site or script is facing a performance problem then the solution is to work with the code and not change the language.
The Benchmarks
Test 1 – 1000 executions of a very short script:
Language
Time (seconds)
C
20.6
Perl
23.8
Python
45.2
php
16.0
mod_python
30.0
mod_perl
16.4
FastCGI
16.4
Test 2 – 1000 executions of a long script, more than 1000 lines of code:
Language
Time (seconds)
C
258
Perl
963
Python
978
php
304
mod_python
347
mod_perl
476
FastCGI
280
szkoda, że nie ma fastcgi c w tym porownaniu
squid
9.12.2004, 21:40:12
ano nie ma aczkolwiek przed tym postem nie slyszalem nic o FastCGI w C widac malo przyjazne. Bardziej brakuje mi porownania php jako CGI i jako modol serwera Mozna sie spodziwac rezultatow nie wiekszych niz 200 w drugim tescie. Swoja droga nie mozna czegos takiego jak FastCGI zastosowac w php?
Cytat(squid @ 2004-12-09 22:40:12)
ano nie ma aczkolwiek przed tym postem nie slyszalem nic o FastCGI w C widac malo przyjazne. Bardziej brakuje mi podownania php jako CGI i jako modol serwera Mozna sie spodziwac rezultatow nie wiekszych niz 200 w drugim tescie. Swoja droga nie mozna czegos takiego jak FastCGI zastosowac w php?
chyba coś ci się myli
gdy jest używane cgi to przy każdym wywołaniu strony tworzony jest nowy proces, w przypadku fastcgi nie są tworzene 2 procesy dla jednej strony tylko używany jest jeden
DaNTe
17.12.2004, 10:34:17
MVC i tylko MVC w takiej czy innej formie. Oddzielenie logiki od prezentacji to podstawa nawet malych projektow grupowych, o duzych i mających się rozwijac - to już nawet nie wspominam!
Co do wydajności - zamiast pakować pieniądze w dodatkowe P4 można zastanowić się nad zainwestowaniem w Zend Optymizera czy po prostu instalacją
http://www.phpaccelerator.co.uk/. Kod kompilowany jest wtedy raz i utrzymywany w pamięci, co więcej - jedna instancja dla wszystkich klientów.
A co do przekonywania: zawsze należy się tak przygotować aby na każdą wade mieć riposte w postaci 2 zalet
squid
17.12.2004, 13:35:13
Cytat(bela_666 @ 2004-12-09 22:47:55)
Cytat(squid @ 2004-12-09 22:40:12)
ano nie ma aczkolwiek przed tym postem nie slyszalem nic o FastCGI w C widac malo przyjazne. Bardziej brakuje mi podownania php jako CGI i jako modol serwera Mozna sie spodziwac rezultatow nie wiekszych niz 200 w drugim tescie. Swoja droga nie mozna czegos takiego jak FastCGI zastosowac w php?
chyba coś ci się myli
gdy jest używane cgi to przy każdym wywołaniu strony tworzony jest nowy proces, w przypadku fastcgi nie są tworzene 2 procesy dla jednej strony tylko używany jest jeden
wiem na czym polega fastCGI ale nie rozumiem jak sie to ma do mojej wypowiedzi
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.