ASP.NET 2.0
Web Form Kavramı
Geçen yazımda ASP.NET 2.0 ile çalışmak için gereken ortamın nasıl tesis edildiğini gördük.
Gerekli alt yapıları kurduk ve bir ASP.NET 2 uygulaması geliştirmek için hangi editörleri nasıl kullanacağımızı inceledik.
Son olarak da örnek bir uygulama geliştirdik.
Böylece ASP.NET ve ASP.NET 2.0 dünyasına adım atmış oldunuz.
Bu yazımda ASP.NET 2.0 sayfalarının temel yapısından olan “web Form” ve kontrollerini kavramsal olarak inceleyeceğiz.
Bir ASP.NET veya ASP.NET 2.0 uygulaması temel olarak “Web Form” lardan oluşur. Aslında “Web Form” bir HTML sayfasını ASP.NET uygulaması yapar.
Temel olarak bir bildirim olarak kullanılan “Web Form” içinde “kontrolleri” barındırır.
Editörünüzde ASP.NET uygulaması geliştirmek için bir aspx uzantılı sayfayı eklediğinizde size tanımlı olarak şöyle ifadeler sunar:
Bu ifadeler daha henüz tek bir satır kod veya bildirim yazmadığınız halde size sunulan çalışma ortamıdır.
Buraya dikkatlice bakarsanız, bir ASP.NET sayfasını klasik anlamdaki HTML sayfasından ayıran temel iki bildirimin bulunduğunu göreceksiniz.
Bunlardan ilki daha ilk bildirim olan sayfa başlığı, diğeri ise “form” ve “head” taglarında bulunan runat=”server” ifadeleridir.
Bütün bunları açıklamaya geçmeden önce ASP.NET uygulamalarının sunucu taraflı uygulamalar olduğunu aklımızdan çıkarmamalıyız.
Sunucu (server) – İstemci (Client) Taraflı Web Sayfaları
Bu iki kavramı duymuşsunuzdur.
Bilmeyenler için bu iki kavramı açıklamakta fayda görüyorum.
Çünkü eğer bir ASP.NET uygulaması geliştiriyorsanız bu iki kavramın işleyişini bilmenizde fayda var.
Bilenler bu kısmı atlayabilir.
Web’de sörf yapmak için kullandığımız browser’lar birer yorumlayıcıdır.
Onlar HTML ve kullanıcı taraflı script’leri (kodları) yorumlayarak bizlere gösterirler.
Browserların temel olarak yaptıkları iş budur.
Bunu yaparken web’de bir yerlerde bulunan (sunucuda) bilgileri sizin belirttiğiniz adres doğrultusunda bulurlar ve o sunucudan talep ederler.
Sunucu bu talebi yanıtlar.
Sunucu ilgili adrese ait veri, resim ve diğer bilgileri içeren HTML taglarını talepte bulunan browser’a gönderir.
Onun yaptığı sadece bulmak ve göndermektir.
Başka hiçbir şey yapmaz…. Bulur ve gönderir.
Talepte bulunan Browser’a gelen bilgiler HTML (veya script) formatında işlenmemiş bilgilerdir.
Bu haliyle okuyan kişi için çoğu anlamsızdır.
Ama browser için oldukça anlamlıdır.
Browser’ın görevi o bilgileri bizim için anlamlı hale getirmek yani browser ekranından kullanıcıya göstermektir.
İşte bu aşamada kendisine gelen HTML ve script tabanlı ifadeleri işlemden geçirerek (yorumlayarak) ve gerekliliklerini yerine getirerek, kullanıcıya gösterir.
Buraya kadar her şey çok açık.
Buradaki kritik nokta bu işlemlerin sizin bilgisayarınızda -diğer bir ifadeyle talepte bulunan istemcilerin kendi bilgisayarında- yapılıyor olmasıdır.
Bunun önemi ise sunucuya fazladan yüklerin binmemesidir.
Web uygulamaları geliştirmenin özünde sunucuya mümkün olduğu kadar az yük getirmek yatar.
Bir web sunucusu teorik –ve hatta bazılarında pratik - olarak binlerce, yüz binlerce istemciye hizmet eder, her biri için her işlemi yapması mümkün değildir.
Bunun için fonksiyonel olarak istemcinin bilgisayarında yapılabilecek işler istemcinin bilgisayarında yani kullanıcı taraflı yaptırılmalıdır.
Ancak bu her durumda geçerli değildir. Bazen kullanıcıya özel, sunucuyla koordineli olarak işlemler yapmak zorunluluğu doğar.
E-ticaret, e-mağaza, portallar ve diğerleri bu tarz uygulamalardır.
Zaten bunun için sunucu taraflı PHP, ASP.Net gibi teknolojiler vardır.
Bu bölümü bilmeyenler için uzun ve açık anlattım çünkü web programlamaya yeni başlayanlar için hiçbir zaman akıllarından çıkarmamaları gereken temel bir noktadır.
Şimdi tekrar yukarıdaki ifadelerimize dönersek, “runat=server” ifadeleri .NET için sunucu tarafını ifade eder. Bu ifadeyi gördüğünüz her kontrol sunucu tarafından “gözden geçirilecek ” ve eğer gerekiyorsa ona ait işlemler yapılacaktır.
Ancak bu gözden geçirme ve eğer gerekiyorsa işlem yapmanın “sunucuyu ekstradan” meşgul etmek anlamına geldiğini de unutmayalım.
Bunun karşılığında geliştirdiğimiz web uygulaması çok daha yetenekli, daha akıllı daha kontrol dâhilinde olacaktır.
Burada şunu da belirtmekte fayda var, “runat=server” ile meşgul etme sakıncası aslında ASP.NET 2.0 ile birlikte çok daha minimum seviyelere inmiştir.
HTML ve WEB Sunucu Kontrolleri
Tekrar konumuza dönecek olursak yukarıda da bahsettiğim gibi ASP.NET sayfası temel olarak web formlar ve bu web formların barındırdığı kontrollerden oluşur.
Aslında “ <form tag’I “ HTML ifadesidir.
Ancak yanına “runat=server” ifadesi geldiği anda ASP.NET sunucusu bu form alanının kendisine ait olduğunu ve içindekilere dikkat etmesi gerektiğini anlar.
Web form’ların içinde ise kontroller bulunur.
Bu kontroller de kendi içinde sunucu (web) ve HTML kontrolleri diye iki temel kategoriye ayrılır.
Temel diyorum çünkü sunucu kontrolleri kendi içinde farklı kategorilerde değerlendirilir. Örneğin VS 2005 editörümüzden bakacak olursak:
Kontrollerin Toolbox’da değişik kategoriler halinde kullanımımıza sunulduğunu görürüz. Bu kategoriler altındaki hemen her kontrol sunucu denetiminde yani “runat=server” ile çalışır.
Bunun istisnası HTML kategorisindeki kontrollerdir. Bunlar bildiğimiz HTML işaretleme diline ait elemanlardır ve kullanıcı taraflı yorumlanır.
HTML kontrollerinin yeterli olmadığı durumlar için sunucu web kontrolleri hizmetimize sunulmuş.
HTML kontroller mi? WEB Sunucu kontrolleri mi?
Temel prensip projelerimizi geliştirirken mümkün olduğu kadar HTML kontrollerini kullanmaktır. Ancak maalesef bu pratikte pek mümkün olmamaktadır.
Örneğin bir web sunucu kontrolü buton ile bir HTML butonu arasında, geliştiriciye sağladığı fayda ve hâkimiyet açısından oldukça büyük farklar vardır.
Aynı şey diğer kontroller için de geçerli.
HTML ve Web sunucu kontrolleri web formların içinde yer alırlar.
Diğer bir ifade ile toolbox’dan sürükle bırakla formumuza eklediğimiz kontroller web form tagları arasına konumlanır.