Hmm, no to zaczynam reaktywację joggera po raz 3;-) Ciekawe czy tym razem coś więcej wypali… Tyle tytułem wstępu do wstępu, reakatywację czas zacząć…

Ostatnio dostałem w ręce 2 płytki Microsoftu – .NET Starter Kit 2006/2007 oraz IT Academic Day – i przyznam szczerze że zamieszczone na nich prezentacje dotyczące .NET Framework oraz pochodnych (m.in.

ASP.NET) bardzo mnie zaciekawiły. Wszystko pięknie, elegancko wytłumaczone, webcasty, screencasty, prezentacje multimedialne – wszystko cacy. I tak mnie to jakoś poruszyło, że postanowiłem przeprowadzić małe porównanie między nadzwyczaj popularnym w dzisiejszych czasach PHP oraz próbującym zdobyć rynek ASP.NET Microsoftu. I z tego porównania (jeśli można to tak nazwać) wyszło coś takiego…

 

  1. Serwery WWW

Tak samo jak różnią się oba języki tak też różnią się platformy na których działają. PHP, można powiedzieć – po poprawnej instalacji zadziała zawsze i wszędzie (Apache, IIS), czego niestety (albo i stety) nie można powiedzieć o jego konkurencie – ASP.NET. Z uwagi na to, że korzysta on z .NET Frameworka działa tylko w środowisku Windows, i to na serwerze Microsoftu – IIS. Tutaj pewnie każdy znający się na sprawie zapyta co z Apachowym mod_mono? Jakby na ten projekt nie patrzeć – inicjatywa jest genialna dla rozpowszechniania ASP.NET na platformy linuksowe, ale trzeba przyznać że do konkurowania z IIS dużo jej jeszcze brakuje. Jest jeszcze oczywiście Perlowski Apache::ASP, ale on dodaje funkcjonalność dokumentów ASP (nie ASP.NET) pisanych w Perlu. Istnieje inny moduł do Apache – mod_aspdotnet (niestety nierozwijany od jakiegoś czasu), który doskonale sprawdza się przy uruchamianiu aplikacji pisanych pod kontrolą .NET Framework 1.0 w systemach Windows (z .NET Framework 2.0 ma już częste problemy). Jeszcze innym rozwiązaniem jest Chilisoft firmy SUN (dokładniej Sun Java System Active Server Pages), któremu się niestety bliżej nie przyglądałem. No i w końcu chyba ostatnie rozwiązanie umożliwiające bezproblemowe uruchomienie aplikacji ASP.NET (nawet w wersji Framework 2.0) na Apache to serwer Cassini (Apache może ładnie przekazywać chwilowo kontrole Cassini – Proxy), lecz nie sprawdzi się to dla sympatyków ASP.NET AJAX – przeglądarka będzie przeładowywać stronę za każdym razem.

 

  1. Bezpieczeństwo

Sprawa bezpieczeństwa zdecydowanie dodaje punktów ASP.NET. Rozpoczynając od podszewki, czyli od webserwera – IIS wygrywa. Wystarczy spojrzeć na porównanie ilości znalezionych bugów w obu serwerach (IIS oraz Apache) – po wprowadzaniu IIS 6.0 w 2004 roku w pierwszym wykryto 11 błędów, natomiast w drugim 30. To samo się tyczy PHP oraz ASP.NET – mniej łat zostało wypuszczonych właśnie dla produktu Microsoftowego, natomiast patrząc na aplikacje internetowe – 43% wszystkich luk znalezionych w sieci w 2006 roku należało do PHP. Zresztą, błędy PHP są na tyle popularne, iż każdy kto potrafi korzystać z jedynej słusznej wyszukiwarki i choć trochę zna tenże język będzie potrafił przynajmniej część z nich wykorzystać – pozwolę sobie w tym miejscu przytoczyć linka do takiego małego zestawienia: http://albi.xve.pl/2007/02/21/najpopularniejsze-ataki-w-php/ – mam nadzieję, że autor nie będzie zły 😉 Natomiast jeżeli chodzi o błędy w aplikacjach .NET to już trudniej cokolwiek znaleźć, oraz – co ważniejsze – nie są tak bardzo spopularyzowane (w sensie nienajlepszych skryptów, koderów, itp.).

 

  1. Kod

Przechodzimy chyba już do sedna sprawy, najbardziej istotnej rzeczy dla większej rzeszy webmasterów – kod. Tutaj również jestem skłonny przyznać wszystkie punkty dla produktu stajni MS. Niektórzy mogą uznać to za wadę (osobiście nie mam zdania) – w ASP.NET programista został obdarowany kontrolkami które zdecydowanie zmniejszają czas poświęcony na pisanie kodu. Z tego też względu prawdopodobieństwo wystąpienia luki w aplikacji zmniejsza się ogromnie. Dodatkowo dostajemy możliwość pisania kodu w VB lub C#, więc nie jesteśmy ograniczeni do jednego stylu, który zwykł się zmieniać wraz z kolejnymi wersjami PHP. ASP.NET jest do granic możliwości obiektowe oraz posiada jednoznacznie sformułowane funkcje (PHP tutaj dostaje po tyłku jak nikt inny – funkcje typu str_replace, później strlen nie dają dobrego obrazu językowi który – pokuszę się o stwierdzenie – zdominował sieć). Z drugiej strony istnieje sporo dodatkowych klas rozszerzających możliwości PHP, jednak łatwość tworzenia takiego skryptu jest – jak już wspomniałem wcześniej – zdradliwa. Dodatkowo programista ASP.NET posiada możliwość projektowania wizualnego, co w przypadku PHP pozostaje (na razie) tylko jako marzenie.

 

  1. Popularność

Wszyscy wiemy, że popularność języka PHP jest ogromna. Ale, jeśliby się wgłębić w rzeczywistą znajomość pisania aplikacji w tym języku, dużej liczbie osób tylko wydaje się, że go zna, że potrafi w nim coś napisać, a już na pewno coś co z bezpieczeństwem nie ma nic wspólnego. Podręczniki oraz opisy funkcji PHP są łatwo dostępne, ale tylko tyle – istnieje niewiele osób które potrafią pomóc jeśli piszesz coś naprawdę zaawansowanego i napotkałeś nie lada problem. Nie mówię, że w ASP.NET tak nie jest – ale istnieje wiele serwisów internetowych udostępniających mnóstwo informacji, kodów, przykładów, opisów, a nawet i materiałów do nauczania (webcasty, prezentacje, e-learning), natomiast gdzie dla PHP coś takiego ma miejsce? Hmm, chyba się zagalopowałem… ale chciałem spróbować otworzyć oczy ludziom którzy uważają że wszystko co wychodzi ze znakiem MS jest be 😉

 

  1. Hosting

Jest to jedna z niewielu rzeczy, przemawiająca za PHP – jest tylko garstka serwisów internetowych (w Polsce bodajże http://hostedwindows.pl/ oraz http://ms.windows-hosting.pl), które oferują bezpłatny hosting ASP.NET, czego o niekomercyjnym „odpowiedniku” powiedzieć nie można – praktycznie każde konto www posiada obsługę tegoż języka.

 

  1. Podsumowanie

Próbując podsumować powyższe wypociny dochodzę do wniosku, że nie da się jednoznacznie stwierdzić który język jest lepszy, który jest przyszłościowy, w który webmasterzy powinni zainwestować, który za parę lat zrewolucjonizuje sieć, a który będzie go gonił. Są wady i zalety – jedną z większych wad PHP w porównaniu do ASP.NET jest jego bezpieczeństwo oraz styl tworzenia samych aplikacji (to ostatnie może źle ująłem). Jeżeli jednak spojrzeć w drugą stronę, czyli ASP.NET w porównaniu do PHP – znikoma popularność, darmowy webhosting czy w pewnym sensie samo pisanie kodu – czyli to, co jest niemal podstawą w rozwoju programistycznym. Osobiście poznaję PHP od paru dobrych lat, ale nie ukrywam również że jestem zafascynowany całym .NET 🙂

 

No, to dziękuję za uwagę, dobranoc 😉