PHP (Açık Kaynak) ve ASP.net (Ticari) arasında performans, maliyet, ölçeklendirilebilirlik, destek ve karmaşıklık bakımından sizler için inceleme yaptık.
İnternette PHP’nin mi yoksa ASP.net’in mi daha iyi bir platform olduğu konusunda yüzlerce forum tartışması ve makale bulunmaktadır. Ne yazık ki bunlardaki yorumların çoğu taraflıdır ve tercihler genellikle bir programlama dilini diğerinden üstün göstermek üzerine kuruludur.
Ayrıca, bu makale ve tartışmaların tarihlerine bakacak olursanız, içerdikleri bilgilerin çoğunun miadını doldurmuş olduğunu görürsünüz. Arama motorlarında en üst sıralarda yer alan tartışmaların artık geçerliliğini yitirmiş olması talihsiz bir durumdur. Bu tartışmaları yaparken PHP ve ASP.net platformlarında önemli güncellemeler ve geliştirmeler yapılıp yapılmadığını göz önünde bulundurmamız gerekmektedir.
Her iki programlama dilinin de çok sayıda web uygulamasında ve önemli web sitelerinde kullanıldığını ve bu programlama dillerinin büyük web uygulama projelerinde başarılı olabileceğini unutmamak gerekir.
Makalemizde hangi unsurların performansı etkilediği incelenecek, bunun sonucunda da bir programlama dilini hızı yüzünden diğerine tercih etmenin birçok senaryoda anlamsız olduğu ortaya çıkacaktır.
Ölçeklendirilebilme bakımından hangi unsurların göz önünde bulundurulması gerektiği, doğru programlama yapılırsa her iki dilin de gayet ölçeklendirilebilir olduğu ortaya çıkacak.
Maliyet ve destek bakımından ise, PHP açık kaynaklı olduğu ve genellikle Linux, Apache, MySQL ve PHP gibi açık kaynaklı platformlarda çalıştığı için, PHP’nin ASP.net’e göre maliyet bakımından daha randımanlı olduğunun ve çok daha fazla miktarda kaynak ve destek sunduğunun altını çizmek isteriz.
Harcanan süre bakımından ise, ASP.net ile bir işi bitirmek için PHP’ye göre iki kat daha fazla kod yazmak gerektiği için, PHP’de hızlı kodlama bakımından daha uygundur.
1. Ölçeklendirilebilirlik ve Bakım Kolaylığı
Ölçeklendirilebilirlik ve bakım kolaylığının PHP ve ASP.net platformları arasında yapılacak tercih bakımından hiçbir önemi yoktur. Web uygulaması ölçeklendirilebilirliği ve bakım kolaylığı temelde şunlara bağlıdır:
– Programcının tecrübesi
– En iyi programlama yöntemlerinin kullanılması
– Sağlam bir programlama çerçevesi kullanılması
– Programlama kurallarına ve standartlarına uyulması
2. Performans ve Hız
Bu konu çok tartışmalıdır. Tartışmaların çoğu da hem taraflıdır hem de bir programlama dilini diğerinden üstün göstermek amacını gütmektedir.
Web uygulama hızını ölçmede göz önünde bulundurulması gereken birçok başka unsur da vardır, bu yüzden herhangi bir programlama dilinin hızının günümüzdeki birçok web sitesinin hızı ve performansı üzerinde fark edilir bir etkisi olmaması gerekir.
Ancak, programlama dilinin Google veya Yahoo gibi web sitelerinin her gün yaptığı türden muazzam görevleri yapması gerekiyorsa, bu görevler için çok hızlı bir programlama dilinin seçilmesi bakımından çok fazla şeyin göz önünde bulundurulması gerekir. Google ve Yahoo da bu yüzden çoğu açık kaynak olan ve her biri o dilin en iyi yaptığı işi yapması için seçilen birçok programlama dili kullanır.
Aşağıda hangi görevin diğerinden daha iyi olduğunun açıklandığı bilindik ve nadir görülen senaryolar incelenmektedir.
– Web uygulamalarının en bilindik görevlerinden biri veri tabanına ulaşıp sorgulama yapmak ve sonuçları önce web sunucusuna, sonra da tarayıcıya aktarmaktır. Bu yaygın senaryoda da programlama dilinin yaptığı tek şey veri tabanı sunucusu ve web sunucusu arasında iletişim sağlamak ve arayüz oluşturmaktır. Bu senaryoda programlama dili hızının süreç üzerinde neredeyse hiç etkisi yoktur. Sürecin hızı veri tabanı sunucusuna, web sunucusuna, istemcinin web tarayıcısına, bilgisayarına ve bant genişliğine bağlıdır.
Ana ve ortak veri tabanı sunucularında ise MySQL, PostgreSQL, MSSQL ve Oracle hız ve performans için birbiriyle yarışmaktadır. Veri tabanı sunucularının her yeni sürümünde sürekli yeni özellikler ve daha iyi performans olduğunu görürüz. Dolayısıyla eğer veri tabanı programcıları SQL sorgularını verimli ve pratik bir şekilde kullanırsa ve gerektiğinde önbellekleme gibi gelişmiş özellikleri kullanırsa yukarıdaki tüm veri tabanı sunucularının oldukça iyi bir performans sergileyeceği rahatlıkla söylenebilir.
MySQL Google, Facebook, YouTube, Yahoo ve son dönemde FIFA Dünya Kupası tarafından kullanılmaktadır. Dolayısıyla MySQL veri tabanı sunucusunun yeterliğini sorgulamak yersizdir.
Son dönemdeki online istatistiklere bakıldığında, PHP ve MySQL arasındaki iletişimin ve arayüzlemenin ASP.net ve MSSQL’den daha hızlı olduğu görülmektedir ama bu fark pek de fark edilir seviyede değildir.
– Web uygulamalarının diğer bilindik görevlerinden biri dosya sistemine ulaşmak, bir imaj bulmak ve o imajı web sunucusuna göndermektir. Bu senaryoda da programlama dilinin pek önemi yoktur. Programlama diliyle iletişim kurma işinin yükünü büyük ölçüde işletim sistemi ve dosya sistemi üstlenir.
Son dönemdeki online istatistiklere bakıldığında Linux işletim sisteminin ve ext4 (dosya sisteminin) Windows ve NTFS’ten (dosya sistemi) daha iyi performans gösterdiği görülmektedir.
– Linux/Unix sunucularının çoğu ekstra paketler veya GUI arayüzleri olmadan sorunsuz bir şekilde çalışır, bu yüzden işletim sistemi çok daha az CPU ve RAM kullanır. Böylece veri tabanına ve web sunucusuna çok daha fazla yer kalmış olur.
Windows sunucularının çoğuysa hantal bir şekilde işler ve çok daha fazla CPU ve RAM kullanan birçok gereksiz paketle çalışır.
Kısacası, Linux, Apache, MySQL ve PHP gibi platformlar ASP.net platformuna kıyasla daha avantajlıdır çünkü daha fazla hazır kaynağa sahiptirler.
– ASP.net genellikle C# ile yazılır. C# da PHP’den daha hızlı bir programlama dilidir. (Bu durum programlama dillerinin daha hızlı hale gelecekleri güncellemelerle değişebilir.) Bu yüzden eğer programlama dilinin bir hesaplama için 2.000.000 loopluk bir işlem yapması gerekiyorsa, C# ile yazılmış bir ASP.net PHP’ye üstünlük sağlayacaktır. Ne var ki, bu pek yaygın bir senaryo değildir. Hesaplamaların çoğunda milyonlarla değil, yüzlerle hesaplanan loop işlemleri olur. Bu yüzden eğer birisi 2.000.000 loopluk bir hesaplama yapıyorsa farklı amaçları var demektir.
Performans üzerinde etkisi olabilecek ama hangi programlama dilinin seçildiğiyle hiçbir ilgisi olmayan diğer unsurlar şunlardır:
– Programcıların kodu optimize etme becerisi ve bilgisi
– Programcıların uygun ve optimum SQL sorguları yazma becerisi ve bilgisi
– Gerekli işlevsellik (bazı işlevlerin ASP.net platformunda çalışması daha uzun, PHP platformunda işlemesi daha kısa sürebilir veya tam tersi)
3. Maliyet
PHP, MySQL sunucusu, PostgreSQL sunucusu, Apache sunucusu ve Linux işletim sistemi ve bu sistemlerin güncellemeleri hep ücretsizdir. Ayrıca backup olarak başka bir otomatik yedekleme sunucusu edinmek için fazladan bir sertifika maliyeti söz konusu değildir. Yük dengeleme veya sunucu kümeleme için de çok sayıda sunucu çalıştırmaya da gerek yoktur.
Linux, Apache, MySQL ve PHP hosting şirketleri tarafından da yaygın bir şekilde kullanılmaktadır. Bu popülarite sayesinde bu platformların kullanıldığı hosting hizmetlerinin aylık maliyeti Windows hostingine göre daha azdır.
ASP.net ve IIS eğer Windows işletim sistemi satın almışsanız ücretsizdir. Microsoft Windows sunucuları, Microsoft SQL sunucuları ve bu sunucuların gelecekteki güncellemeleri için ciddi miktarda lisans maliyetini göze almak gerekir. Örneğin, Microsoft Server 2008 R2 Standard 64 bit’in fiyatı yaklaşık 1029$, Microsoft SQL Server 2008 Standart Edition For Small Business’ın fiyatı ise yaklaşık 1038$’dır.
Microsoft için gereken bu lisans maliyetleri, eğer site popüler olur ve sitenin çoklu sunucularla çalıştırılması gerekir veya sunucularda yük dengeleme, sunucu kümeleme veya otomatik yedekleme gibi gereksinimler ortaya çıkarsa, ciddi seviyede artabilir.
4. Destek ve Kaynaklar
Linux, Apache, MySQL ve PHP açık kaynaklı olduğu için, dünyanın her yerinde bu işe gönül vermiş, sürekli geliştirme ve güncelleme yapan, platforma destek sağlayan çok sayıda geliştirici bulunmaktadır.
“Gönül vermiş” tabirinin kullanılmasının nedeni açık kaynak camiasına katkıda bulunan geliştiricilerin bu işi maddi kazanç sağlamak için yapmıyor olmalarıdır. Eğer herhangi bir işlevde zorluk yaşayıp bir PHP forumuna herhangi bir soru yazarsanız, geliştirici dostlarınızdan anında faydalı bilgiler gelecektir.
ASP.net’in varlığı ise Microsoft’ta iyileştirme ve güncellemeler yapan belirli sayıda geliştiriciye bağlıdır. ASP.net konusunda zorluk yaşayanlar destek bulma konusunda biraz zorluk yaşayabilir.
5. Dağıtım Süresi
ASP.net’te karmaşık özellikleri ve işlevleri oluşturmak için PHP’ye kıyasla daha fazla (satırda) kod yazmak gerekir, bu da geliştirme sürecini uzatır.
Ayrıca, PHP sunucuda yorumlanır, bu yüzden bir işlev değiştirileceği zaman bu değişimi görmek için fazladan bir aşamaya gerek kalmaz. ASP.net’in ise kodda yapılan her değişiklikte derlenmesi gerekir. Bu yüzden Asp.net kullanırkenki geliştirme süreci PHP’nin aksine daha uzun sürer.
6.Editörler ve Araçlar
PHP ve MySQL’de editör yoktur. PHP geliştiricilerinin çok sayıda editöre erişimi vardır.
ASP.net programcıları ise .NET uygulamaları geliştirirken Microsoft Visual Studio editörüne bağımlıdır. (ASP.net geliştiricilerinin çoğu Microsoft Visual Studio’yu çok beğenir ve sever.)
Bu farklı bir programlama stilidir. PHP ve açık kaynak geliştiricileri genellikle VI, VIM, Notepad ++ gibi metin editörleri kullanırlar.
VI ve VIM çok gelişmiş ve bağımsız editörlerdir, bu editörleri tam kapasiteleriyle kullanmayı öğrenen programcılar da çok karmaşık programlamaları hızlı, randımanlı ve bağımsız bir şekilde yapabilirler. Bu programcılar daha fazla hakimiyete ve esnekliğe sahiptir. JavaScript, Ajax, JQuery vs. gibi diğer önemli platformların kullanılması gerektiğinde de PHP geliştiricilerinin daha fazla avantajı vardır çünkü açık kaynak ortamına ve VI veya VIM editörleri kullanarak elle kod yazmaya aşinadırlar.
7. Platformdan Bağımsızlık
PHP platformdan bağımsızdır ve herhangi bir platformda (Linux, Unix, Mac OS X, Windows) çalışabilir.
ASP.net yalnızca Windows platformunda çalışacak şekilde yazılmıştır.
8. Popüler Siteler Ve Çalıştıkları Platformlar
Aşağıdaki tabloda en popüler siteler ve bu sitelerin hangi platformlarda çalıştığı listelenmiştir.
Not: Lütfen C ve C++’ı karıştırmayın. Bunlar birbirinden tamamen farklı programlama dilleridir. ASP.net C ile değil, çoğunlukla C++ veya Visual Basic ile yazılır.
Site | Açılış Tarihi | Sunucu Platformu | Programlama Dili |
Google.com | Kasım 1998 | Linux | C, Java, C++, PHP & MySQL |
Facebook.com | Şubat 2004 | Linux | PHP, MySQL ve C++ |
YouTube.com | Şubat 2005 | Linux | C, Java ve MySQL |
Yahoo.com | Ağustos 1995 | Linux | C++, C, Java, PHP & MySQL |
MSN.com
| Ağustos 1995 | Windows | ASP.net |
Live.com | Ağustos 2008 | Windows | ASP.net |
Wikipedia | Ocak 2001 | Linux | PHP & MySQL |
Amazon.com | Ekim 1995 | Linux & Solaris | C++, Java, J2EE |
WordPress.com | Kasım 2005 | Linux | PHP & MySQL |
IHS Telekom | 1999 | Linux | Java & MySQL 🙂 |
9. Popülerlik
Linux, Apache, MySQL ve PHP platformları Windows platformundan çok daha popülerdir. Netcraft’ın Temmuz 2010’da 205.714.253 site arasında yaptığı Web Sunucusu Anketi’ne göre bu sitelerin 112.945.968 tanesi (%54.90) Apache, 53.217.620’si (%25.87) Windows, geri kalanları ise diğer platformlar tarafından host edilmektedir.
10. Kullanılabilirlik ve Dağıtım Kolaylığı
Linux’un kullanıcı dostu olmadığı konusunda çok fazla yanlış kanı ve bilgi bulunmaktadır. Bu konu tamamen platformu oluşturan kişinin deneyimine ve bilgisine bağlıdır.
Ancak, popüler Linux dağıtımlarının yeni ve geliştirilmiş sürümlerinin çok etkileyici olduğunun da altının çizilmesi gerekir. Ubuntu, Red Hat, CentOS, openSUSE ve Fedora gibi Linux dağıtımları kurulum ve dağıtım kolaylığı konusunda önemli adımlar atmışlardır. Ayrıca basit ve anlaşılır GUI arayüzleri de Linux sunucularının konfigürasyonunu ve kurulumunu çok kolaylaştırmaktadır.
Microsoft ise sunucu yönetimini karmaşık ve gereksiz özelliklerle doldurarak iyice hantal hale getirdiği için ne yazık ki kullanılabilirlik konusunda bir süredir geriye gitmektedir.
PHP kodlama Dünya üzerinde en çok kullanılan ve yaygın olanıdır ancak tercih yinede size kalmış seçiminizi iyi yapmanızı tavsiye ederiz.
Web projelerinizi PHP Hosting paketlerinde ASP.NET projelerinizi ASP Hosting paketlerimizde yayınlayabilirsiniz.