Yazılım / Performans
 
1-Web Programlama Dillerinin Performans Analizi

Web üzerinde bilgi, temel olarak statik ve dinamik olmak üzere iki farklı şekilde görüntülenir. Statik bilgi içeren sayfalar bir defa yazılıp sunulmasına rağmen, dinamik sayfalar temel olarak istemci istekte bulununca oluşturulur. Bu şekilde dinamik sayfalar oluşturmak için Web Programlama dilleri kullanılır. Web programcılığı, artık standart haline gelen HTML (Hiper Metin Anlamlandırma Dili) ile başlamış ve CGI, JavaScript, ASP, PHP gibi dillerle devam etmiştir.

Bu dillerin bazılarısunucu tarafında bazıları ise istemci tarafında çalışmaktadır. İlk olarak HTML’i ele alalım; HTML dosyalarının içeriği bağlanılan sunucu tarafından istemci bilgisayarında gösterilir. Yani tüm görüntüleme işlemini istemci bilgisayarı yapar. HTML’den sonra çıkan JavaScript teknolojisi de buna yakındır. Yani dosyalar sunucu bilgisayar tarafından istemci bilgisayarına yollanır ve istemci bilgisayarında düzenlenip görüntülenir. JavaScript içeren sayfalar diğer sayfalara göre daha geç yüklenmektedir çünkü tüm JavaScript kodları istemci bilgisayarında çalıştırılır ve tabi bu da performans kaybına yol açar. Sunucu tarafında çalışan programlama teknolojilerinde ise tüm kodlar sunucu tarafında çalıştırılır ve istemciye sadece salt HTML kodları gönderilir. Buradan anlaşılacağı üzere sunucu taraflı programlamada sayfa içerisinde bulunan tüm kodlar sunucu üzerinden çalıştırılır. Bu yönüyle sunucu bilgisayarının performansı nispetinde sistem o denli hızlı işler. İstemci bilgisayarı ise sadece sunucudan gelen salt HTML sayfalarını görüntüler. Kullanıcı herhangi bir tarayıcı vasıtası ile ilgili siteye bağlandığında, ulaşmak istediği dosyayı, istemci bilgisayara gönderir. Ancak bu durum .html ve .htm uzantılı dosyalar için böyle iken, sunucu taraflı programlama ile hazırlanan bir dosyaya istekte bulunduğunda Web sunucu istenilen bu dosyayı önce yorumlar ve bu işlemin sonucunda üretilen standart HTML kodları kullanıcıya gönderir. Sonuç olarak kullanıcıya iletilecek HTML dosyası, kullanıcı istekte bulunana kadar oluşturulmaz. Kullanılan tarayıcı tipi, yazılan sunucu taraflı programlama dosyaları için önemli değildir. Çünkü orumlanan sunucu taraflı programlama dosyaları standart HTML çıktı üretirler.

PHP (Personel Home Page-Hypertext Preprocessor) ve ASP (Active Server Pages) sunucu tabanlı betik dilleridir. PHP ve ASP'nin temel ortak özellikleri HTML içine yazılmalarıdır. Sayfa uzantısı .php veya .asp olan bir dosya sunucudan istendiğinde, sunucu bu sayfayı PHP veya ASP yorumlayıcına yönlendirir. Yorumlayıcı PHP veya ASP kodlarını yorumlar, yapılması gerekenleri yapar ve ziyaretçinin tarayıcısına sonucu gönderir.

Özet olarak, bir sunucu taraflı programlama ile hazırlanan sayfa şunlardan oluşur:
• Bu sayfaların içinde kod vardır.
• Bu sayfaların kodları Web sunucusu tarafından icra edilir.
• Bu sayfa kullanıcının tarayıcısına salt HTML kodu olarak gelir.

 
1.1 Web Sunucu

Web, Internet üzerinde yer alan grafiksel bir servistir. Hazırlanan içeriklerin (grafik, yazı, ses, animasyon, görüntü vb.) dünya üzerinde yer alan tüm kullanıcılara iletilmesi ve kullanıcıların bu dosyalara ulaşabilmesi için Internet’e bağlı bir bilgisayar üzerinde çalışan uygulama yazılımını Web sunucu olarak tanımlanabilir. Web sunucu programları kuruldukları işletim sistemine göre farklılık gösterebilir. Sözgelimi Web sunucu olarak Unix işletim sistemini kullanan bilgisayarlar Apache kullanırken, Windows işletim sistemini kullanan bilgisayarlar (sunucu) ise, Web sunucu programı olarak IIS (Internet Information Server) kullanabilir.

 
1.2 Statik Sayfa Nedir?

Bir Web gezgini olarak Internet’te dolaşırken sürekli olarak statik sayfalarda geziniyorsunuz demektir. Statik sayfa onu oluşturan kişinin (Webmaster), bu sayfanın içeriğini bitirdiği, tamamladığı ve kullanıcıların bu sayfaya her uğradığında aynı içeriği gördüğü sayfalardır. İçeriklerinin değişmesi için yeniden tasarlanmaları gereklidir.

Bu zaman ve iş gücü kaybına yol açan bir etkendir. Statik sayfa tanımını ve özelliklerini belirleyen bazı önemli hususlar şunlardır:
- Tasarımcı (Webmaster) sayfasını hazırlar ve .htm uzantılı bir dosya olarak kayıt eder.
- Tasarlanan dosya Web sunucuya yayınlanmak üzere yerleştirilir.
- Kullanıcı tarayıcının adres kısmına bu sayfaya ulaşmak için gerekli adresi yazar.
- Bu isteğe karşı Web sunucu ilgili dosyayı bulur.
- Web Sunucu, HTML içeriğini istek gönderen tarayıcıya internet ağı aracılığı ile yollar.
- Tarayıcı gönderilen bu HTML dosyasını işler ve ekranda gösterir.

 
1.3 Dinamik Sayfa Nedir?

İçeriği, tamamı ile önceden belirlenmiş bazı kriterlere bağlı olarak değişen sayfalar, dinamik sayfalar olarak adlandırılır. Bu değişiklik, sayfanın aldığı bazı girdilere göre olabilir. Dinamik sayfaların Web sunucu tarafında yorumlanma işlemi gibidir.

Dinamik sayfaların bazı özelikleri ise:
- Programcı veya Web tasarımcı bazı komut dosyalarını da içeren bir dosya hazırlar.
- Tasarlanan dosya Web sunucuda yayınlanmak üzere yerleştirilir.
- Kullanıcı, tarayıcının adres kısmına bu sayfaya ulaşmak için gerekli adresi yazar.
- Bu isteğe karşı, Web sunucu komutları içeren ilgili dosyayı bulur.
- Web sunucu bu komutlar dizisini işleyerek HTML çıktı üretir.
- Web sunucu oluşturulan bu HTML çıktıyı, istekte bulunan tarayıcıya gönderir.
- Tarayıcı, gönderilen bu HTML dosyasını işler ve ekranda gösterir.

 
2-Web programlama Dilleri

HyperText Transfer Protocol (HTTP)'nin ortaya çıkışı ile Internet gerçek kimliğine kavuşmuştur. Bu sayede, Web sunucusu ile konuşan bir Web tarayıcının sunucudan aldığı zengin içerikli bilgi, uç kullanıcılara resim, ses, görüntü gibi zengin içerikte ve kullanıcı dostu bir ara yüzle ulaştırılabilir hale gelmiştir. Bu zengin içeriğin değişmeyen sayfalar olarak tutulması kullanıcılar için çok şey ifade etmediği için onlara içeriği otomatik değişebilen ve veri tabanı erişimi sunan siteler oluşturmak için çok çeşitli teknolojiler geliştirilmiştir.

 
Web ortamında dinamik sayfalar oluşturmanın temel olarak iki yolu vardır:
• Sunucu tarafında çalışan uygulamalar kullanmak ve
• İstemci tarafında çalışan uygulamalar kullanmak.
İstemci tarafında çalışan uygulama olarak; Java Appletleri, Netscape'in JavaScript'i ve Microsoft'un VBScript'i gibi betik dilleri kullanılabilir.
Avantajları:
• Sunucuyu meşgul etmemesi: Veri girişi kontrolleri, menüler, genişleyebilir listeler gibi istemci tarafında yapılabilecek işler için sunucu meşgul edilmemiş olur.
• Bant genişliğini etkili kullanma: Yukarıdaki avantaj bant genişliğini de etkilemiş oluyor.
 

Sunucu tarafında çalışan uygulamaları kullanmak ise, şu noktalarda istemci taraflı uygulamalara üstünlük sağlamaktadır:
1. Web tarayıcılarında betikler için standart bulunmamaktadır. Bu nedenle bir tarayıcıda çalışan bir betik diğerinde çalışmayabilir. Tarayıcıların Java Appletleri yorumlamada kullandıkları Java sınıflarının versiyonu tüm Appletleri çalıştıramayabilir.
2. Bant genişliğini kullanım açısından, işlemlerin önemli bir bölümünün sunucu tarafında yapılması gerekir.
3. Uygulamaların güncel tutulması ve bunu yaparken de istemciler üzerinde değişiklik yapılmayıp sadece sunucu üzerinde (tek bir merkezden) gereken değişikliği yapmak tercih edilir.

Yukarıda genel olarak verilmeye çalışılan Web programlama dillerinin türleri ve detayları aşağıda sunulmuştur.

 
2.1.CGI

Web geliştiriciler statik sayfalardan, akıllı dinamik sayfalara geçmek istediklerinde, kısa adı CGI olan “Common Gateway Interface” (Ortak Giriş Arayüzü) teknolojisini geliştirdiler. Bu geliştiricilerin asıl istediği, Web sunucusu üzerinden sunucu tarafında programlar çalıştırabilmekti.

Bu yeni teknolojiye “Common Gateway” denilmesinin üç önemli sebebi vardır:
• CGI programları sunucudan bağımsızdır,
• CGI programları hemen her dille yazılabilir ve
• Hemen her istemcide çalışabilir.
CGI programlarında temel fikir, uygulamaların mantık katmanının, sunucu tarafında oluşturulmasıdır.

 
2.2.ASP

ASP, yani Active Server Pages (Aktif Sunucu Sayfaları) Microsoft firması tarafından klasik HTML sayfalarına dinamik bir yapı kazandırmak amacıyla ortaya çıkarılmış bir teknolojidir. ASP de bu yeni teknolojinin yeni bir parçası olmuştur. Web sunucu programları, sabit disk üzerinde yer alan bilgileri istemcinin tarayıcı programına göndermekle sınırlı olan bir yapıya sahiptir.

Web sunucusunun kullanıcıya statik bilgi sunmasının yanı sıra ziyaretçiden de veri kabul etmesinin gerekli olacağı düşünülür. Böylelikle Web sitesi üzerinden kullanıcının taleplerine göre tepki veren bir bilgi sunumu gerçekleşmiş olacak, ayrıca ziyaretçiden de veri alınabilecek bir yapı kurulmuş olacaktır.

Microsoft ASP, etkileşimli Web sayfalarını oluşturmak, güçlü ve hızlı Web uygulamalarını geliştirmek için, sunucu tarafında işleyen komutlar dizisidir. Tasarımı yapılmış bir ASP uygulaması uzantısı .asp ile kaydedilmiş olan bir metin dosyası içerisinde yer almaktadır. Başka bir ifadeyle ASP, JavaScript gibi, VB Script gibi komutları, düz yazı dosyası olarak kaydedilen ve çalışabilmesi için yorumlayıcıya ihtiyacı olan bir dildir. Sunucu kendisinden .asp uzantılı bir dosya talep edildiği zaman, dosyada yer alan komutları kontrol edip işler. Yani uzantısı .asp olan her dosya, istemci bilgisayarına gönderilmeden önce sunucuda ASP.DLL ismi verilen bir DLL'de çalıştırır.

Bilgisayar programcılarının geliştirdikleri uygulamaları dünyanın her yerinden erişilebilecek bir platforma kavuşturmak ASP ile mümkün olmuştur.

ASP dosyaları;
1- Ziyaretçi tarafında çalışan HTML komutlarını,
2- Veritabanına bağlanmayı, veritabanı işlemlerini belirleyecek cümleleri,
3- Yürütülecek işlemler zincirinin hizmet ettiği çeşitli görevleri sağlayan COM bileşeni çağrılarını içermektedir

 
2.3.PHP

PHP, bir betik dilidir; yani kodları düz yazı dosyaları halinde kaydedilir ve kullanılacağı ortamda bir yorumlayıcı tarafından yorumlanır. PHP Betikleri çalıştırabilmek için bu dili yorumlayabilen bir program gereklidir. Bu programın tek başına çalışması mümkün olduğu gibi, Web sunucu tarafından da çalıştırılabilir.

İster kişisel bilgisayarda, ister Internet ortamında olsun, bir Web Sunucu, ziyaretçinin talep ettiği dosya adının uzantısı olarak .php, .php2, .php3, veya .php4 görünce, işlem yapmaya başlar. Web sunucuya bu sayfayı olduğu gibi alıp ziyaretçinin tarayıcısına göndermek yerine, önce PHP yorumlayıcıyı çağırır. PHP yorumlayıcısı, kendisine teslim edilen bu belgede önce "<?PHP" ve "?>" ayraçları arasındaki PHP kodlarını seçerek alır ve işlemi yapar. Bu işlemin sonunda ortaya çıkan ürün eğer ziyaretçiye gönderilecekse, HTML etiketleri içinde gönderilir; yani ziyaretçi asla PHP kodlarını göremez. "<?PHP" ve "?>" ayraçların içinde kalan kodlar, yapılacak işlemin komutlarıdır. HTML ile yetinmeyip, PHP kullanılmasının sebebi, bu komutların HTML'in yapamayacağı şeyleri yapmasıdır.

HTML'in yapamayacağı şeylerin başında, Web sunucusunda yapılacak işler vardır. Sözgelimi HTML etiketlerini kullanarak, Web sunucusundaki bir veritabanı dosyasını açıp, içindeki veriler okunamaz. HTML etiketleri ile Web ziyaretçisinden bilgi edinebilir ve bunlar sunucuya yollanabilir. Bu bilgileri, işe yarar şekle sokmak için, sunucuda çalışan bir program gerekir. Sunucuda çalışan program, EXE, DLL veya Java Server Pages gibi bir gerçek program veya PERL, ASP ve PHP gibi betik diliyle yazılmış bir program olabilir.

 
3-Uygulamalar

Bu bilgiler ışığında, CGI, ASP ve PHP Web programlama dilleri kullanılarak aynı işlemi yapan üç ayrı uygulama hazırlanmıştır. Uygulama yapılırken ulaşılması istenen amaç; günümüzde yaygın olarak kullanılan Web programlama dillerinin performans analizini yapmaktır.

Örnek uygulama olarak; Web’de yayımlanan tüm Web siteleri için kullanılabilir olan, site içi üyelik sistemi seçilmiştir. Üyelik sistemi, günümüzde geçerliği olan CGI, ASP ve PHP Web programlama dilleri kullanılarak ayrı birer uygulama olarak yapılmıştır. Tüm bu uygulamalar yerel olarak çalıştırılarak, test sonuçları elde edilmiştir. Örnek program uygulamalarında sayfada hata olmaması durumunda hafızaya fazla iş düşmemektedir. Yapılan değerlendirmelerde, her bir uygulamada %1 ile %3 arasında hafıza kullanımında farklılıklar görülmüştür. Bu nedenle, uygulamaların üç aşamada CPU’ya bindirdiği yük gözlenerek şekil .1, şekil .2 ve şekil 3’te çıkarılmıştır.

1. Giriş sayfasının yüklenmesinde:
Giriş Sayfası
0%
20%
40%
60%
80%
100%
120%
1 2 3 4 5 6 7 8 9 10 11 12 13
Zaman (msn) CPU Kullanımı (%)
CGI
ASP
PHP
Şekil 1. Giriş Sayfası Yüklenirken CPU Kullanım Oranı.

2. Sisteme kayıtlı kullanıcının, kullanıcı adı ve parola girmesiyle, bu bilgilerin kontrolü ve yeni sayfaya yönlendirilmesinde:

3. Sisteme yeni üye kaydının yapılması sürecinde:
Şekillerden görüleceği üzere PHP ile yapılan uygulama her üç değerlendirmede de en iyi sonucu vermektedir.

Üye Girişi
0%
10%
20%
30%
40%
50%
60%
1 2 3 4 5 6 7 8 9 10 11 12 13
Zaman (msn)
CPU Kullanımı (%)
CGI
ASP

PHP
Şekil 2. Üye Girişi Yapılırken CPU Kullanım Oranı
Yeni Üye Kaydı
0%
10%
20%
30%
40%
50%
60%
1 3 5 7 9 11 13 15 17 19
Zaman (msn)
CPU Kullanımı (%)
CGI
ASP
PHP
Şekil 3. Yeni Üye Kaydı Yapılırken CPU Kullanım Oranı

 
4-Sonuçlar

Günümüzde yaygın kullanım alanı bulmuş olan Web programlama dillerinden CGI, ASP ve PHP dilleri incelenmiştir. Web tasarımında HTML ile oluşturulan sayfaların dinamik içerikli olabilmesi için gerekli olan Web programlama dilleri ile uygulamalar geliştirilmiştir. CGI, ASP ve PHP kullanılarak birer örnek uygulama üzerinde, performans değerlendirmesi yapılmıştır. Performans değerlendirmesi; seçilen uygulamada, en çok kullanılan bölümler olduğu için, her bir uygulamada ki giriş sayfası, üye girişi ve üye kaydı bölümleri üzerinde yapılmıştır. Her bir bölümün çalıştırılması durumunda, CPU’yu meşgul etmesi % cinsinden ölçülmüştür. Sunucu bilgisayarında, uygulama öncesi CPU’nun %3 oranında meşgul olduğu şekil 1, 2 ve 3’te görülmektedir.

Aşağıda ki Tablo 1’de ise bu değerlendirme oranlarının ortalamaları verilmiştir. Buradan da görüleceği üzere CPU’ya bindirdiği yük açısından değerlendirildiğinde, PHP ~9.3 % ile en iyi performansı sağlamaktadır.

Giriş Sayfası Üye Girişi Üye Kaydı Toplamda
CGI 64 20 17 ~33.6
ASP 58 11 10 ~26.3
PHP 10 10 8 ~9.3
Tablo 1. Ortalama CPU Kullanımı (%)

 
 
 
 
 
     
 
Kullanım Şartları    -    Gizlilik Politikası    -    Site Haritası ©2013 Necmettin Şimşek Tüm Hakları Saklıdır - V1.2.0.079l