ASP’nin doğuşu
Yeni bir yazı dizisi ile sizlere merhaba diyoruz. Bu yeni yazı dizisinde ASP’yi başlangıç ve uzman kullanıcılar olmak üzere iki bölümde inceleyeceğim. Başlangıç bölümü ASP ye ilk defa başlayacaklar hedef alınarak hazırlanacaktır. Uzman bölümü ise tamamen ASP bilgisi olanların bu bilgileri ile performanslarını artırmaları veya yeni kod teknikleri ile yeni teknolojileri öğrenerek uygulamalarını konu almıştır.

Şu anda okumakta olduğunuz yazı ASP’ye yeni başlayanlar ve geliştirmek isteyenler için hazırlanmıştır. Eğer seviye size düşük geldi ise bir sonraki makaleye başvurmanız tavsiye edilir. Bu yazı dizisinde yer alacak konular okuyucuların yorumları doğrultusunda şekillenecektir. Lütfen anlatılmasını istediğiniz konuyu bana iletiniz.

World Wide Web (www) bir dizi deney sonucu olarak CERN labaratuarlarında uzun süren çalışmalar sonucunda geliştirilmiştir. Tim Berners-Lee nin başkanlığını yaptığı geliştirme grubu internet üzerinden dataların uzak yerlere iletilmesi üzerine yaptıkları araştırmalar sonucunda HTTP denilen protokolü oluşturmuşlardır. Ve bu protokolle birlikte HTML denilen basit ve esnek olan programlama dili bulunmuştur. Bu dil web browserler üzerinde metin ve grafik görüntülemeye imkan veriyordu. Ve yine bu dille (HTML) sayfalar arasında geçişe olanak tanıyan “Link” deyimide doğmuş oldu.

Bu yeni başlayan akım hızla geliştirilerek şu anda kullanılmakta olan HTML 4.0 versyonuna kadar ilerlemiştir. Günümüzde kullanılan HTML ilk bulunana göre bir çok ekstra özellik içermektedir. Bu özellikler içinde en önemli olanı esnek metin biçimlendirmedir. (<font> elementi yardımı ile) ikinci olarak sayfa yapısının tamamen esnek şekilde yapılandırılmasıdır (Tablo ve Frame’ler kullanılarak).

HTML dilinin standartlaşması ile metinler grafikler resimler ve diğer tüm belgeler network üzerinden diğer kullanıcılar ile paylaşılmaya başlandı. Fakat içerik yapısı tamamen sabitti ve herşey HTML içinde tanımlıydı değiştirilemezdi. Server’ın (sunucu) sunduğu dosyaları istemci (client) işletim sistemi farklılığı olmadan işleyebiliyordu.

HTML in gelişmesi ile birlikte kullanıcılara web sayfalarına bilgi girebilmelerine olanak tanında (<input> elementi yardımı ile). Bu şekilde bir çok uygulama geliştirildi çünkü artık kullanıcı da sunucuya bilgi gönderebiliyordu. Fakat çoğu uygulamada bu kullanıcıdan gelen bilgilerin anında işlenmesi ve yeniden bir text bazlı HTML dökümanı hanine getirilmesi gerekiyordu. Bu ise hiç hızlı bir yöntem değildi.

Bu zorluğu aşmak isteyen geliştiriciler kolları sıvıyarak CGI (Common Gateway Interface) arabirimini geliştirmeye başladılar. Bu arabirimi standart haline getirdiler ve tamamen “C” dili üzerine kurdular. Cgi-bin dizinide bu şekilde doğmuştur (“bin” terimi derlenmiş “C” kodu olmasından dolayı “binary code” anlamında eklenmiştir). İlk uygulamalar derlenmiş ufan programcıklar halinde olmuştu. Fakat bu haliyle bile kullanışlı değildi çünkü dosya içinde yapılacak en ufak değişiklikte bile yeniden derlenmesi gerekmekteydi. Buda CGI ın kullanımını olumsu yönde etkiliyordu.

Bu kısıtlamaları kendine sınır olak görmeyen geliştiriciler yeni bir script dili geliştirdiler. Bu dil “Practical Extraction and Reporting Language” yani PERL adını aldı. Bu dil sunucu ile iletişim halinde olan ilk dildi yani “C veya C++” dilleri ile yazılan scriptin her seferinde derlenmesi derdi ortandan kaldırılmış oldu.

Perl hala populer bir dil olarak çoğu uygulamada özellikle de Unix ve Linux tabanlı sistemlerde kullanılmaktadır.

Server-Tabanlı Script Teknolojileri
Şimdiye kadar anlatdığım CGI dilleri web sunucusu üzerine bir yama yapmadan yada ekstra bir program yüklemeden çalışmamaktadır. Bu programlar kullanıcıdan gelen isteği algılar ve isteğe göre dosyayı okur daha sonra onu sunucu içinde işler ve bir çıkış dosyası oluşturarak kullanıcıya sunarlar.

Perl ilk populer sunucu-tabanlı uygulama geliştirme dili olarak litaratüre geçmiştir. Fakat bu dil çok fazla gelişim geçirmiştir. Özellikle de Unix ve Linux tabanlı sunucularda yeni nesil programlama dili olan PHP (Personal Home Page) ye yerini bırakmıştır.

Microsoft firması web sunucu sektöründeki en önemli atılımını “Windows NT 3.51” ve bu işletim sistemine entegre halde olan “Internet Information Server 1.0” (IIS) sayesinde yapmıştır. Bu yazılım geçmişe dönük olarak CGI desteklemekle (her şekilde C ve C++ dili ile geliştirilmiş uygulamaları) birlikte yeni bir arabirim içeriyordu.

Bu arabirime “Internet Server Aplication Programing Interface” yani ISAPI adı verilmiştir. Bu arabirim sayesinde web sunucu perl dilinin tüm esnekliği standart hale getirilmiş oldu. Bu atılımla birlikte tüm yazılım geliştirciler ISAPI ile uyumlu olan yazılımlar geliştirmeye başladılar.

Microsoft ISAPI ile berabe yeni teknoloji olan ASP’yi duyurdu. ASP teknolojisi IIS ile ISAPI sayesinde bağlanmış oldu. ASP den önce en çok “Internet Database Connector” (IDC) kullanılmaktaydı.

ASP ile IIS ilişkisi
ASP sadece kendisi için yazılmış olan DLL i kullanır (asp.dll). Bu dosya standart olarak web sunucu da yer almaktadır (sadece IIS 1.0 sonrası) (Winnt\System32\ inetsrv dizininde yer almaktadır). Bu DLL sadece ASP dosyalarını (genellikle .ASP uzantılıdırlar) okuyup içerisindeki script komutlarını işlemek ve sonuçlarını HTML ve metin içeriği ile birlikte Web gözatıcısına yollamak görevini üstlenir.
IIS Uygulama Yapıları
IIS içerisindeki işlemleri daha iyi anlayabilmek için uygulama yapılarının windows içinde nasıl çalıştığını anlamalıyız. Web sunucudaki (IIS) her web sitesinin sunucu üzerinde yer alan bir kök dizini vardır. Varsayılan (Default) web sitesi otomatik olarak c:\inetpub\wwwroot dizinini kendine kök dizini atar (değiştirilebilir). Her yeni açılacak web sitesi için bir kök dizini belirlenmesi zorunludur. Sunucu üzerindeki web sitelerini görmek için IIS yönetim arabirimi olan “Internet Service Manager” programı kullanılır.
IIS üzerinden default web sitesine sağ tıklayıp özellikler seçeneğini seçtiğimiz zaman açılacak olan “default web site özellikleri” ekranından “home directory” tabına tıklanır. Gelecek olan sekmeden “configration” butonuna basarak uzantılar ile ilişkilendirilen arabirimler görülebilir.
ASP dosyalarının işletilmesi
Asp uzantılı dosyaların asp.dll yardımı ile derlendiğini bilmekteyiz peki ya bu derlenme nasıl olmakta.

Birinci basamak olarak asp dosyası içerisinde server taraflı kod olup olmadığı denetlenir. Eğer dosya içerisinde sunucu taraflı işletilecek bir kod bulunmaz ise IIS tarafından direkt istemciye gönderilir. Bu windows 2000 de yeni bir özellik olarak eklenmiştir. Bu sayede .asp uzantılı dosyaları kullanmamıza olanak tanır (içerisinde sunucu taraflı çalışacak kod bulunmayan dosyalara bile asp uzantısı verilebilmektedir).

Eğer DLL içinde server taraflı çalışacak bir kod olan dosya ile karşılaşırsa; satır satır bu dosyayı işleterek script blokları içerisideki komutları işletir ve çıktırısını yine aynı yere gelecek şekilde bir çıkış dosyasına kaydeder. Bu dosyada istemci bilgisayarına gönderilerek işlem tamamlanır.

Bilgi : IIS in ilk versiyonlarında DLL asp dosyalarını satır satır okuyup satır satır işleyip yine satır satır çıktı alırdı. Buda performansta ciddi bir düşme meydana getirirdi.

ASP ile IIS ilişkisi
Asp script motoru (asp.dll) dosya içerisinde sunucu taraflı çalışacak kod olup olmadığını iki şekilde anlar:

<% ve %> kullanarak

En çok kullanılan yöntem olup script bloğu başlangıcına “<%” ve sript bloğu bitişine “%>” yazılarak arasında kalan kısıma sunucu taraflı kod yazılır.

CODE
<HTML>
<Body>
Bu bir HTML metinidir
<%
Rem burasi sciprt bloğudur
%>
</Body>
</HTML>

********** elementini kullanmak

Nadir olarak kullanılan bu yöntem ile sunucu taraflı kodun yer aldığı script bloğunu ********** elementi ile açıp </scritp> elementi ile bitirilmesi baz alınmıştır. Bu şekilde ki kullanımda element içerisine yazılacak olan “Runat” özelliği sayesinde istemci veya sunucu taraflı çalışma özelliği eklenmiştir.

CODE
<HTML>
<Body>
Bu bir HTML metinidir
<script runat=”server”>
Rem burasi sciprt bloğudur
</script>
</Body>
</HTML>

Bilgi : Server Side Includes (SSI) kullanarak harici dosyaları da asp dosyamız içerisine dahil edebiliriz. Bu konuyu ilerideki derslerimizde ve uzmanlar için asp yazı dizisinde ayrıntılı olarak ele alacağız.
Script Dilini Belirlemek
IIS standart olarak iki script motoru (scripting engine) ile beraber gelir. Bunlar “VBScript” ve “Jscript” dir. Bu motorlar birlikte bulunurlar. Bunlar dışında TCL ve PerlScript gibi diğer script motorlarıda mevcutdur fakat bunlar IIS ile beraber gelmez sadece sonradan eklenir.

ASP ye biz hangi script motorunu kullanması gerektiğini söyleyebiliriz. Bu genelde standart olarak IIS de ayarlanmış haldedir. Bu tanımı yapmanın en kolay yolu ASP sayfamızın ilk satırında özel içerik tanımı yapmaktır. Aşağıdaki şekilde yapılır.

CODE
<%@Language = “dil”%>

Bu şekilde sayfanın VBScript mi yoksa Jscript mi kullanacağı tanımlanmış olur. VBScript için

CODE
<%@Language = “VBScript”%>

yazabiliriz. Aynı Mantıkta Jscript için


CODE
<%@Language = “JScript”%>

Bu tanımlama yapılsın yada yapılmasın script bloğumuzu ********** elementi ile tanımlamışsak istediğimiz dili oradada tanımlayabiliriz.

CODE
<HTML>
<Body>

Bu bir HTML metinidir

<script Runat = ”server” Language = “VBScript”>
Rem burasi sciprt bloğudur ve dil olarak VBScript Kullanılmıştır
</script>

<script Runat = ”server”
Language = “JScript”>
Rem burasi sciprt bloğudur ve dil olarak JScript Kullanılmıştır
</script>

</Body>
</HTML>