Anasayfa İletişim RSS
 
Şimdi Üye Ol | Şifremi Unuttum
 
Anasayfa » ASP.net (16 ders)
 
ASP.Net ve PHP5 Savaşı

Yazar: Mustafa Coşkun  
Eklenme: 10.07.2008   Okunma: 1278    Puan: 3.8   Seviyesi:  Orta
Bu karşılaştırma son zamanlarda oldukça sık duymaya başladığımız durumlardan birisi haline geldi. Peki nedir bu ASP.Net ve PHP5? Avantajları ve dezavantajları neler? Hangisi daha iyi?

Bugün bir web sitesi kurmak için oldukça çok alternatif vardır. HTML kodları arasına iliştirdiğimiz özel taglar sayesinde bir web uygulaması yapabiliriz.

Mesela CGI motorunun yanıt verebileceği kodlar, bu kodlar genellikle sunucu tarafında çalışırlar ve kullanıcı ancak bir istek de bulunduğunda ona karşılık HTML sayfaları üretirler ve yorumlayıcıya gönderirler. Açık kaynak olarak bildiğimiz PHP ve Microsoft firmasına ait ASP.Net çatısı da bu gruptandır. Ayrıca JSP (Java Server Pages) ve Perl dilleri de sunucu taraflı diye nitelendirilebilir.
Ben daha çok ASP.Net ve PHP5 üzerinde durmaya çalışacağım. Aslında amaç sizlere proje geliştirmenizde hangi dili tercih etmenizde fikir vermek, çünkü her ikisinin de eksileri ve artıları var.

ASP.Net ve PHP5 karşılaştırmasında nelere dikkat etmemiz gerekli, birlikte bakalım. Öncelikle maliyeti ve ardından projemizin hızı, esnekliği, güvenliği son olarak da yeniden programlanabilirliği (açık kaynak ve koda müdahale edilebilirliği).

Nedir bu ASP.Net?

Aslında ASP.Net, ASP'nin dönüşümü gibi algılansa da başlı başına yeniden tasarlanmış bir yazılımdır. Biz daha çok ASP ve PHP ile programlanmış web uygulamarına rastlamışızdır. Web çatısının değişmesi ile birlikte artık ASP.Net ve PHP5 kıyası söz konusu olmaya başlamıştır. ASP.Net ile birlikte gelen en büyük esneklik ve güzellik bilinen bir çok programlama diline karşılık verebilmesi ve kolay kombinasyonudur.

 http://img.sanalkurs.net/uploads/aspnet.jpg

Örnek: VB, C#, C, Cobol, SmallTalk ve Lisp gibi... Bu yeni net çatısı ortak bir alan oluşturmuştur. Yani bu ne anlama geliyor; siz C dilinde yazdığınız programınızı derleyip yüklediğinizde kodunuz Microsoft Intermediate Language tarafından tekrar derleniyor ve yorumlayıcıya yollanıyor.

Net çatısı ayrıca nesne odaklı programlama dediğimiz (OOP) yapıya olanak tanımaktadır. Ayrıca XML gibi yapıları ve değişik resim manipulasyonları içinde özel Net kütüphaneleri sunmaktadır. Programlama ve yöntemin yanı sıra veri tabanı ve veri ile ilişkilendirmede önemlidir. ASP.Net çatısında çalıştırdığınız projede veri tabanına ODBC kanalıyla bağlanırsınız.

ASP.Net, Güçlü ve Zayıf Yanları

ASP.Net dizaynı ve sunumu oldukça açık ve sadedir. Nesne Odaklı Programlama ile uğraşan programcıların beklentilerinin web karşılığı diyebiliriz. Aslında bu çatı ile var olan programcılık bilginiz ile ya da bildiğiniz bir programlama dili ile bir web projesi geliştirebilirsiniz.

ASP.Net'in diğer güçlü yanı ise; geliştirme ortamıdır. Mesela geliştiriciler; WebMatrix, Visual Studio .Net yada diğer Borland araçlarından Delphi ve C++ Builder ile çalışabilirler. Mesela, Visual Studio ile çalışırken oldukça geniş bir çalışma olanağı sunuluyor. Hata derlemeleri, test, ipuçları, yenilenen durumlar ve benzeri birçok hizmet.

Tüm bunlara rağmen, ASP.Net bellek kullanımında ve kodu yorumlamada zaman olarak biraz yetersiz kalıyor. Bunun nedeni de geri planda çalışan birçok kod bloğu olmasıdır. Ayrıca web tabanlı uygulamalar da bu durum problem teşkil edebilir. Internet de çok kullanıcı olması ve projenin aynı anda birçok sorguya yanıt vermesi zaman performansını düşürebilir.

Nedir bu PHP?

PHP de diğer web uygulama dilleri gibi HTML üzerine inşa edilmiştir. Sunucunuzda ki PHP motoru kodları alıp tekrar yorumluyor ve HTML sayfalarına dönüştürüp sunuyor. PHP bir programcıya tanıdık gelebilir ama kimdir bu programcı; Perl, C ve Java ile çalışan kişi. PHP de Java ile kullanılmasına rağmen tam olarak OOP (Nesne Odaklı Programlama) bir dil sayılmaz.

 http://img.sanalkurs.net/uploads/php.jpg

PHP de de veri tabanı ile ODBC kanalı ile ilişki kurulabilir. Bunun yanı sıra oldukça çok alternatif de sunulmuştur. Mesela; MySQL, Oracle ve Postgres. Hatta Oracle; PHP için ek kütüphaneler sunmaktadır, OCI8 ile birlikte LOB, BLOB, CLOB ve BFILE gibi olanaklar sunmaktadır.
Eğer Oracle veri tabanına ODBC yada Perl'in DBI kütüphanesinden yararlanarak bağlanıyorsanız diğer veri tabanlarının sahip olmadığı özellikleri ararsınız.

Zend Teknoloji, PHP için ticari bir yazılım ortamı geliştirmiştir. Ayrıca yine Zend Teknoloji firması tarafından Zend Performance Suite geliştirilmiştir. Bu sistem sayesinde sayfa derlenmeleri ön bellekleme ile hız konusunda oldukça büyük bir katkı sağlamaktadır. Öyle ki bu hız performansı hiç bir şekilde azımsanamaz.

PHP, Güçlü ve Zayıf Yanları

- PHP fonksiyon isimleri duyarsızdır. Çoğu programcı bu durumdan hoşnut değildir.
- PHP nesne odaklı bir programlama dili ile dizayn edilmemiştir.
- PHP için maliyet ve lisans konusunda endişelenmeye gerek yoktur. Açık kaynak olduğu için geliştirilmeye açıktır. PHP, Apache ile çalışır. Apache içerisinde modül olarak doğrudan derlenebilir.
- Apache, ayrıca Windows, Linux, Solaris ve benzer Unix platformlarında çalışmaktadır.
- Özellikle Apache'de güvenlik önceliklidir. Son olarak PHP de fazla kod bloğu oluşmadığı için sunucu tarafından derlenip tekrar yorumlayıcıya gönderilmesi uzun sürmez. Bu da projemizin hızını olumlu olarak etkiler.

PHP5 ile Gelen Yenilikler

PHP5, 4.beta sürümü Aralık 2003 sonlarında geldi. Bir çok yeni özellik ve görevle gelmesine rağmen yine de beta olarak gelmiştir.

PHP5'in en büyük kazanımı OOP özelliklerini sunmaya başlamış olmasıdır. Ayrıca try ve catch metotları kullanılabilir hale getirilmiştir. Böylelikle kodlarımız daha temiz ve anlaşılır hale gelmiştir.

<?php
class blue {
function openFile ($inFile) {
if (file_exists ($inFile)) {
# kod dosyamız
} else {
yeni hariç tutulacak kısım diyelim
("Dosya açılamadığında: $inFile");
}
}
}
$blueObj = new blue ();
try {
$blueObj->openFile ("/home/mistake/file.txt");
} catch (Exception $myException) {
echo $myException->getMessage ();
# hariç olarak tanımlanan kodumuzun geri kalan kısmı
}
# metodumuzun geri kalan kısmı
?>


Diğer bir yenilik ise daha önceki PHP serilerinde fonksiyon veya metot bir değerle taşınıyordu. Bu şekildeki veri akışı hem bellek hem de zaman kaybına yol açıyordu. PHP5 de ise bu nesne geçiş durumu referans gösterme şekli ile aşılmıştır.

Ayrıca PHP5, sınıflarınızda güçlü metot ve değişken kontrolleri de sunmaktadır.

Güvenlik Karşılaştırması

ASP.Net, IIS kullanımı gerektiriyor. IIS'in bilinen uzun bir geçmişi vardır. Çoğu zaman bilgisayar korsanlarının hedefi haline gelmiştir ve hala giderilememiş zayıflıkları vardır. PHP ise, Apache üzerinde çalışmaktadır. Açık kaynak ve hızlıdır buda onu oldukça güvenli kılmaktadır. Ayrıca Apache birçok platformda çalışabilirken, ASP.Net; IIS gerektirmektedir.

http://img.sanalkurs.net/uploads/MicrosoftLogo.jpg

Yine de siz ASP.Net ile proje geliştiriyor ve projenizin girişinde Apache kullanmak istiyorsanız; bunun için birkaç alternatifiniz var. İlk olarak IIS isteklerini durdurmanız ve Apache'yi devreye sokmanız gerekiyor. Böylelikle aspx içerikleri Apache tarafından alınır IIS sunucu üzerinde derlenip yollanmış olur. Aslında bu nöbetleşe iş yaptırmak gibi bir şey olsa gerek.

Buna karşılık, Apache ile birlikte ASP.Net kullanmak istiyorsanız, uygulamanız Microsoft tarafından desteklenebilir veya desteklenmez, bunu bilmelisiniz.

Size önerebileceğim son alternatif ise Ximian'ın açık kaynak üzerinde çalışan Mono Projesidir.

Bir Veri Tabanı Bağlantısı

PHP veya ASP.Net hiç fark etmez, önemli olan bir veritabanı ile projemizi ilişkilendirmek. ASP.Net için bu biraz karışık olabilir; nedeni ise bir çok dil kullanabilme imkanının sunulmuş olması. Yine her zamanki gibi kodlarımız HTML içerisine gömülmüş olacaktır. Şimdi kafanızda bir fikir oluşması açısından örneğimize bakalım.

PHP5 ile Oracle Veri Tabanı Bağlantımız

Burada PHP5 sınıfları ile Oracle bağlantısı sağlayacağız. (bunun yanı sıra ODBC sürücüleri de kullanılabilir)

 http://img.sanalkurs.net/uploads/Oracle.jpg

class oracle_object {
protected $theDB;
protected $user;
protected $pass;
protected $db;
function __construct($u, $p, $d) {
$this->user = $u;
$this->pass = $p;
$this->db = $d;
}
function db_open () {
$theDB = @OCILogon($this->user, $this->pass, $this->db);
db_check_errors($php_errormsg);
}
function db_close() {
@OCILogoff($theDB);
db_check_errors($php_errormsg);
}
function __destruct () {
print ("so long...");
}
}


ASP.NET ile Oracle Veri Tabanı Bağlantımız

Eğer Oracle Veri tabanına VB.Net ile bağlanıyorsak MSDN'den alınmış örnek kod bloğudur:

Imports System
Imports System.Data
Imports System.Data.OracleClient
Imports Microsoft.VisualBasic
Class Sample
Public Shared Sub Main()
Dim oraConn As OracleConnection = New OracleConnection("Data Source=MyOracleServer;Integrated Security=yes;")
Dim oraCMD As OracleCommand = New OracleCommand("SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER", oraConn)
oraConn.Open()
Dim myReader As OracleDataReader = oraCMD.ExecuteReader()
Do While (myReader.Read())
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", myReader.GetInt32(0), myReader.GetString(1))
Loop
myReader.Close()
oraConn.Close()
End Sub
End Class


Şimdi Tercih Zamanı

Hiç tereddütsüz PHP5 diye karar verdiğinizi duyar gibiyim. Nedenine gelince; maliyeti, hızı ve güvenliği ayrıca açık kaynak kod imkânı sunuyor olması. Tek zayıflığı ise nesneye dayalı bir programlama şeklinden uzak oluşu. Yani güzel bir kodlama şekli ve kod hâkimiyeti var.

http://img.sanalkurs.net/uploads/mysql.jpg

Maliyet: Bildiğiniz üzere PHP ücretsiz olarak sunulmakta ve lisans ücreti gerektirmemektedir. Sadece Zend optimizasyonları için olabilir onlarda o kadar yüksek meblağlar değildir. ASP.Net de ise durum aynı değildir. Daha en başında bu sistem için bir yatırım yapmış sayılırsınız. Çünkü Microsoft firması bunun için dev araştırma laboratuarları kurmuştur.

Hız ve Esneklik: Yukarıda bahsettiğim gibi ASP.Net çatısı birçok dil ile çalışmanıza olanak sunmuştur. Bu sayede çok büyük bir nesne odaklı programlama kitlesi oluşturmuştur. Fakat bu beraberinde hız sorunlarını da getirmiştir. Aslında temelde birçok kodu çalıştırabilir ve ASP.Net olarak üretebilir ama PHP için bu söz konusu değildir. Çünkü PHP motoru sadece PHP denkliğindeki sayfaları derleyip yordamlayabilir. PHP oldukça hızlı ve kolay bir çözümdür. Sadece hız değil kullanılan bellek de önemlidir bu göz ardı edilmemeli.

Güvenlik: ASP.Net, IIS dediğimiz ve çoğu kez kötü ün yapmış bir motor üzerinde çalıştırılır.

PHP ise Apache üzerinde çalıştırılır. Apache, IIS'e göre daha hızlı ve daha güvenlidir.

Çalıştırılabilme Platformu: Bir sunucuda ASP.Net, IIS ve Apache üzerinde çalıştırılabilir. PHP ise daha çok Apache üzerinde çalıştırılabilir şekilde dizayn edilmiştir.

Açık Kaynak İmkanı: Açık kaynak kod sunumu aslında programcılar ve şirketler tarafından fazla benimsenmeyen bir durumdur. Bunun en büyük nedeni araştırma, geliştirme ve lisans bedelleri, ayrıca yazılımın üzerindeki hâkimiyet düşüncesidir. Yani sahip olduğunuz yazılımın kodlarına erişmek sizin için oldukça büyük bir şans olsa gerek diye düşünüyorum.

Özet

Her iki sistemde de yani PHP5 olsun ASP.Net olsun; çok büyük olanaklara sahipsiniz. ASP.Net size sunulan bu olanakları biraz daha resmileştirmiş ve bürokratik hale getirmiştir. Yani yeni gelişimler, ekler, düzeltmeler bu ve benzeri durumları daha hızlı daha kolay geri sunabilmektedir. PHP de ise durum bu kadar iç açıcı değildir. Bir kişinin bulmuş olduğu yeni bir ekin bir başka programcıya geçmesi aylar sürebilir. Buda büyük bir zaman kaybıdır. Aynı şekilde karşılaşmış olduğunuz bir sorunun çözümüne ulaşmanızda zaman alacaktır.

http://img.sanalkurs.net/uploads/kiyas.jpg

Benim kişisel görüşüm ASP.Net olarak belirmiştir. En büyük nedeni de karşınızda büyük bir şirketin ve bu doğrultuda büyük bir oluşumun olması. Yani sorunlar ve çözümleri size çok yakın.

Açıklamalar:

HTML: HyperText Markup Language
PHP: Personel Home Page Tools. Daha sonradan PHP, Hypertext Pre-Processor haline dönüşmüştür.
ASP: Active Server Pages (Aktif Sunucu Taraflı Sayfalar)
JSP: Java Server Pages (Java Sunucu Taraflı Sayfalar)
CLR: Common Language Runtime (Ortak Dillerin Tek Çatıda Çalıştırılması)
OOP: Object-oriented Programming (Nesne Odaklı Programlama)
LOB: Large Object (Yapılandırılmamış (unstructured) veri bloklarının 4GB'a kadar verinin binary ya da karakter olarak saklanmasını ve işlenmesini sağlar (örneğin metin, grafik görüntüleri, video klipleri, ses vs. gibi).
BFILE: (Binary FILE) - (LOG)- (Bu alan türünde dosyalar oracle veritabanında değil external olarak belirtilen bir directory (dizinde ) saklanır ve sadece adresleri oracle da saklamak için kullanılan bir binary veri tipidir.)
BLOB: (Binary LOB) - (PICTURE)- (Yapısal olmayan ve 4 Gb ye kadar olan binary formattaki bilgileri saklamak için kullanılabilir, BLOB'lar RAW'a, RAW'lar da BLOB'a çevrilebilir.)
CLOB: (Character LOB) - (DOCUMENT) - ( 4Gb kadar olan karakter katarlarını saklamak için kullanılabilecek alan türüdür, CLOB'lar CHAR ve VARCHAR2'ye çevrilebilir, bunun tersi de geçerlidir.)
ODBC: Open Database Connectivity (Veri Tabanı Bağlantısı)
IIS: Internet Information Services (Web Sunucusu)
Apache: The Apache Software Foundation (Web Sunucusu)
MSDN: Microsoft Developers Network (Microsoft Şirketine ait Geliştirme Ağı)
Mono Projesi: www.go-mono.com (Bu proje ile ilgili ayrıntılı bilgi bulabilirsiniz.)
 
  • Currently 3.80/5
Değelendirmek için üye girişi yapmanız gerekmektedir
EkleBunu Sosyal Paylam Butonu
ASP.Net ve PHP5 Savaşı Dersini Yazdırın

"ASP.Net ve PHP5 Savaşı" dersi için 8 yorum var

24.07.2008 ijooy diyor ki:
Gerçekten güzel bir makale olmuş. Teşekkürler bilgilendirdiğin için...

01.08.2008 Microsoft diyor ki:
Güzel bir yazı olmuş.
Şu konuyada dikkat çekmek istiyorum. PHP'de bir dll yapısı yok. PHP ile ticari bir proje geliştirenler lisanslama ve dağıtımında ne kadar problem çektiğini bilirler. Microsoft firması ödediğiniz bu lisans ücretinin karşılığını veriyor bence. PHP projelerini lisanslamak için ise Zend firmasına yüksek meblalar ödemeniz gerekiyor. Yoksa verdiğiniz herkes projenizi değiştirip dağıtabilir. DLL yapısını ise ücretsiz kullanabilirsiniz. COM OBJ. gibi. Buna benzer daha bir çok şey..

12.08.2008 imiral diyor ki:
ve ayrıca bu diller sunucu taraflı olduğu için zaten alınacak olan host u windows aldığınızda öyle platform kaygısı çekmezsiniz..yapılan iş zaten aynıdır,web programlama dillerinin bir platform kaygısı yoktur bence,burda neden karşılaştırma kriteri olmuş anlayamadım, sebep diye soracak olursanız projenizi geliştirip host ve domain işlemlerini geçip yayınladıktan sonra platform farkı olmaksızın tüm browser'larda siteniz çalışır, bu araştırma zayıf geldi bana,saçma bir karşılaştırma olmuş açıkcası

12.08.2008 ANUBIS diyor ki:
sevgili imiral buradaki araştırma explorer yada mozillada veya opera da sitenin görüntülenmesi değil... Sistemin işleyişi ve yapısı. Tekrar okuman dileklerimle kolay gelsin. Daha iyi anlayacaksın anlatılmak isteneni...

15.08.2008 nacrumetes diyor ki:
Makale gerçekten aydınlatıcı çok teşekkürler.Ben asp.net i yeni öğrenmeye başlıyorum ama bu makale daha yolun başındayken PHP ye geçmemi söylüyor gibi me geldi.Sizce yol yakınken PHP ye geçmelimiyim?Öğrenmem ASP.NET e göre daha kolay olurmu.

15.08.2008 ANUBIS diyor ki:
Daha kolay daha zor demeyelim bu biraz kişisel. Ama web için kendinizi geliştirmek istiyorsanız PHP uygun ve yeterli olacaktır. Başarılar...

22.11.2008 sekerrr diyor ki:
php daha avantajlı daha basit ve de kullanışlı bence

28.11.2008 neonte diyor ki:
Bence ikisinden birini seçmek ve ben bununla devam edeceğim demek gereksiz. Üreteceğiniz projeye göre tercih edilebilir olmalı.

Ayrıca makalede dikkatimi çeken Apache ve ISS üzerinde çalıştıkları çok sık tekrar edilmiş buda biraz sıkıcı olmuş.

Birde yorum yapan arkadaşlarımız php'nin lisanslamasının pahalılığından bahsetmişler hatırlatmak isterim lisanslama işini sadece zend yapmıyor daha düşük meblağlara (100 200 euro gibi) kaynak kodları lisanslayan programlar mevcut biraz araştırın.

Üye olmadan yorum ekleyemezsiniz !


UYARI: SANALKURS'ta yer alan materyaller ile ilgili her türlü sorumluluk hazırlayan veya gönderene aittir. SANALKURS'ta yer alan hiçbir makale, yazarından izinsiz başka bir yerde yayınlanamaz. SANALKURS kullanıcıları ve üyeleri, üçüncü kişilerin telif hakkı sahibi bulunduğu her türlü fikri eser, fotoğraf, resim vb. materyal ve ürünleri kullanamazlar. SANALKURS kullanıcı ve yazarlarının, üçüncü kişilerin telif hakkı sahibi olduğu yazı, resim vb. ürünleri kullanması durumunda, her türlü hukuki ve cezai sorumluluk kendilerine aittir. Söz konusu haksız kullanım nedeniyle SANALKURS .NET'in hiçbir hukuki sorumluluğu bulunmamakta olup, haksız kullanım nedeniyle SANALKURS.NET'in üçüncü kişilere ödemek zorunda kalabileceği her türlü tazminat ve/veya adli/idari para cezaları ilgili Sanalkurs kullanıcılarından rücu edilecektir.
 İSTATİSTİKLER
XML Kaynağımızdan yararlanarak sitemizdeki derslerimizi masaüstünüzden yada web sitenizden takip edebilirsiniz
ÇEVRİMİÇİ 244 Ziyaretçi, 40 Üye
burcubrg, ksk1912, kayrat, HelpiceR, zeynebim53, handew, divane_20, ebru özperçin, nteker, enginix, sadhfgsahfh, turshu, çecil, photografick, Dr.Weaver, ATES, ecengiz54, dusmevsimi, hidegarden, AFYOK06, sametkuru, mirach_turk, murat1709, monilo, knter01, mysticturk, sezgi-sirin, fakir52, obstinate, CTRL-Z, onder1972, SLORE, yaykilic, garru, erhan_lgn, oguzihsan, zpceyhun, araptir, starlin, TRK
BUGÜN DOĞUM GÜNÜ OLAN ÜYEMİZ:
< ŞbnM > (21)
Bugün: 2552, Dün: 5947, Bu Ay: 8499, Toplam Ziyaret: 1865502, Toplam Üye: 132566, Son Üye: sadhfgsahf
Toplam Ders: 2000, Toplam Yazar: 45, Toplam Dosya: 34, Toplam Link: 55
   
RSS Kaynağımızdan yararlanarak sitemizdeki derslerimizi masaüstünüzden yada web sitenizden takip edebilirsiniz