Web Kontrollerine Giriş
ASP ile ASP.NET arasında ne gibi farklar olduğu uzun süredir forumlarda yer alıyor. Yetersiz cevaplar nedeniyle de insanlar farkın dosya uzantısındaki "x" harfi olduğunu düşünebiliyor. Bazen ASP.NET ile PHP karşılaştırılıyor ve hangisi daha iyi anketleri düzenleniyor. Oysa bu üç web uygulama arayüzünün kategorileri farklı ve birbirleri ile kıyaslanmamaları gerekiyor. Klasik ASP ile PHP yi karşılaştırmak ne kadar akıllıca olsa da bunlardan birisinin ASP.NET ile karşılaştırılması çok zor ve mantıksız olur. Çünkü ASP.NET in çok farklı bir motoru ve çalışma ortamı var. ASP ve PHP kodları basit anlamda server ''da yorumlanıp html kodlarına dönüştürülüyor ve client ''e yollanıyordu. Gelen koddaki html kodlarını yorumlayan (interpret) tarayıcı sayfayı kodlayanın demek istediğini iletiyordu client ''a..
ASP.NET sayfaları ise ciddi anlamda inşa ediliyorlar (build). Bir ASP.NET sayfasın client tarafından talep edildiğinde (request) server''ın nasıl tepki (response) verdiğini kısaca özetlemeyi yeğliyorum. Şekilin de anlattıklarıma faydası olacaktır.
Client tarafından gelen talebi değerlendiren server gerekli dosyayı bulur. Dosyanın uzantısı ".aspx" ise işlenmek üzere (processing) ASP.NET moturuna gönderilir. Bu dosyaya gelen ilk talep ise veya dosyanın içeriği/kodu değiştirilmiş ise kod uygun dilin derleyicisi tarafından CLR (Common Language Runtime) ile yürütülmek üzere MSIL (Microsoft Intermediate Language) ''e çevrilir. Derlenmiş kod çalıştırılır. Sonuçta ortaya çıkan HTML kodu client ''e gönderilir.
Makalelerimde basit kod örnekleri verip ASP.NET ''in yeteneğini göstermeye çalışacağım. Bu amaçla da ilk olarak herkese tanıdık geleceğini düşündüğüm bir örneğe başvuracağım. Biliyorsunuz programlama dilleri hakkında hazırlanmış kitaplar ve tutorial/öğretici ''lerin dil hakkındaki ilk örnekleri çoğunlukla "hello,world" olur. Bu örnek uygulanarak programlamaya giriş yapılır. "Hello, world" uygulaması ne kadar basit olsa da dil hakkında çok şey söyler. İki elin parmaklarıyla sayılabilecek sayıda kod satırı içeren bu uygulama, ayrıntıya girmeden kısaca maddelediğim şu fikirleri edinmemizi sağlar.
Örneğin, C ile yazılmış bir "hello, world" kodundan şunları anlarız.
1. C dilinde programlar main() isimli fonksiyonun içeriğini yerine getirerek başlarlar.
2. printf() fonksiyonunu kullanmak için stdio.h dosyası include edilir.
3. Ekrana çıktı printf() fonksiyonu ile alınır.
4. Fonksiyon ve döngülerin başlangıç ve sonlarını { ve } ler belirtir.
Neden C ''de "hello, world" örneğinin yararlarından bahsediyorum ? Amacım C öğretmekmi, tabii ki hayır. Yazıya şöyle devam edelim. Bu örneği vermekteki amacım ASP.NET hakkında içine düşülen bir yanılgıyı işaret etmekti. "Hello, world" örneğinin icat edilme amacının "erkana birşeyler yazmak" değil örneği inceleyen kişinin (öğrenmek isteyen kişi oluyor) "demek ki bu iş böyle oluyormuş" demesi olduğunu göstermekti. Son zamanlarda deminden beri defalarca kez tekrar ettiğim iki kelimenin ekrana yazılmasıyla ilgilenen kodun ASP.NET versiyonlarını görüyorum ve bildiğini düşünenler bilmediğini düşünenlere bu kodu göstererek "işte ASP.NET böyle birşey" diyorlar. Fakat bu kodların klasik ASP ''den farklı bir yeri olmuyor. Belki de tek fark dosya uzantısının ".aspx" olması oluyor. Bahsettiğim kod en basit haliyle şu:
<% response.write("hello,world") %> |
Acaba bu örnek bize gerçekende ASP.NET in nemenem birşey olduğunu gösterir mi ? Bu koddan response.write ifadesinin ASP.NET sayfalarında da kullanılabileceği sonucu çıkarabilecek olsak bile ASP.NET ''in nasıl birşey olduğu konusunda en küçük bir fikir alamıyoruz. Ekrana çıktı almak için kullandığımız kod klasik ASP ''nin en çok kullanılan deyimlerinden birisi ve, ASP açılış/kapanış tag lerimiz aynı ve diğer 4 satır HTML kodlarından oluşuyor. Bu koda ve title tag inde yazana saygı gösterirsek, ASP ile ASP.NET arasında fark olmadığını düşünebiliriz.
Peki gerçekten ASP.NET örneği diyebileceğimiz şekilde yazamazmıyız bu basit kodu. Yazalım ama kodun ilk bakışta ASP ''den farklı olduğunu gösterecek birşeyler ekleyelimki sayfamızın başlığı "İlk ASP.NET kodum" olabilsin.
<html><head><title>İlk ASP.NET kodum<body> <asp:Label id="etiket" runat="server"/> |
