Asp-1
ASP teknolojisi ile oluşturduğunuz sayfaları, yani içinde ASP teknolojisinin
gerektirdiği kodlar bulunan HTML dosyalarını, .asp uzatmasıyla kaydederiz. Bu
dosyalar talep edildiğinde, Web Server programı, eğer ASP teknolojisini tanıyorsa,
talep edilenin ASP sayfası olduğunu dosya adının uzatmasından anlar; ve bu sayfayı
ziyaretçiye yollamadan önce kendisi işleme tabi tutar. ASP sayfamızdaki kodlar
büyük bir ihtimalle bir takım dinamik işler yapacak, örneğin hesaplamalar, araştırmalar,
veri tabanından veri çekme, dosya sisteminden dosya isteme gibi görevlerini
yerine getirecek, ve ortaya çıkacak olan HTML dosyasını ziyaretçiye gönderecektir.
Diyelim ki bu kitapçıktaki örnekleri yaptınız ve ücretsiz Site yeri edinmiş
olduğunuz Hosting firmasının bilgisayarındaki sitenize yerleştirdiniz. Sonra
Browser’ınızın URL hanesine bu ASP dosyasının adını yazdınız ve sayfayı talep
ettiniz. Karşınıza, ya ASP sayfasının içindeki kodları görüntüleyen veya sadece
sayfanın HTML unsurlarına yer veren bir sayfa geldi! Bu Server’ınızın ASP anlamadığını
gösterir. ASP sayfalarınızı ASP-uyumlu Web sunucularında çalıştırabilirsiniz.
Sitenizde ASP sayfaları bulunacaksa ve ücretli evsahibi firmalardan site alanı
edinecekseniz, sunucunun ASP-uyumlu olmasına dikkat edin.
Şimdi, ilk ASP’mizi çalıştırdığımıza göre, biraz teknikten söz edebiliriz.
HTML’in ziyaretçinin bilgisayarında çalıştığını biliyorsunuz; istemci Browser,
sizin URL hanesine adını yazdığınız HTML dosyasını yine adresteki sunucu Web
Server’dan ister. Web Server da bu dosyayı bulur ve içinde kayıtlı resim ve
diğer unsurlarla birlikte istek sahibine gönderir. Fakat kimi zaman Server’a
bize sadece bir dosyayı göndermesini değil, fakat bu dosyanın içinde kayıtlı
komutlar varsa onları icra etmesini de bildirebiliriz. Bunu yapmanın bir yolu
CGI programlarıdır. Bir diğer yolu ise ASP’dir. Web Server, kendisinden bir
ASP belgesi talep edildiğinde, kendi kendine “Dur bakalım! ASP istendiği zaman
hemen alıp göndermek yok, önce bunu ASP.DLL programına gönderelim.. Ondan sonra
işimize devam ederiz!” der
Asp-2
ASP.DLL, kendisine bir .asp dosyasının geldiğini görünce, hemen ASP’lerin
Anayasası olan global.asp’nin çalışıp çalışmadığına bakar. global.asa, tıpkı
diğer ASP dosyaları gibi bir düz yazı dosyasıdır ve ASP programlarının çalışma
koşullarını düzenleyen kuralları içerir. (Bu dosyayı sırası gelince ele alacağız.)
Yukarıdaki örnekte gördüğümüz gibi ASP dosyası hem HTML kodları içerir, hem
de içinde bir Script diliyle yazılmış kodlar vardır. ASP’ye “program” özelliği
kazandıran bu Script dili ile yazılmış kodlardır. ASP.DLL, önce gelen .asp dosyasında
hangi Script dilinin kullanıldığına bakar ve bunun için gerekli ortamı oluşturur;
yani bu Script dilini yorumlayacak programı çalıştırır; bu program Script’i
yorumlar ve icra edilecek komutları icra eder; ASP.DLL, icra edilen komutlar,
işletim sisteminin yardımını istiyorsa (örneğin bir veritabanından veri çekmek
gibi, veya dosya sistemine bir dosya açtırmak, yazdırmak, sildirmek gibi) bu
yardımın edinilmesini de sağlar. Bütün bu işlerin sonunda sizin yazdığınız HTML
kodlarına ek yapmak (örneğin bir tablonun içini, çekilen verilerle doldurmak
veya dosya sisteminden edinilen bir dosyanın içeriğini sayfaya aktarmak gibi)
gerekiyorsa bu ekleri ASP.DLL yapar.
ASP.DLL, kendisine sevk edilen dosyayı satır satır okur ve önce dosyadaki ASP
kodlarının gerektirdiği HTML değerlerini bulur; yani önce ASP icra edilir, gereği
yerine getirilir. Sonra HTML bölümleri ile birleştirilip sonuçta sunucuya saf
ve temiz bir HTML sayfası gönderilir. Bu sayfanın içinde bir satır bile ASP
kodu bulunmaz. Eğer sayfanıza ziyaretçinin Browser’ında çalışması amacıyla Javascript
veya VBScript kodları koydu iseniz, elbette bu kodlar HTML’in parçası olarak
ziyaretçiye gidecektir. Fakat giden sayfada artık ASP’ye ilişkin hiç bir şey
kalmamış olacaktır.
Biliyorsunuz, mevcut sürümleri itibariyle Browser programları içinde Netscape
VBScript dilini anlamaz. ASP sayfalarımızda istediğimiz Script dilini kullanabiliriz;
VBScript de kullanabiliriz. Netscape’in VBScript anlamamasıyla, ASP sayfalarımızda
VBScript kullanmamızın bir ilgisi yoktur; çünkü ASP sayfasının ortaya çıkartacağı
HTML kodunda ASP dolasıyla VBScript bulunmayacaktır; dolayısıyla ASP sayfalarınız,
Netscape tarafından da anlaşılıp, görüntülenebilecektir. Tabiî ortaya çıkacak
HTML sayfasının Netscape tarafından arzu ettiğiniz gibi görüntülenebilmesi için
Netscape’in anlayabildiği dinamik HTML unsurlarına yer verme zorunluğunuz hâlâ
devam ediyor.
Asp-3
ASP tekniğinin nasıl çalıştığını anladığımıza göre şimdi biraz terminoloji
serpiştirelim ki, Webmaster meslektaşlarınızla biraraya geldiğinizde, gerçekten
ASP ile mesela Javascript arasındaki farkı bildiğiniz belli olsun. ASP bir Server-Side
Script teknolojisidir. Internet’te istemci ile sunucu arasındaki çizginin sunucu
tarafına Server-Side (Sunucu Tarafı), istemci tarafına da Client-Side (evet,
doğru tahmin ettiniz: İstemci Tarafı) denir. Server-Side’da çalışan Script programları
da “Server-Side Script” (Sunucu Tarafı Script’i) adını alır. Dolayısıyla şöyle
bir sayfa yaparsanız (merhaba.htm), bu sayfada Client-Side Script teknolojisi
kullanmış olursunuz:
<HTML>
<HEAD>
<TITLE>JavaScript ile Tarih</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY BGCOLOR=WHITE>
<H1>Merhaba Dünya</H1>
<H2>Bugün:</H2>
<H3>
<SCRIPT LANGUAGE=JAVASCRIPT>
<!--
tarih = new Date();
document.write(tarih);
//-->
</SCRIPT>
.</H3>
</BODY>
</HTML>
HTML sayfanıza <SCRIPT>..</SCRIPT> etiketleri arasına yerleştireceğiniz
bu kodun çalışması için Server’ın hiçbir şey yapması gerekmez; kodu Browser
çalıştıracak ve günün tarihini size (Türkçeleştirmediğiniz için İngilizce olarak)
bildirecektir. Şimdi, bir de Server tarafında çalışan Script içeren sayfaya
örnek verelim (merhaba2.asp). Bu kodu yazarken kapanan Script etiketinden sonra
nokta olduğuna dikkat edin:
<HTML>
<HEAD>
<TITLE>VBScript ile Tarih</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY BGCOLOR=WHITE>
<H1>Merhaba Dünya</H1>
<H2>Bugün:</H2>
<H3>
<SCRIPT LANGUAGE=VBScript RUNAT=SERVER>
response.write(Date)
</SCRIPT>.
</H3>
</BODY>
</HTML>
Asp-4
Bu sayfada kullandığınız Script’i VBScript ile yazdığınızı farkettiniz. Yani?
Bu HTML sayfası, Netscape’de görüntülenemez! Hayıır. Görüntülenir, çünkü Script’i
Netscape değil, Server çalıştıracak. Bunu <SCRIPT> etiketinin içindeki
“RUNAT” özelliği ile belirtiyoruz. (“Run,” çalıştır; “at” ise “içinde, üzerinde”
anlamına gelir. “RUNAT” “...de çalıştır” gibi bir anlama sahiptir.) Burada RUNAT’in
karşısına yazdığımız SERVER ifadesi ile, Script’in Browser’a gönderilmeden önce
Server’da çalıştırılmasını sağlıyoruz; Server’a “Bu Script’i Server’da Çalıştır!”
demiş oluyoruz.
Netscape bu sayfayı görüntüleyecektir; ama galiba bir terslik var. merhaba.asp
ile merhaba2.asp’nin ekran görüntülerini ve kodlarını karşılaştırırsanız, birinde
noktanın olması gereken yerde olduğu halde diğerinde noktanın yanlış yerde olduğunu
görüyoruz. Oysa iki kodu da karşılaştırırsanız, ikisinde de nokta işareti, kodun
bittiği yerde yer alıyor. Yukarıda ASP’nin icrasında HTML sayfa Server’a verilmeden
önce ASP.DLL tarafından içindeki ASP kodlarının icra edildiğini söylemiştik.
Nitekim, burada gördüğünüz gibi, ASP.DLL, HTML sayfayı içinde Server’ın çalıştırması
gereken bölümle birlikte Server’a gönderdi; Server kendisine gelen dosyada kendi
icra etmesi gereken (RUNAT=SERVER özelliği verilmiş olan Script’i) bölümü icra
etti ve sonucu Browser’a aktardı. Yani, Server’ın çalıştırdığı Script’in sonucu
sayfaya ASP’den sonra eklendi. Dolayısıyla, nokta, yanlış yerde kaldı.
Bundan çıkartacağımız sonuç şu olacak: ASP sayfalarımıza, Browser, Server ve
ASP.DLL tarafından çalıştırılacak kodları yerleştirirken, sırasına dikkat edeceğiz
ve hangi sırada icra edilmelerini istiyorsak, o sırada koyacağız.
Server ile ASP.DLL’in ilişkisi sadece Script dilini çalıştırmaktan ibaret değildir.
ASP, istemciden gelen HTTP İstemi (Request) ve HTTP’ye giden Karşılık (response)
unsurlarından tutun, ActiveX Data Objects (ADO, AcvtiveX Veri Nesneleri) aracılığıyla,
işletim sisteminin sunacağı veritabanına erişim imkanını ve işletim sisteminin
sunduğu dosya yönetimine kadar bir çok imkanı kullanır. Bu “imkanlar” ASP’nin
eline geçtiği anda “nesne” (Object) sayılırlar Şimdi bu nesnelere biraz yakından
bakabiliriz.