Nisam izdrzao da ne napisem poruku, iako ignorisem Advocacy i verujem da cu zazaliti zbog "javljanja"...
Elem, ASP.Net ne koristim, jedini dodir sa ASP-om sam imao u vreme ASP3 (i to nesto jako malo, radilo se o portovanju projekta na PHP tako da sam se zadovoljio citanjem koda...). Shodno tome necu isti komentarisati.
Ovde je koliko vidim pricamo o nekoliko stvari:
1) Sigurnost
2) Spagete od koda kada se dodje do vecih projekata
3) Integracija web-a sa desktop okruzenjem
4) Cena svega toga
5) Popularnost
6) Licni razlozi (Microsoft, OpenSource,...)
Sada redom...
1) Sigurnost
Stojim iza toga da je PHP kao programski jezik (ne mislim sada na sam PHP interpretator koji ima svoje patch relase-ove poput svog drugog softvera, a i u Changelog-u nema nekih mnogo strasnih stvari) poprilicno siguran jezik.
Recimo, od samog pocetka postoji gomila ugradjenih funkcija za filtriranje ulaznih podataka, nema problema sa buffer overflow-om, mnoge ekstenzije u samom jeziku poput MagicQuotes-a sprecavaju one neiskusne da naprave neke ceste greske. Postoji poseban SafeMode rezim rada uz koji je moguce otkloniti gomilu problema koje se pojavljuju u Shared Hosting okruzenju (recimo kradja tudjih sesija, pristup tudjim datotekama) ali uzrok prisustva ovih problema nije u PHP-u vec u konfiguraciji servera. Cak i bez PHP-a lose konfigurisan sistem je nesiguran, o kom god se operativnom sistemu ili web serveru radilo, zar ne?
Sto se tice "gomile foruma u PHP-u koje klinci razvaljuju po mrezi", pa da li zbog gresaka u programima krivimo jezik? Dakle zbog toga sto Linux kernel ima sigurnosne greske C ne valja, ili zato sto neki program ima sigurnosnu rupu kazemo da C++ ne valja? Da li ste 100% sigurni da nije moguce napraviti rupu losim programiranjem u ASP.net-u? Toliko je dobar jezik da vam ne da da pogresite? Pih...
Koji su razlozi zbog kojih tvrdite da sigurnost i PHP ne idu jedno sa drugim?
http://phpsec.org/projects/guide/
2) Spagete od koda kada se dodje do vecih projekata
Ovde se radi o Coding Style-u zar ne? Zasto u PHP-u (mislim na verziju 5) nije moguce koristiti Design Pattern-e, slojevitu organizaciju koda, i sve stvari koje su ovde navedene?
Slazem se da PHP pomalo naginje ka brzom i jednostavnom resavanju problema. Gomila ugradjenih funkcija, interpretatorsko izvrsavanje, primeri u Manual-u navode na copy-paste stil programiranja. Glupo je tvrditi da je to jedini moguci stil programiranja u PHP-u. PHP5 ima dobru podrsku za objektno programiranje: nasledjivanje, abstraktne klase, interfejse,... Mnoge grupe ugradjenih funkcija imaju pored proceduralne i objektnu notaciju (MySQLi, Tidy, SimpleXML,...). Ne vidim razloge zasto u PHP-u nije moguce programirati sa dobrim coding style-om? Cim malo dublje pogledate literaturu (dublje od Manual-a) mozete pogledati kako ljudi programiraju u PHP-u. Sada sto postoje aplikacije kao sto su phpBB ili phpMyAdmin, to je krivica njihovih autora, a ne jezika, zar ne? Ili gresim?
http://www.phppatterns.com/
http://www.amazon.com/exec/obi...6/103-8631821-2614247?v=glance
3) Integracija web-a sa desktop okruzenjem
Kazete u ASP.net-u moguce je koristiti isti kod u drugim .Net enabled jezicima i iskoristiti ga za klasicne aplikacije. Sa PHP-om se isto moze postici na dva nacina: koriscenjem Web servisa i pomocu PHP-GTK ili PHP CLI-a.
Prvi ima manu sto je potrebno dodati recimo XML-RPC interfejs vasoj aplikaciji (ili SOAP, ili nesto trece) sto nije toliko tesko uz dobru PEAR-ovu XML-RPC biblioteku. Server se instancira u nekoliko linija koda, dodaju se description-i metoda (mogu se i automatski izvuci iz samog source-a) i uz mali wrapper koji poziva odgovarajuci objekat (i pre toga vrsi neku autentifikaciju/autorizaciju) imate kompletan web servis. Takodje, druga mana je da morate poznavati i neki drugi jezik u kome biste napravili klijent za taj web servis, dizajnirali GUI,... Ovo nije optimalno, ali koristi isti kod - dakle do PHP koda ne morate pisati ponovo. A i u ASP.net-u se mora u C# napraviti interfejs (valjda preko Windows Forms-a ili neceg drugog, ne znam sta se tacno koristi danas), mora se napisati onaj desktop deo klijenta, i u to ubaciti pozive ka ASP.net objektima. Sa PHP-om mozda jeste malo vise posla ali dobijate funkcionalan web servis gde nije potrebno azurirati klijente kada se promeni neka implementacija metode unutar web servisa...
Drugi pristup (PHP-GTK ili PHPCLI) potpuno dozvoljava include-ovanje istog koda koji radi i u web okruzenju uz dodavanje interfejsa. Medjutim problem je sto je razvoj PHP-GTK jako zaostao (prelazak na GTK2 iako mnogo puta najvaljivan nikako da se napravi, nema programera koji su zainteresovani za to) dok je situacija sa PHPCLI-jem malo bolja ali nije sjajna za razvoj daemon-a (iako je i to radjeno).
Da rezimiram, ukoliko postoji potreba za integracijom nekog resenja u PHP-u sa desktop okruzenjem postavljanje web servisa i koriscenje njegovih metoda u nezavisnoj desktop aplikaciji funkcionise. Prednost je sto je implementacija svih metoda na jednom mestu i lako je izvrsiti manje korekcije. Mana je sto to ipak nije u dovoljnoj meri integrisano, iako nije potrebno kao sto se ovde provlacilo sve iznova programirati u C-u (daleko od toga...)
Voleo bih videti kolika je kolicina promena koju je potrebno uraditi u nekom vecem ASP.net projektu kako bi se dobila desktop aplikacija. Ipak to sigurno nije samo Rebuild.
4) Cena svega toga
Vec smo se valjda slozili da za vece projekte ovo nije relevantni faktor, vec je TCO ono sto je bitno. E sada ja ne mogu procenjivati TCO nekog PHP vs ASP.net resenja (mislim na produkcionu fazu gotovog resenja, iskljucujem "efikasnost" samog razvojnog procesa) i to necu ni raditi. Verujem da nema neke vece razlike.
5) Popularnost
Moj licni dojam je da je PHP popularniji. To je jedna od posledica samog modela razvoja. Meni barem izgleda da postoji mnogo vise slobodno dostupnih klasa, funkcija, parcica koda,... ali i gotovih resenja. Naravno, uvek je pitanje da li dostupnost gotovog koda znaci dostupnost dobrog koda, ali to valjda sam programer treba da proceni.
http://www.phpclasses.org/
http://pear.php.net/
http://www.horde.org/
http://www.blueshoes.org/en/framework/
http://www.mojavi.org/
...
6) Licni razlozi
I na kraju ostaju takozvani "licni razlozi" koji cesto i nisu toliko licni. Ukoliko u nekoj sredini postoji opredeljenost za Windows tehnologije (koriste se .Net alati, postoji gomila vec napisanog koda, na lokaciji implementacije vec rade sa Microsoft resenjima ukljucujuci SharePoint, MS SQL,...) onda je suludo pricati kako je PHP super jezik. I obrnuto, u nekoj Linux sredini proturati pricu kako je ASP.net i mono super. mod_mono mozda radi, ali podrska za ASP2.0 je neizvesna, mnoge komponente ne rade, aplikaciju je potrebno portovati (tj. sve delove koji se referenciraju na filesystem, windows registry, windows services....) i sve to opet kao i kod razvoja desktop programa nije cist recompile...
Na kraju malo provokacija, ipak je ovo Advocacy...
Po cemu se code-behind razlikuje od Smarty+PHP i ugradjena include funkcija? Ja koliko sam (priznajem malo) pogledao code-behind nije nista drugo nego obican template sistem, zar ne?
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja