A AS A S S P P P . .N . N N E E E T T T D D D E E E R RS R S S İ İÇ İ Ç ÇE E E R R R İ İĞ İ Ğ Ğİ İ İ
ASP.NET DERS ĠÇERĠĞĠ ... 1
HAFTA - 1 ... 3
HTML Nedir? ... 3
HTML avantajları ... 3
HTML dezavantajları ... 3
Microsoft .NET nedir? ... 3
ASP Nedir? ... 4
ASP Nasıl ÇalıĢır? ... 4
Avantajları Nelerdir? ... 4
Dezavantajları ... 9
HAFTA - 2 ... 10
Visual Studio 2008... 10
ASP.NET Kontrolleri... 12
Sayfalar Arası Veri Aktarımı ... 13
View State ... 14
Control State ... 15
Hidden Fields ... 15
Cookies (Çerezler) ... 16
HAFTA - 3 ... 17
QueryStrings ... 17
Application/Uygulama ... 17
Session/Oturum ... 18
HAFTA - 4 ... 19
ASP.NET Kavramlar ... 19
Request/Talep ... 19
Response/KarĢılık ... 21
Web User Control ... 22
HAFTA - 5 ... 23
Master Page ... 23
Örnek Site Tasarımı ... 24
HAFTA - 6 ... 26
Yeni Üyelik Formu Tasarımı ... 26
Validation Kontrolleri ... 27
Required Field Validator ... 27
Range Validator ... 27
Reguler Expression Validator ... 27
Compare Validator ... 27
Yeni Üyelik BaĢvurusu ... 28
Üye GiriĢ Sistemi ... 28
HAFTA - 7 ... 31
HAFTA - 8 ... 40
HAFTA - 9 ... 41
HAFTA - 10... 42
H HA H A A F F F T T T A A A - - - 1 1 1
HTML çalışma prensibi, Avantajları, dezavantajları Net framework nedir?
Asp nedir? Avantajları, dezavantajları
ASP (Active server pages / Aktif Sunucu Sayfaları) ASP nasıl çalışır?
HTML Nedir?
Web sayfalarının büyük çoğunluğu HTML içeren metin tabanlı sayfalar olarak hazırlanmaktadır. Bu sayfalar istemci tarafında çalıĢtığı için kaynak kodlar kullanıcı tarafından görülmektedir.
İşlem basamakları
1. Web sunucu istekte bulunulan adresin dosya uzantısından dosyanın bir html dosyası olduğunu algılar.
2. HTML dosya sabit diskten okunarak istemciye gönderilir.
3. Ġstemcideki web tarayıcı dosyayı yorumlar ve sonucu gösterir.
HTML avantajları
1. Tüm tarayıcılarda düzgün bir Ģekilde gösterilebilir.
2. Her istek hızlı gerçekleĢtirilir ve en az düzeyde kaynak kullanılır.
3. Öğrenmek kolaydır.
HTML dezavantajları
1. Çok etkileĢimli değildir.
2. Tasarımları düzenlenmesi ve kontrolü zordur.
3. Çok sayıda sayfa içeren siteler için kullanıĢlı değildir.
4. Hızlı değiĢen içerik ve kiĢiselleĢtirmeler için kullanıĢlı değildir.
Microsoft .NET nedir?
Microsoft .NET insanların, bilginin, sistemlerin ve cihazların iletiĢimini sağlayan bir platformdur. Ġstemci ve sunucu uygulamaların yanı sıra geliĢtirme araçlarını da kapsamaktadır. Bu oluĢum içerisinde aynı zamanda:
Web tabanlı uygulamaların, web servislerinin ve her türlü uygulamanın geliĢtirilip çalıĢtırılabildiği bir platform olan .NET Framework de bulunmaktadır. .NET Framework ile uygulamalar iletiĢim standartlarına (SOAP, XML, HTTP vb) uygun olarak geliĢtirilebilmektedir.
Visual Studio .NET, entegre geliĢtirme ortamlarına (Integrated Development Environment - IDE ) ve araçlara sahiptir. Bu araçlar sayesinde .NET Framework ile uygulama geliĢtirme daha kolay hale gelmekte ve verimlilik maksimum düzeye ulaĢmaktadır
.NET Framework nedir?
Microsoft .NET Framework, uygulamaların ve web servislerinin inĢa edilebildiği (build), yayımının yapılabildiği (deploy) ve çalıĢtırılabildiği (run) bir platformdur.
"Build - Deploy - Run" .NET Framework platformu için üç anahtar kelimedir. Verimliliği yüksek, standartlara uygun ve çoklu dil desteği bulunan bir platformdur. Internet ölçekli uygulamaların operasyonu ve yayımlanması için karĢımıza çıkan zorluklar .NET Framework'ün sağladığı servisler sayesinde rahatlıkla aĢılabilmektedir. .NET Framework iki temel bölümden oluĢmaktadır: Common Lanuguage Runtime, HiyerarĢik düzendeki sınıf kütüphanesi.
.NET Framework:
20 den fazla programlama diline destek vermekte, uygulama geliĢtiricilerin iĢ mantığı (business logic) içeren kod kısmına yoğunlaĢmalarını sağlamakta, güvenli, sağlam, yüksek performanslı uygulamaların geliĢtirilebilmesini sağlamaktadır. Eskiye göre; geliĢtirme, yayımlama ve yönetimin çok daha kolay olduğu bir platformdur.
ASP Nedir?
Sunucu taraflı bir teknoloji olan ASP, kullanıcı tarafına etkileĢimli, dinamik Web sayfaları göndermek için kullanılır. ASP, Web programcılarına HTML, scripting ve kullanıcıdan bağımsız veritabanı uygulamalarını özgürce kullanma fırsatı verir. ASP programlama ortamının özgür olmasının sebebi tüm derleme iĢleminin sunucu tarafında bitmesi ve kullanıcının sadece sonuçta oluĢan HTML sayfalarını görmesidir.
ASP Nasıl Çalışır?
Tarayıcıya açmasını istediğiniz dosyanın adresini yazıp çağırdığımızda (Sunucu) kendisinden icra etmesini istediğiniz dosyayı arar bulur ve eğer bulursa, bu dosyayı hemen
"asp.dll" adlı bir programa iletir. asp.dll'de aldığı bu dosyayı hemen yorumlamaz. "Global.
asa" adlı dosyanın çalıĢıp çalıĢmadığını kontrol eder.
Asp.dll önce gelen dosyada hangi script dilinin kullanıldığına bakar. Ve buna göre kendini hazırlar. Asp.dll sonra bu derlediği bilgileri, tamamen asp kodlarından ayrılmıĢ, temiz bir halde browser'a gönderir. Bizde böylece sadece HTML kodlarını görürüz.
Avantajları Nelerdir?
ASP+, daha önce kullanılan Web geliĢtirme (ASP, JSP gibi) modellerine göre aĢağıda listelenen birçok önemli avantajı sağlamaktadır:
1) Geliştirilmiş Performans
ASP+ sayfaları, sunucu üzerinde çalıĢtırılan NGWS çalıĢtırıcısı kodlarıdır. Yorumlama temeline göre çalıĢan daha öncekilerle (ASP gibi) karĢılaĢtırıldığında, erken bağdaĢtırma (early binding), tam zamanında derleme (just-in-time compilation) ve doğal iyileme (native optimization) ve tamponlama hizmetleri (caching services) gibi avantajlar sağlamaktadır.
Yukarıda anılan bu özellikler, geliĢtiriciler için daha kod yazmaya baĢlamadan önce sağlanan çarpıcı performans iyileĢtirmeleridir.
2) Üstün Nitelikli Araç Desteği
ASP+ çatısı, geliĢtirme ortamıyla bütünleĢtirilmiĢ olan Visual Studio ile sunulan zengin bir araç takımı ve tasarımcısı ile tamamlanmıĢtır. WYSIWYG düzenleme (editing), sürükle- bırak tarzı sunucu denetimleri (server controls) ve otomatik dağıtım (deployment) bu güçlü araçların sağlamıĢ olduğu özelliklerin yalnızca birkaç tanesinden bazılarıdır.
3) Güç ve Esneklik
ASP+, NGWS çalıĢtırıcısı üzerine temellendirildiğinden, bu platformun tüm esneklik ve gücü Web uygulama geliĢtiricisi tarafından kullanılabilir durumdadır. NGWS çalıĢtırıcısının Temel Sınıf Kütüphaneleri (Base Class libraries), iletim (messaging) ve veri eriĢim (data access) çözümleri, benzeri olmayan bir biçimde Web"ten eriĢilebilir durumdadır. ASP+, ayrıca dile bağımlı değildir, Ģöyle ki, geliĢtiriciler uygulamalarında en uygun olan dili seçerek kodlama yapabilir. Hatta uygulamaların değiĢik bölümleri değiĢik dillerde yazılarak karma programlama avantajlarından yararlanmak söz konusudur. Dahası, ASP+"a geçiĢ söz konusu olduğunda, hali hazır kullanılmakta olan COM tabanlı uygulamalara yapılan yatırımlar NGWS çalıĢtırıcısının karĢılıklı iĢleyebilirlik (interoperability) desteğiyle ile garanti altına alınmaktadır.
4) Basitlik
ASP+, basit form bilgileri gönderiminden, kimlik doğrulama, kullanıcı tanıma, uygulama dağıtımı ve site yapılandırmaya kadar tüm genel görevleri yapmayı son derece basitleĢtirmektedir. Örneğin, ASP+ Sayfa Anaçatısı, uygulama mantığı, olay eldesi ve sunum (veya görüntüleme) kodlarının tıpkı VB-benzeri form iĢleme modelinde olduğu gibi net Ģekilde ayrılmasını sağlayarak daha kolay okunabilir ve yönetilebilir kullanıcı arayüzleri oluĢturulmasını mümkün kılmaktadır. NGWS çalıĢtırıcısı ayrıca otomatik referans sayımı ve çöp toplama gibi yönetilebilen kod servisleri ile de geliĢtirme iĢlemini basitleĢtirmektedir.
5) Yönetilebilirlik
ASP+, metin-tabanlı ve hiyerarĢik bir yapılandırma sistemi kullanır. Böylelikle sunucu ortamı ve Web uygulamasına özel ayarların yapılması son derece basitleĢtirilmiĢtir. Çünkü yapılandırma bilgisi düz metin olarak depolanır, yeni ayarlar yerel yönetim araçlarını kullanmaksızın basit bir metin iĢlemci aracılığıyla yapılabilir. "Sıfır Yerel Yönetim" filozofisi ASP+ uygulamalarının dağıtımını oldukça basitleĢtirir. Bir ASP+ uygulaması, çok basit bir
biçimde gerekli dosyaların sunucuya kopyalanması Ģeklinde dağıtılır. Sunucuyu yeniden baĢlatma veya derlenmiĢ kodun değiĢtirilmesi gibi iĢlemlere gerek yoktur.
6) Ölçeklenebilirlik ve Elde Edilebilirlik
ASP+, ölçeklenebilirlik düĢünülerek tasarlanmıĢtır. Bu nedenle, kümelenmiĢ ve çok- iĢlemcili ortamlarda performansı iyileĢtirmek üzere özel olarak tasarlanmıĢ niteliklere sahiptir. Dahası, iĢlemler ASP+, çalıĢtırıcı (runtime) tarafından yakından izlenir ve yönetilir.
Böylece yanlıĢ davranan bir iĢlem (leaks, deadlock) varsa onun yerine uygulamanın istemleri devamlı Ģekilde yanıtlamasına yardım eden yeni bir iĢlem baĢlatılır.
7) İsteğe Bağlı Biçimlendirme ve Uzatılabilirlik
ASP+, geliĢtiricilerin uygun gördüğü yerlerde kodlarına takı ("plug-in") yapmalarına izin veren iyi-faktörlü bir mimari sunmaktadır. Gerçekten de, ASP+ çalıĢtırıcısının herhangi bir alt bileĢenini kendi yazdığınız herhangi bir bileĢenle zenginleĢtirebilir veya değiĢtirebilirsiniz. Ġsteğe bağlı doğrulama veya durum (state) servislerinin uygulanması hiçbir zaman olmadığından daha kolay hale getirilmiĢtir
8) Programlama Dilinde Bağımsızlık
ASP.NET programlama dillerimden bağımsızdır. ASP.NET web yazılımları geliĢtirebilmek için 20 programlama dili ve fazlasını kullanabiliriz, örneğin, VB.NET, C#, JScript.NET, C++ with Managed Extensions, COBOL.NET, Perl.NET.
9) Derlenmiş Kod
Bildiğimiz gibi asp scripting dilleriyle çalıĢıyor. Fakat ASP.NET derlenmiĢ kod ve güçlü tipli dillerle çalıĢıyor, yani gerçek programlama dilleriyle. ASP.NET bu nedenle gerçek veri tiplerini kullanıyor örneğin integers ve strings.
ASP.NET de kullanılan programlama dilleri daha iyi olağanüstü durum iĢleme gücüne sahiptirler. ASP.NET içerisinde try … catch … finally deyimleri ile olağanüstü durum iĢleme imkanına sahibiz
10) Sürükle & Bırak ve Olay Bazlı Programlama
Eğer Visual Basic kullandıysanız, bilirsiniz ki VB’nin en güzel taraflarından birisi sürükle ve bırak objeleri sistemi ve olay bazlı programlama yani click, doubleclick, textchange gibi. ASP.NET bu özellikleri WEB Formlarıyla aynı Ģekilde kullanabilirisiniz.
VB’de nasıl program geliĢtiriyorsanız, ASP.NET Web Formları da yani fonksiyonelliği sağlıyor. ASP.NET içerisinde gerçekten çok iyi dizayn edilmiĢ ve çok sayıda HTML kontrolleri vardır. Hemen hemen bir ASP.NET sayfasında bulunan bütün HTML kontrolleri Visual Basic, C#, C++ kodları ile kontrol edilebilir. ASP.NET buna ek olarak yeni nesneye dayalı programlamayı destekleyen, girdi kontrolleri, programlanabilir listbox’lari, yeni doğrulama kontrolleri (validation controls). ASP.NET içerisinde örneğin DataGrid, DataList kontrolleri olup bu kontroller web yazılım geliĢtiricisinin hayatini çok kolaylaĢtırmaktadır
11) Mobile Programlama Desteği
ASP.NET ile sadece web yazılımları değil ayrıca mobil telefonları ve PDA’lar (Palm, PocketPC’s, RIM devices, etc) içinde yazılım geliĢtirebilirsiniz. ASP.NET de mobil aletleri için WML (Wireless Markup Language) veya HTML 3.2 (Hyper Text Markup Language) veya cHTML (Compact Hyper Text Markup Language) of I-mode aletlerini destek sağlar.
ASP.NET mobil aletin kullandığı protokolü otomatik olarak belirler ve ona göre sonucu geri döndürür.
12) Bağlantısız Veri Erişimi
Asp ve ADO nun en önemli sorunlarından birisi ADO her zaman veritabanına canlı bağlantıyı tutar. Buda asp sayfalarının çalıĢtırılmasını önemli ölçüde yavaĢlatır. ADO.NET bağlantısız veri eriĢimini sağlayan sistemi bizim kullanımımıza sunar.
13) Session state
Asp session değiĢkenleri desteği çok sınırlıdır ve birden fazla web server dan oluĢan sistemde session değiĢkenlerini hiç desteklemez. ASP.NET de ise olay tamamen değiĢiyor, birçok session depolama metodunu destekler örneğin In-Process (asp ile ayni), out-of- process (session durumu baĢka bir bilgisayardaki Windows Servis ile sağlanır) ve SQL Server’da. Out-of-process ve SQL Server seçenekleri web form desteği sağlar.
14) Güvenlik Desteği
Asp sadece IIS authentication metodlarını desteklerken ASP.NET daha geniĢ güvenlik sistemini destekliyor örneğin IIS/Windows doğrulama sistemlerinden Basic doğrulama, Digest doğrulama, Integrated Windows doğrulama, Form bazlı doğrulama ve Microsoft Passport doğrulama. ASP.NET içerisinde yeni olarak Windows kullanıcı doğrulama (windows authentication) sistemine ek olarak form bazlı kullanıcı doğrulama (forms-based user authentication) sistemi geliĢtirilmiĢtir. Bu yeni sistemde çerez yönetimi (cookie management) ve otomatik olarak doğrulanmayan kullanıcıların baĢka bir web sayfasına gönderilmesi (automatic redirecting of unauthorized logins) gibi güzel özellikler eklenmiĢtir. Ġzlemek, Debug, ve Bellekleme Desteği (Tracing, debugging and caching support) asp sisteminde kodu izlemek ve BUG’lari bulmak bir derttir. Fakat ASP.NET içerisinde bu sistem çok daha geliĢtirilmiĢ, adım adım debug olayı ve diğer trace ve debug metotlarını desteklemektedir. ASP.NET bunlara ek olarak mükemmel bellekleme (caching API) sağlamaktadır. Verileri bellekleme sistem output caching, data caching, dependent caching ve fragment caching metodlarını destekler.
15) XML Bazlı Konfigürasyon
Asp içerisinde ise konfigürasyon bilgileri çok değiĢik yerlerde saklanıyordu. Örneğin, IIS bilgileri IIS ****base (registry) de saklanmaktadır. Eğer COM/ COM+ bileĢenlerini kullanıyorsanız, COM ve COM+ bileĢenlerinin bütün bilgileri registry ve COM+ Catalog da saklanır. ASP.NET konfigürasyonu metin dosyaları ile yapılır. Bu metin dosyaları XML dosyalarıdır. ASP.NET de XML ayrı bir önem kazanmıĢtır. ASP.NET de çalıĢan programı
kesmeden bu konfigürasyon dosyaları değiĢtirilebilir. ASP.NET bunu arka planda, kullanıcıdan saklayarak halleder. Yeni bir web isteği geldiğinde ASP.NET worker process (çalıĢan iĢlemci) yeni konfigürasyonla isleme devam eder.
16) XCopy Kurulum
COM bileĢenlerinden farklı olarak .NET bileĢenleri Windows registry’e kayıt edilmesine gerek yoktur. Yapmamız gereken tek Ģey bileĢeni derlemek, ASP.NET yazılımının bulunduğu klasörde BIN isimli bir klasöre ekledikten sonra bu derlediğimiz bileĢeni kopyalamaktır. Gördüğünüz gibi artık registry ile uğraĢmak yok. Bu gerçekten Microsoft’un uzun zamandır yapması gereken bir değiĢiklik idi.
17) Hosting Seçenekleri
Asp bir ISAPI programı olup IIS e bağlıdır.Buna karsın, ASP.NET ise .NET framework üzerinde çalıĢır, böylece ASP.NET sayfaları bu nedenle IIS dıĢındaki web serverları tarafından da sunulabilecektir.
18) Daha hızlı web uygulamaları
ASP.NET derlenmiĢ kod ve saklanma iĢlemi ile hız kazanıyor. Daha önceki ASP sürümlerinde bir kullanıcı web sitesine girdiği zaman bilgisayar üzerinde anlık derlemeler yapılırdı ve bu hız kaybına neden olurdu. Artık ASP.NET ile hazırlanmıĢ bir kod, bir ziyaretçi tarafından hiçbir zaman ziyaret edilmese bile derleniyor. Saklama iĢlemiyle de hafızaya bilgi depolanıp, bu sayede kullanıcılara verilerin daha hızlı yollanması sağlanabiliyor.
ASP.NET ile programcılar sayfalarını her kullanımda yeniden aratmak yerine bir kısmını "caching" yani tamponlama iĢlemi sayesinde daha hızlı eriĢilebilir hale getirebiliyorlar. Bir diğer değiĢiklik ise ASP.NET ile veritabanındaki belirli verilerin saklanabilir hale getirilebilmesi. Bu sayede çok değiĢmeyen bir veritabanını her seferinde tekrar yüklenmek yerine, hızlı eriĢilebilir forma sokulmuĢ oluyor.
19) Güçlü veritabanı fonksiyonları
ASP gibi ASP.NET de programcıların veri tabanlarıyla etkileĢimli çalıĢabilen web uygulamaları yapabilmesine izin veriyor. ASP.NET"in asıl avantajlı bir çok programlama aracına imkan veren Nesne Merkezli (Object Oriented) programlama ile çalıĢması. Bu sayede daha fonksiyonel ve daha hızlı tasarıma imkân sağlıyor.
20) Hafıza sızıntısı ve çökme koruması
ASP.NET teki en çok beğenilen yeniliklerin baĢında hafıza sızıntısı ve çökme koruması özellikleri geliyor. Özellikle hafıza sızıntısı, çoğu kullanıcı tarafından pek bilinen bir konu değilken, sistem yöneticilerini sıkıntıya sokan durumlardan biridir. ASP.NET ile bu hatalar otomatik olarak düzeltilerek, kullanıcıların her zaman web sitesine ulaĢabilmesi sağlanıyor.
21) Çoklu dil desteği
Programcılar artık 25"ten fazla .NET dili ile ASP.NET"i kullanabiliyorlar. Bu dillerden bazıları VB.NET, C# ve Jscript NET. GeniĢ dil desteği sayesinde birçok programcı web uygulamalarını kolayca hizmete sunabiliyor.
22) .NET"in parçası olmak
.NET çatısı 3400"den fazla sınıftan oluĢan bir yapıya sahip, ASP.NET de .NET"in bir parçası olduğu için neredeyse web uygulaması olarak yapılamayacak hiçbir Ģey yokmuĢ gibi gözüküyor.
23) Programlar ve HTML artık aynı sayfada değil
Önceki sürüm ASP’lerde göze çarpan sorunlardan biri HTML sayfasında programlamanın da görünmesiydi. Diğer bir deyiĢle, scriptler ve HTML aynı sayfadaydı.
Artık gösterilen kod ile script kodu ayrılmıĢ olduğundan, Microsoft bunun önüne geçmek için bir önlem almıĢ gibi görünüyor.
Dezavantajları
1) Windows zorunluluğu
ASP.NET halen Windows iĢletim sistemi kullanan bir sunucu üzerinde yapılandırılmak zorunda; kısacası platform bağımsız değil. ASP’de de olan bu sorunu çözmek için Linux sistemlerinde çalıĢan birkaç ASP hosting sunucusu geliĢtirildiyse de, iĢin açıkçası pek baĢarılı olabilmiĢ değil. ASP.NET de hali hazırda Windows ve IIS (Internet Information Server)’a mahkûm görünüyor.
2) Eklenti krizi
ASP.NET kaynak olarak bedava gibi görünebilir ama programlama konusunda bilgili değilseniz hazırlıklı olmanız gereken bir durum var, o da eklentiler. Bir iĢlemi yapmak için gereken eklentiler genelde ücretli olarak satılıyor. Tabii saatlerce uğraĢtan sonra bedava olan birkaç eklentiyi zor da olsa bulabilirsiniz.
3) Hosting maliyeti
Eğer dıĢarıdan hosting hizmeti alacaksanız biraz daha fazla para ödemeye hazırlıklı olmanız gerekiyor. Çünkü genel olarak Windows hosting daha pahalı ki bu da normal olması gereken bir fark.
H HA H A A F F F T T T A A A - - - 2 2 2
Visual Studio 2008 Tanıtımı ASP.NET Tasarımı
Visual Studio ile ASP.NET Site oluşturma ASP.NET kontrolleri
Sayfalar arası veri aktarımı
Visual Studio 2008
ASP.NET ile web sitesi tasarımı için Visual Studio kullanılır. Visual Studio 2008 çalıĢtırıldıktan sonra Menüden File – New – Web Site seçilir.
Resimde de görüldüğü gibi üstte oluĢturulacak projenin tipi belirlenir. Normalde ASP.NET Web Site seçilir.
Location bölümünde ise web sitesinin bulunduğu konum belirlenir. Web sitesi ftp konumunda, http konumunda olabilir. Bu konumlara bağlanılarak uzaktaki bir konumda olan web siteleri de düzenlenebilir. Kendi bilgisayarımızda konumlandıracaksak File System seçilir.
Language bölümünde ise ASP.NET web sitesini oluĢtururken kullanılacak programlama dili seçilir. Burada Visual C# seçilmiĢtir.
Brows düğmesi ile de web sitemizi oluĢturacağımız konum belirlenir. Ok düğmesine basılmasıyla Web sitesi belirtilen konumda hazırlanır.
Sol bölümde Toolbox (araçlar) yeralmaktadır. Orta kısım tasarım yapılan yerdir.
Sağda üstte Solution Explorer bulunmaktadır. Solution Explorer’de projede yer alan tüm dosyalar ve klasörler listelenmektedir. Onun altında ise Properties bölümü yer almaktadır.
Tasarım kısmında seçilen nesnenin özellikleri gösterilmektedir.
Bir Web sayfası tasarımı üç farklı yerden yapılmaktadır. Örneğin Default.aspx dosyası tasarımında: Solution Explorer’de Default.aspx’in altında bağlı olarak Default.aspx.cs görülmektedir. Default.aspx.cs dosyası program kodlarının bulunduğu dosyadır.
Default.aspx ise html kodları ile sayfa tasarımını içermektedir.
Default.aspx açıldığında (html kodlarını içeren sayfa) farklı iki görünüm vardır.
Birincisi Design (Tasarım) görünümü. Bunda sayfa tasarımı tamamen görsel olarak yapılmaktadır. Source (html kod) görünümde ise sayfanın ASP.NET için geliĢtirilmiĢ html kodları görülmektedir.
Default.aspx.cs dosyasında ise C# dili ile yazılan ve asp kontrollerine ait program kodlerı görülmektedir.
ASP.NET Kontrolleri
ASP.NET ile web sitesi tasarımında html kontrolleri istenirse kullanılabilir. Fakat ASP kontrolleri geliĢmiĢ özelliklere sahip olduğu için tercih edilir. En çok kullanılan ASP.NET kontrolleri aĢağıda verilmiĢtir.
Label: Sayfa üzerinde yazı yazmak için kullanılır. Normalde sayfa üzerine doğrudan da yazı yazılabilir. Fakat Label kontrolü kullanılırsa program kodları ile yazı yazdırılabilir.
TextBox: ÇelıĢma zamanında kullanıcı tarafından bilgi giriĢine izin veren kontroldür.
Button: Tıklama ile çalıĢan ve belirli iĢlemlerin etkileĢimli olarak yapıldığı kontroldür.
LinkButton: Görünümü bir link gibidir, fakat etkileĢimli olarak çalıĢan bir buton gibi davranır.
ImageButton: üzerinde resim görülen ve etkileĢimli buton gibi çalıĢan bir kontroldür.
HyperLink: sayfa üzerinde linkler vermeye yarayan kontroldür.
DropDownList: Açılır liste kutusu. Listeden sadece bir eleman seçilebilir.
ListBox: Bir listesi olan ve bu listeden eleman seçilebilen kontroldür.
CheckBox: Onay kutusudur.
CheckBoxList: Bir çok onay kutusunu bir grup olarak barındıran kontroldür.
RadioButton: Seçme kutusudur. Bunlardan sadece biri seçilebilir.
RadioButtonList: Eğer radiobutonlardan ayrı gruplar oluĢturmak istenirse, bu kontrol ile grupar oluĢturulabilir.
Image: Sayfa üzerine resim eklenir.
FileUpload: Web sitesine dosya yükleme kontrolüdür.
MultiView: Duruma göre çoklu sayfa görünümü.
View: MultiView kontrolü ile kullanılır.
ToolBox DATA grubu: Bu grupta veritabanlarına bağlanma kontrolleri ve veritabanlarındaki bilgileri listeleme kontrolleri bulunmaktadır.
ToolBox Validation Grubu: Bir bilgi giriĢ formunda TextBox’lara girilen değerlerin kontrollerini yapan ve doğru bilgi giriĢini zorlayan kontroller vardır.
ToolBox Navigation grubu: Menü ve site haritası hazırlanabilecek kontroller vardır.
ToolBox Login grubu: üye giriĢi ile ilgili kontroller bulunmaktadır.
ToolBox AJAX Extention grubu: ASP.NET sitesi içinde AJAX kullanımı ile ilgili temel kontrolleri içerir.
Sayfalar Arası Veri Aktarımı
Web sitelerinin çalıĢma Ģeklinde Sunucu ve istemci vardır. Ġstemci sunucudan sayfayı istemektedir. Ġstemcide sunucunun göndermiĢ olduğu sayfa görüntülenmektedir. Burada girilecek veya tanımlanacak bir bilgi istemcide tanımlanır. Bundan sunucunun haberi olmaz.
Bir linke tıklanarak diğer sayfaya geçildiğinde tüm tanımlamalar istemcide bulunduğu için sunucu, istemcideki tanımlara göre iĢlem yapamaz. Fakat yapılan tanımlamaların diğer sayfalara aktarılması ve diğer sayfalarda kullanılması gerekir. Bu iĢlemi web sitelerinde gerçekleĢtirmek için değiĢik yöntemler kullanılmaktadır.
1- Web sayfasındaki formu Post metodu ile diğer sayfaya göndermek ve Request.Form ile değerleri almak.
2- Web sayfalarını çağırırken adres satırında parametre gönderme, RequestQuerystring kullanma.
3- Cokie kullanma
4- Application nesnesinde değiĢken tanımlama 5- Session nesnesinde değiĢken tanımlama
Web ortamında sayfaların her post-back olmasında ilgili sayfanın yeni bir örneği oluĢturulur. Peki, yeni bir örneğinin oluĢması ne demek?
1.Sayfamızdaki bilgilerin
2.Sayfadaki kontrollerin (TextBox, Grid, CheckBox, Button vb.)
tamamen kaybolması demektir. Örneğin kullanıcı sayfamızdaki bir TextBox’a veri girdiğinde, artık biliyoruz ki bu veri tamamen kaybolacaktır. Ancak bunu deneyip yaptığımızda gerçek ortamda TextBox’taki verinin kaybolmadığını görüyoruz.
Peki, bu nasıl oluyor?
Geleneksel Web Programlamanın bu sınırlılığının üstesinden gelmek için .NET platformu bize bazı sayfa-tabanlı ve uygulama-tabanlı seçenekleri sunmakta. Bunlar:
1.View State 2.Control State 3.Hidden Fields 4.Cookies
5.Query Strings 6.Application State 7.Session State
Bu seçeneklerden (View State, Control State, Hidden Fields, Cookies ve Query Strings) sayfamızdaki bilgileri ve kontrol bilgileri bir takım yollarla kullanıcının kendi bilgisayarında (Client-Based State Manegement) saklarlar. Geri kalan seçenekler ise (Application State, Session State ve Profile Property) bu bilgileri uygulama tarafında yani sunucuda (Server-Based State Management) saklarlar.
.NET platformunun bizlere sunduğu bu seçenekleri incelersek:
View State
Post-Back sırasında default olarak sayfa ve kontrol bilgilerini tutan bu yapı, dictionary mantığıyla çalıĢır. Her bir kontrolün ve sayfa bilgisinin değerleri “Key”, “Value” Ģeklinde, hidden field’lar olarak korunur. Sayfa sunucuya gönderildiğinde, gelen isteğe göre iĢlem yapıldıktan sonra sunucu view-state değerine göre sayfayı tekrardan render eder ve client’a tekrar gönderir. Böylece sayfamızdaki verilerimizi kaybetmemiĢ ve sunucuya gitmeden önceki halleriyle tekrar tarayıcımızda görürüz.
View state yapısında kendi verilerimizi de saklayabiliriz. Dictionary mantığıyla çalıĢtığını daha önce belirtmiĢtik. AĢağıdaki gibi basit bir Ģekilde View State yapısını kullanabilirsiniz
View State e veri ekleme:
ViewState.Add(”[Key]“,”[Value]“);
Eklenen bir veriyi alma:
ViewState["[Key]“].ToString();
Bu yöntemi kullanmanın avantajları:
1.Sunucu kaynaklarını yormaz: Client-Based olduğu için sunucumuza artı bir yük getirmez
2.Kolay uygulanabilirlik: Ekstra kodlama gerektirmez. Zaten default olarak kullanılan metoddur
3.Güvenlik: View-State değerleri ĢifrelenmiĢ bir Ģekilde saklandıkları için Hidden field’lara göre daha güvenlidirler
Dezavantajları:
1.Performans düĢüklüğü: View-State değerleri sayfamızla beraber sunucuya gittiği için view-state de büyük boyutta veri saklamak sunucuya gidiĢ-geliĢ süresini uzatacaktır.
özellikle mobil uygulamalarda büyük veriler büyük performans kaybı demektir.
2.Potansiyel Güvenlik Riski: Veriler ĢifrelenmiĢ bir Ģekilde saklansa bile sayfa kaynağını görüntülediğimizde bu verileri Ģifreli halde bile olsa görebiliriz. Bu durum güvenlik riski oluĢturabilir.
Control State
.NET ControlState özelliği post-back’ler arasında custom kontrol verilerini tutmamıza olanak sağlar. Örneğin sayfamızda farklı içerikler gösteren farklı tab yapılarımızın olduğunu düĢünün. Hangi tabın seçili olduğunu post-back iĢleminden önce bilmek istiyorsak bu yapı uygun bir yapıdır. Bu senaryo ViewState ile de yapılabilir, ancak ViewState sayfa bazında kapatılabildiği için uygulamamızda aksaklıklara neden olabilir. ControlState ise ViewState gibi kapatılamaz.
peki nasıl kullanılır?
Veri ekleme:
PageStatePersister.ControlState = “[Data]”;
Veri alma:
string value = PageStatePersister.ControlState.ToString();
Kullanım Avantajları:
1.Sunucu kaynaklarını yormaz: Client-Based olduğu için sunucumuza artı bir yük getirmez
2.Güvenilirlik: ViewState gibi kapatılamadığından kullanımı daha kesin sonuçlar verir.
3.Çok Yönlülük: Control state tekli verilerin nasıl ve nerede saklanması konusunda custom adaptörler yazılabilir
Dezavantajları:
1.Programlama bilgisi gerektirir: ASP.NET kullanım için limitli imkan sağlasa da, tam kullanım için kodlama gerektirmektedir.
Hidden Fields
Hemen hemen hepimizin bildiği bir state yönetim aracıdır. Normal bir HTML kontrolü olarak sayfamıza ekleyebilirsiniz. Veri saklama ve veri alma, normal bir TextBox’tan farksızdır.
Kullanım avantajları:
1.Sunucu kaynaklarını yormaz: Client-Based olduğu için sunucumuza artı bir yük getirmez
2.Yaygın Destek: Hemen hemen tüm tarayıcılar hidden field desteği vermektedir.
3.Kullanım kolaylığı: Standart HTML kontrolü olarak sayfanıza ekleyebilirsiniz.
Dezavantajları:
1.Güvenlik Riski: Sayfa kaynağı direkt olarak görüntülenirse hidden field değerleri açıkça görülebilir. Değerler Ģifrelenebilir ancak Ģifrelenmesi ve Ģifrelerin tekrar çözülmesi iĢlemi ekstra kodlama demektir.
2.Basit Depolama Mantığı: Hidden field’larda rich değerler saklayamayız. Daha çok basit veriler saklanması için tasarlanmıĢtır.
3.Performans Kaybı: Büyük veriler saklayamadığımız gibi, aĢırı kullanımı durumunda sayfada HTML kontrolü olarak saklandığı için performans kayıplarına neden olacaktır
Cookies (Çerezler)
//myCookie isminde yeni nesne oluştur
HttpCookie MyCookie = new HttpCookie("SonZiyaret");
//now isminde datetime tipinde nesne oluşturup o anki zaman aktar DateTime now = DateTime.Now;
//myCookie’nin değeri belirleniyor MyCookie.Value = now.ToString();
//myCookie’nin süresi belirleniyor. Ömrü 1 saat olarak ayarlanıyor MyCookie.Expires = now.AddHours(1);
//myCookie istemci bilgisayara ekleniyor.
Response.Cookies.Add(MyCookie);
Cookie Okuma
HttpCookie myCookie = Request.Cookies.Get("SonZiyaret");
degisken = myCookie.Value;
Kullanım Avantajları:
1.Konfigüre Edilebilme: Cookie’lerin ayarlanabilir birçok özelliği vardır. Ġsim, değer, zaman aĢımı süresi vb.
2.Sunucu kaynaklarını yormaz: Client-Based olduğu için sunucumuza artı bir yük getirmez
3.Veri Devamlılığı: Client bilgisayarlarda veri bütünlülüğünü en yüksek oranda garanti edebilen yapılardır.
4.Kullanım kolaylığı: text tabanlı key-value mantığıyla çalıĢırlar Dezavantajları:
1.Boyut limiti: Bir çok browser cookie boyutu olarak 4096 byte sınırını getirmektedir.
2.Kullanıcı Kontrolü: Bazı kullanıcılar cookie alımını tarayıcılarından kapatabilirler, bu da cookie kullanımını olanaksız hale getirir
3.Güvenlik Riski: Cookie kullanıcılar tarafından görülebilmektedir. Bu da güvenlik açıklarına neden olabilir. Cookie değerleri manuel olarak Ģifrelenebilir, ancak bu da ekstra kod demektir
H HA H A A F F F T T T A A A - - - 3 3 3
QueryString Application Session
QueryStrings
QueryString’lerde yine en çok aĢina olduğumuz state yönetim araçlarındandır.
URL’lerin ardına eklenen kullanıcılar için çok da bir anlam ifade etmeyen, yazılımcılar için anlamlı bilgilerdir.
Örneğin:
xyz/index.php?option=com_comprofiler&task=userProfile&user=142
adresindeki “?” iĢaretinden sonra gelen “option”, “task” ve “user” kelimeleri birer Query String anahtarlarıdır. Bu anahtarlar kullanıcılar için fazla bir anlam ifade etmez ancak yazılımcılar için çok anlamlıdırlar.
Kullanımı:
xyzindex.php?option=com_comprofiler Her iki kullanımda aynı iĢi görmektedir.
Veri Alma:
if (Request["[Key]“] != null) {
string value = Request["[Key]“].ToString();
}
Kullanım Avantajları:
1. Sunucu kaynaklarını yormaz: Client-Based olduğu için sunucumuza artı bir yük getirmez
2. Yaygın Destek: Hemen hemen tüm tarayıcıların Query String iler veri taĢıma desteği vardır.
Dezavantajları:
1. Güvenlik Riski: Query String ile taĢınan veriler clear text olarak tüm kullanıcılar tarafından görülebilmektedir. Bu nedenle değerli veriler kesinlikle querystring ile taĢınmamalıdır. Bunun yerine Hidden field veya diğer yapılar kullanılabilir.
2. Kapasite Limiti: Bazı tarayıcılar URL uzunluklarını en fazla 2083 karakter olarak sınırladıklarından istenilen uzunlukta veri taĢınamıyor.
Application/Uygulama
Asp'yi yazanlar ASP teknolojisinin kullanıldığı bir siteyi uygulama programı olarak düĢünmüĢler ve bu siteye girecek herhangi biri ziyaretçiyi de bu programı kullanan bir kullanıcı olarak düĢünmüĢler. Yani sitenize her bir kullanıcı girdiğinde bir onun için bir program açılıyor gibi düĢünülebilir.
Web sitemiz sunucuya yüklendiğinde bir Application (uygulama) çalıĢır. Web sunucu kapatılana kadar bu uygulama çalıĢır. Bu uygulama kapatılana kadar değiĢkenler saklanmaktarı. Sunucu taraflı veri saklama yöntemidir.
ASP.NET’te Application nesnesinde tanımlanan bir değiĢkeni ve değerini tüm ziyaretçiler görür. Application’da tanımlanan değiĢkenin ömrü, Web sunucunun çalıĢma süresi kadardır. Web sunucu durduğunda Application değiĢkenleri silinir.
Application değiĢken tanımlama
Application.Add("Okul", TextBox1.Text);
Application değiĢken değerlerini okuma
degisken = Application["Okul"].ToString();
Session/Oturum
Bu nesne Application nesnesi ile en çok karıĢtırılan nesnedir. Çünkü ikisi de tanımlamalarda aynı özellikleri taĢır.
Session Oturum demektir. Web Sitesine her bağlanan kiĢi için Application’da bir oturum oluĢturulur. Session belirli bir süre için oluĢturulur. Bu süre varsayılan olarak 20 dakikadır. Her istemci için ayrı ayrı oluĢturulan session o istemci bağlantısını kesene kadar veya session ile ilgili hiçbir iĢlem yapmadan 20 dakika geçtiğinde hafızadan silinir.
Dolayısıyla session’da tanımlanan bir değiĢkene sadece o oturumu baĢlatan kiĢi oturum açık kaldığı sürece ulaĢabilir. Session sunucu taraflı çalıĢan bir sistemdir. Bu nedenle değiĢkenler sunucuda saklanır.
Session’da değişken oluşturma:
Session.Add("Yetki", 3);
OluĢan oturumda (Session) Yetki isminde bir değiĢken oluĢturulur ve 3 değeri bu değiĢkene aktarılır. Daha sonra web sitemizin herhangi bir sayfasında bu değeri okuyabiliriz.
degisken = Session["Yetki"];
Session süresinin belirlenmesi
Session nesnesi varsayılan olarak 20 dakika için oluĢturur. Ġstemci web sitesinden istekte bulunmaya devam ettiği sürece oturum kapatılmaz. Eğer istemci 20 dakika herhangi bir iĢlem yapmaz ise oturum kapatılır. Oturumun sona ereceği süre aĢağıdaki örnekteki gibi dakika cinsinden verilebilir.
Session.Timeout = 30;
Tüm session nesnelerinin değerini sıfırlama
Sitemizde öyle bir an olur ki session nesnelerine yüklediğimiz tüm verileri bir defada silmek isteyebiliriz.
Session.Abandon();
H HA H A A F F F T T T A A A - - - 4 4 4
ASP.NET Kavramlar: Respones, Request UserControl
ASP.NET Kavramlar
Request/Talep
Adından anlaĢabileceği gibi veri talep etmek için kullanılır. Gerek formlarda, gerek sorgulardan gerekse cookie’lerden verileri almak için kullanırız.
Kısaca Ġstemciden veri almak için kullanılır.
Bu nesne ile kullanıcıdan birçok Ģekillerde veri alabiliriz. Tabi bunun için Request nesnesinin metotlarını kullanacağız. ġimdi bunları görelim.
1-Request.Form
Kullanıcının doldurduğu herhangi bir form öğesinden veri almak için kullanılır. Aldığınız bu veriyi sayfanızda herhangi bir yerde kullanabilirsiniz.
Degisken = Request.Form("form_oge_adi");
Ģeklinde veriyi alabilir ve bir değiĢkene atayabilirsiniz.
Not: Yukarıdaki örnekte bulunan form_oge_adi denen isim formdaki öğenin adıdır.
2-Request.QueryString
sayfa.aspx?degisken=deger gibi bir url’deki değiĢken adlı değiĢkenin değerini almada kullanılır.
Degisken = Request.QueryString("degisken_adi");
Ģeklinde veriyi alabilir ve Request.Form'daki gibi bir değiĢkene atanabilir.
Eğer birden fazla değiĢken url ile yollanacak ise
sayfa.asp?degisken1=deger°isken2=deger Ģeklinde yollanıp yukarıdaki gibi alınabilir.
3-Request.ServerVariables
Server değiĢkenlerinden veri alma. Hep kullanıcıdan değil de bazen sunucudan veri almamız gerekir, mesela o sırada çalıĢan asp sayfasının adresini buradan alabilirsiniz.
Request.ServerVariables("degisken_adi")
Ģeklinde bir kod ile değeri alabilirsiniz ve bir değiĢkene yükleyebilirsiniz. degisken_adi adlı bölümde aĢağıdaki değerler kullanılabilir.
Değişken Açıklamalar
ALL_HTTP İstemci tarafından gönderilen http Header altında yer alan tüm değişkenler ve değerlerini getirir.
ALL_RAW http Header altında yer alan tüm değişkenler ve değerlerini getirir. Başlarında http öneki olmaz.
APPL_MD_PATH Uygulamanın Metabase yolunu verir APPL_PHYSICAL_PATH Uygulamanın fiziksel yolunu verir
AUTH_PASSWORD Kullanıcı sunucuya basit yetkilendirmeyle bağlanıyorsa parolayı getirir.
Bu değişken yalnızca Temel kimlik doğrulama kullanılır kullanılabilir.
AUTH_TYPE Auth_type Yetkilendirme metodunu getirir.
AUTH_USER Kullanıcı sunucuya basit yetkilendirmeyle bağlanıyorsa adını getirir.
CACHE_URL ISAPI uygulamalarda kullanmak için.
CERT_COOKIE Bağlantıda yetkilendirme sertifikası kullanıyorsa kendisine verilen kimlik.
CERT_FLAGS Kullanıcının sertifikası varsa bu değer 1 olur.
CERT_ISSUER sertifikası varsa veren kurum(O = MS, OU = IAS, CN = kullanıcı adı, C = USA).
CERT_KEYSIZE Güvenli Yuva Katmanı (SSL) içinde bit sayısı bağlantı anahtar boyutu.
Örneğin, 128.
CERT_SECRETKEYSIZE SSL’deki deki özel anahtarın bit sayısı. Örneğin, 1024.
CERT_SERIALNUMBER Istemci sertifikası seri numarası CERT_SERVER_ISSUER Sunucu sertifikasının alındığı yer CERT_SERVER_SUBJECT Sunucu sertifikasının Konu alanı.
CERT_SUBJECT Istemci sertifikanın Konu alanı.
CONTENT_LENGTH Müşteri tarafından verilen içerik boyutu.
CONTENT_TYPE Içerik veri türü.
Gelen bilgilerin GET veya POST metoduna göre türünü gösterir.
GATEWAY_INTERFACE Sunucunun kullandığı CGI tipi ve sürümü.
HEADER_ <HeaderName> Değeri başlık <HeaderName> saklanır.
Herhangi bir başlık bu tabloda listelenen başka ServerVariables koleksiyonu için sırayla
"HEADER_" tarafından değeri önünde olmalıdır.
HTTP_ <HeaderName> Değeri başlık <HeaderName> saklanır.
Herhangi bir başlık bu bu tabloda listelenen başka ServerVariables koleksiyonu için sırayla
"HTTP_" tarafından değeri önünde olmalıdır.
HTTP_ACCEPT Kabul biçimlerinin bir listesini içerir Kabul başlığı döndürür.
HTTP_ACCEPT_ENCODING Kabul kodlama türleri döndürür.
HTTP_ACCEPT_LANGUAGE Bir dize içeriğinin görüntülenmesi için kullanılacak dil.
HTTP_CONNECTION Bir dizenin bağlantı türü.
HTTP_COOKIE Bu sitenin içerdiği İade çerez.
HTTP_HOST Web sunucusunun adını verir
HTTP_REFERER geçerli sayfayı bir HTML <a> etiketi kullanarak Döndürür
HTTP_URL URL’nin kodlanmış şeklini verir, örneğin, "/ vdir / default.asp? QueryString".
HTTP_VERSION Adı ve istek SERVER_PROTOCOL protokolü üzerinden (ham formu) sürümü.
HTTPS Ziyaretçi ile bağlantının güvenli olup olmadığını gösterir.
HTTPS_KEYSIZE SSL bağlantısı içinde bit sayısı Örneğin, 128.
HTTPS_SECRETKEYSIZE Sunucu sertifikası private key deki bit sayısı. Örneğin, 1024.
HTTPS_SERVER_ISSUER Sunucu sertifikasının Issuer alan.
HTTPS_SERVER_SUBJECT Sunucu sertifikasının Konu alanı.
INSTANCE_ID Sunucunun aynı andaki çalışma sayısı.
INSTANCE_META_PATH Sunucunun çalıştığı meta yolu.
LOCAL_ADDR İstemcinin IP numarası.
LOGON_USER İstemcinin kendi sistemindeki oturum açma adı.
PATH_INFO Çalışan sayfanın yolu veya adı.
PATH_TRANSLATED Çalışan sayfanın uzun yolu veya adı.
QUERY_STRING Adres satırında Query string kısmını verir REMOTE_ADDR Bu istemcinin IP adresini verir.
REMOTE_HOST Bu istemcinin bilgisayarın adını verir
REMOTE_PORT TCP bağlantısının istemci bağlantı noktası numarası.
REMOTE_USER İstemcinin gerçek adı.
REQUEST_METHOD Verilerin elde edildiği metot.
SCRIPT_NAME ASPX sayfasının URL’deki adı.
SERVER_NAME Sunucunun ana bilgisayar adı.
SERVER_PORT İstekte bulunurken kullanılan port numarası.
SERVER_PORT_SECURE Portun güvenliliğini gösterir. Güvenli ise 1 değilse 0.
SERVER_PROTOCOL Sunucudaki http’nin sürümü.
SERVER_SOFTWARE Web sunucusun adı ve sürümü.
URL Aktif olan URL’yi gösterir.
Response/Karşılık
Ziyaretçinin browser’ına gönderilen verilerin hepsini kapsar. Ayrıca cookie’lerde Response öğesinin özellikleri arasında yer alır.
Kısaca bu nesne ile istemciye veri yollarız.
Response nesnesini en çok ziyaretçinin tarayıcısına bir Ģey yazdırmak için kullanırız.
Tabii sadece bu değil bu nesne ile web sayfamızın birçok özelliğini belirleriz.
Response nesnesini sadece bu haliyle kullanmayız bu nesneyi de birçok ASP kodunda olduğu gibi "." yazıp sonra özelliğini yazarız. ġimdi bunların neler olduğunu ve ne iĢe yaradığını görelim.
1-Write (Yazdır)
Response nesnesinin en çok kullandığımız özelliğidir. Bu kodu ziyaretçinin ekranına bir Ģeyler yazdırmakta kullanırız.
Response.Write("Yazı yazdırıyoruz");
2-Buffer (Tampon)
Bu özellik "TRUE" olarak ayarlandığında asp sayfasının tüm kodlarının yorumlanması bitmeden tarayıcıya çıktı yollanmasını engeller. Bu sayede çok iĢlem gerektiren sayfalar bu yöntem ile tamamen yorumlanınca çıktısı tarayıcıya yollanır. Veya sizin asp sayfanız yorumlanması bitince ziyaretçiyi baĢka bir siteye yolluyor bunun için tüm kodların önce yorumlanması gerekir o zamanda bu özellik iĢinize yarayacak.
Response.Buffer = true;
3-Flush (Hemen Gönder)
Kısaca Buffer özelliğinin tam tersi bir iĢlem yapar. Sayfa yorumlandıkça çıktı tarayıcıya yollanır.
Response.Flush 4-Clear (Temizle)
Buffer özelliğini kullandığınız zaman sayfa yorumlanır, yorumlanan kısım geçici bir alanda tutulur. Clear özelliği ile de bu alandaki tüm veri silinir. Ama bu özellik neden iĢimize yarayabilir? Sitemizde alıĢveriĢ yapan bir kullanıcı, vazgeçtiği zaman verdiği bütün bilgileri silmek en iyisidir. O zamanda bu özellik yardımımıza koĢacaktır
Response.Clear();
5-Expires (Süresi Geçme)
Bir internet sitesine girdiğiniz zaman tarayıcımız bu sitedeki resimleri ve kodları cache denen (bilgisayarımızdaki Temporary Internet Files klasörü) bir alanda tutar.
Böylece daha sonra siz bu siteye tekrar girmek istediğinizde tarayıcı sayfayı buradan
yükler. Ama kullanıcılar gidip buradan sayfanızın kodlarını görebilir ve bizim asp sayfamızda önemli kodlar olabilir veya bazı Ģifreler bu sayfada tutuluyor olabilir, o zaman bu sayfanın cache'e alınması pekiyi olmaz. Veya sitemiz çok sık yenileniyor ise kullanıcı eski halini görüyor olacak. Bunun için biz bu özelliği kullanarak sayfamızın cache'te ne kadar tutulacağını belirleyebiliriz.
Response.Expires=10;
Buradaki 10 dakika olacaktır. Bu sayıyı 0 yaparsanız hiç cache'e alınmaz.
6-End (Son)
Sayfamızda belli durumlar sonucunda kullanıcıya karĢılık vermemesini (yani küsmesini ) sağlayabiliriz. Bu durumda o ana kadar yorumlanan bütün kodlar tarayıcıya ulaĢır ve ondan sonraki hiçbir kod yorumlanmaz, buna HTML de dâhil. Ayrıca bu özellik ile Buffer özelliğiyle geçici alanda tutulan tüm veri ziyaretçinin tarayıcısı ile buluĢur.
Response.End
Web User Control
Web User Controlleri bir nevi diğer web programlama dillerindeki include dosyalar gibi düĢünebilirsiniz. OluĢturduğunuz bir Web User Controlü sayfanızın isteğiniz yerine koyar ve orada onun görünmesini sağlayabilirsiniz. OluĢturulan bir web user control birçok defa aynı veya farklı sayfalarda kullanılabilir.
Özellikleri
Web user controller proje içerisinde oluĢturulan ascx uzantılı dosyalardır. Bu dosyalar içerisinde daha önceden var olan HTML ve server componentlerini istediğimiz gibi kullanarak yeni bir görünüm oluĢtururuz. User Controller VS.NET toolbox’ında yani araç çubuğunda bulunmazlar. Onları herhangi bir projeye eklemek için Solution Explorer’dan o ascx uzantılı dosyayı tutarak sayfada istenilen yere bırakılması yeterlidir. Web User Controller, .NET’in diğer kontrollerine benzemez.
H HA H A A F F F T T T A A A - - - 5 5 5
Master page
Örnek site tasarımı
Master Page
Internet sitelerini göz önüne aldığımızda, siteye ait sayfaların sıklıkla aynı Ģablonları kullandığını görürüz. Özellikle, header, footer, navigasyon ve advertisement alanları, çoğunlukla siteye ait tüm sayfalarda aynı yerlerde kullanılır. Bu, siteye ait sayfaların standart olarak aynı görünümde olmasını sağlamakla kalmaz, değiĢen içeriğinde ortak bir Ģablon üzerinde durmasına imkân tanır. Peki, Asp.Net 2.0’ın bu kullanım için getirdiği yaklaĢıma gelene kadar, sayfalarda ortak olarak kullanılan ve tasarımsal olarak sayfa koordinatlarında aynı yerlerde yer alan bu unsurlar hangi teknikler ile oluĢturulmuĢtur?
Html’in ilk zamanlarında, bu tarz iĢlemleri gerçekleĢtirmek için, ortak olan alanlar kopyalanarak diğer sayfalara yapıĢtırılırdı. Ya da ana Ģablonu ihtiva eden bir sayfadan diğer sayfalar "save as" metodu ile oluĢturulur ve içerikleri değiĢtirilirdi. Bu tekniğin en büyük dezavantajı, Ģablondaki herhangi bir değiĢikliğin diğer sayfalara yansıtılması sırasında ortaya çıkmaktadır. Nitekim 100’lerce alt sayfaya aynı Ģablonu uygulamıĢsak bu gerçekten büyük bir problemdir.
Çözüm Asp ile gelmiĢtir. Asp, include takılarını kullanarak, sayfalarda tekrar eden içeriklerin kolayca kullanılabilmesini ve değiĢikliklerin tüm sayfalarda görünebilmesini sağlamıĢtır. Ancak elbette ki include takısının da bir takım sorunları vardır. Bunlardan birisi, tasarım zamanında include takısının iĢaret ettiği içeriğin görünememesidir.
Dolayısıyla sayfanın bütünün nasıl göründüğünü inceleyebilmek için mutlaka çalıĢtırmak gerekmektedir. Diğer yandan, include tekniği takılar üzerine kurulu olduğundan, özellikle açık unutulan takılar sayfalarda istenmeyen Html çıktılarının oluĢmasına yol açmaktadır.
Asp.Net 2.0, Master Page yaklaĢımı ile yukarıda bahsedilen dezavantajları ortadan kaldırmayı baĢarmıĢtır. Bir Master Page, uygulandığı diğer aspx sayfalarının nasıl görünmesi gerektiğine karar veren bir Ģablon gibidir. Ancak, sağladığı ContentPlaceHolder bileĢeni sayesinde, Master Page’leri uygulayan diğer aspx sayfalarının, istenilen içeriğe sahip olmasını da sağlamaktadır. En güzel yanı ise, normal bir aspx sayfası gibi tasarlanabilmesi, yani html, image, server control gibi üyeleri içerebilmesidir. Bunlara ek olarak, olay güdümlü programlama modelini de destekler. Dolayısıyla bir Master Page aslında bir aspx sayfasından farksızdır.
Ancak asıl fark, bir Master Page bir aspx sayfasına uygulandığında ortaya çıkar.
Master Page’i uygulayan bir aspx sayfası tarayıcıda açıldığında tarayıcıya gelen sayfa, Master Page ile aspx sayfasının birleĢtirilmesi sonucu ortaya çıkan baĢka bir aspx sayfasıdır. Bu, .NET Framework’ün getirdiği partial class tekniği sayesinde gerçekleĢebilmektedir. Bunun, Master Page’i uygulayan aspx sayfalarına getirdiği değiĢik kodlama etkileri de vardır.
Örnek Site Tasarımı
AĢağıdaki tabloda içeriği belirtilen bir web sitesini Master Page kullanarak tasarlanacaktır.
NORMAL WEB YÖNETİM WEB
Ana.master
Üstte Banner
Üstte site haritası
Solda Üye Girişi
Solda Menü
Yonet.master
Üstte yöneticinin Adı soyadı
Üstte bir yatay menü
İçerik bölümü Ana Sayfa
Tanıtım
Tanıtım ile yan yana yeni duyurular
Tanıtım yönetimi
Kişisel tanımını düzenleme Duyuru Sayfası
Duyurular Listelenir ve içerikleri gösterilir
Duyuru Yönetimi
Duyuru ekleme, düzenleme işlemleri ĠletiĢim Sayfası
Mesaj Panosu (Site yöneticisine mesaj bırakma)
ĠletiĢim Yönetimi
Gelen mesajlar okunup geri dönüş yapılabilir.
Resim Galerisi
Resimler kategorilere göre listelenecek. (küçük resimler ve kısa açıklaması, tıklanınca
büyüyecek ve altında uzun açıklaması olacak
Resim Galeri Yönetimi
Resim kategorileri oluşturulabilecek
Resimleri ve açıklamalarını düzenleyebilecek, ekleme yapabilecek
Yeni Üyelik
Yeni üye kaydı
Üye Yönetimi
Siteye üye olanların kontrolü ve yönetimi
AĢağıdaki Ģekilde Master Page sayfasının tasarımı görülmektedir. Normal kullanıcıların göreceği tasarım için Ana.master isimli, yöneticilerin görebileceği tasarım için da Yonet.master isimli MasterPage sayfaları tasarlanacaktır
Ana.Master BANNER
Site Haritası Üye Girişi
MENÜ İÇERİK
Hazırlayan
Yonet.Master Üye adı soyadı Yatay Menü İÇERİK
Böyle bir web sitesini tasarlamak için aĢağıdaki iĢlem sırasını izleyiniz.
İŞLEM SIRASI
1. Öğrenci numaranız ile klasör oluştur. (0914113000.web) 2. VS2008 ile bu klasöre web sitesini oluştur.
3. Default.aspx sayfasını sil.
4. Yukarıdaki şekle uygun olarak Ana.master MasterPage’sini oluştur.
5. Ana sayfayı Ana.master ile oluştur (Default.aspx) 6. Duyuru sayfasını Ana.master ile oluştur (Duyuru.aspx) 7. İletişim Sayfasını Ana.master ile oluştur (Iletisim.aspx)
8. Resim Galerisi sayfasını Ana.master ile oluştur (ResimGalerisi.aspx) 9. Yeni Üyelik sayfasını Ana.master ile oluştur (uyelik.aspx)
10. Yönetim için Yonet.master MasterPage’sini oluştur (Yonet.master) 11. Tanıtım yönetimi sayfasını Yonet.master ile oluştur (y_tanitim.aspx) 12. Duyuru yönetimi sayfasını Yonet.master ile oluştur (y_duyuru.aspx) 13. İletişim yönetimi sayfasını Yonet.master ile oluştur (y_iletisim.aspx) 14. Üye yönetimi sayfasını Yonet.master ile oluştur (y_uye.aspx)
15. Resim Galerisi yönetimi sayfasını Yonet.master ile oluştur (y_resgimGalerisi.aspx) 16. Site içinde UserControl isminde alt klasör oluştur (UserControl)
17. UserControl alt klasörü içinde menü için user control oluştur. Basit olarak ana sayfalara linkler verilsin (menu.ascx)
18. Ana.master Master Page’sine menü user controlünü ekle
H HA H A A F F F T T T A A A - - - 6 6 6
Yeni üyelik
Validation kontrol Üye Giriş Sistemi
MultiView, View, HyperLink, LinkButton kontrolleri
Yeni Üyelik Formu Tasarımı
Web sitesine üyelik iĢlemi olabilmesi için yeni üye olan kullanıcıların bilgileri bir veri tabanı ortamında saklanmalıdır. Bunun için öncelikle web sitesinin App_Data klasöründe bir veri tabanı dosyası oluĢturulması gereklidir. Basit ve kullanımı kolay olduğu için Access veri tabanı kullanılabilir. Fakat kapasite ve iĢlevsellik bakımından SQL server veri tabanı kullanarak site tasarımına devam edilecektir. Kod yazımında ve sayfa tasarımında hangi veri tabanının seçildiğinin çok fazla bir önemi yoktur. Sadece değiĢen Connectionstring nesnesidir. Diğer kısımlar aynı Ģekilde yazılır. Diğer veri tabanı yönetim sistemleri de kullanılabilir. Kod kısmında sadece Connectionstring değiĢikliğe uğrayacaktır. Diğer kodlamalar tamamen aynı kalacaktır.
App_Data klasörüne veri.mdf isimli bir veri tabanı dosyası oluĢturarak aĢağıda Ģeması verilen tabloyu Uye ismi ile oluĢturunuz.
Alan Adı Alan Tipi SQL Server Alan Tipi Özellik
uyeNo Otomatik Sayı int, Identity=Yes Birincil Anahtar
adi Metin(15) nvarchar(15) Boş geçilemez
soyadi Metin(15) nvarchar(15) Boş geçilemez
ePosta Metin(100) varchar(100) Boş geçilemez
web Metin(100) varchar(100)
meslek Metin(100) nvarchar(100)
kullaniciAdi Metin(15) nvarchar(15) Boş geçilemez, Sıralı (yineleme yok)
Parola Metin(15) nvarchar(15)
uyelikTarihi Tarih/Saat datetime Varsayılan Değer = Date()
sonZiyaret Tarih/Saat datetime
ziyaretSayisi Uzun Tamsayı int Varsayılan Değer = 0
onay Evet/Hayır bit Varsayılan Değer = Hayır
Daha önceden siteye eklenmiĢ olan uyelik.aspx sayfası açılarak Yukarıda tasarımı yapılan Üye tablosuna göre sayfa tasarımı yapılacak.
Validation Kontrolleri
Web sayfalarında en önemli bir konu bilgi giriĢi ve bunların kontrollerini yapan kontrollerdir.
Kullanıcıların hatasız ve eksiksiz olarak formların doldurulmasında önemli rol oynamaktadır. Ayrıca bu kontrollerin çalıĢması için Internet Explorer 4 ve üstü olması gerekmektedir.
Required Field Validator
Kontrol içerisine bir değer girilip girilmediğini kontrol eder. AtamıĢ olduğumuz kontrol boĢ geçilemez.
Range Validator
Belirlediğimiz iki değer arasında kontrol eder. Örneğin yaĢ aralığı için kullanılabilir.
Reguler Expression Validator
Karakter kontrolleri yapar. Mail adresinde @ iĢareti gibi kontrollerde kullanılır.
Compare Validator
Ġki giriĢ kontrolü arasındaki değeri, tipini veya dosyanı eĢitliğini kontrol eder. Custom Validator Validation için kendi kodumuzu yazmaya izin verir.
Yeni Üyelik Başvurusu
Yeni üyelik butonuna basılınca üye bilgileri veri tabanına eklenecektir. Bunun için aĢağıdaki kodları uyelik.aspx sayfasında Button1_click içine yazınız.
Üye Giriş Sistemi
Üye giriĢ sisteminde iki farklı tasarım vardır. Birincisinde Kullanıcı Adı ve Parola sorularak giriĢ yapılır. Ġkincisinde ise giriĢ yapıldıktan sonra “HoĢgeldiniz!” vb mesajların yer aldığı ve oturumu kapat ile ilgili butonun bulunduğu görünümdür.
Ġki farklı görünüm olan durumlarda MultiView kontrolü kullanılır. Sayfa üzerine Multiview kontrolü yerleĢtirildikten sonra kaç farklı tasarım var ise o sayıda Multiview kontrolü içine View kontrolleri eklenir.
Üye giriĢ sistemi tasarımı
Ġlk görünümde Yeni üyelik linki HyperLink kontrolü ile eklenmiĢtir. Bu kontrolün NavigateURL özelliğine bağlanmasını istediğimiz sayfanın adı yazılır (Uyelik.aspx).
Ġkinci görünümde Oturumu Kapat linki için ise LinkButton kontrolü eklenir. Bu kontrol bir link gibi görünür ve bir button kontrolü gibi çalıĢır.
MultiView kontrolü ilk açıldığında hiçbir görünümü çağırmaz. Ġlk görünümün çağırılması için ActiveViewIndex özelliğine 0 değerini yazarak ilk görünümde açılması ayarlanır.
GiriĢ Butonuna basıldığında TextBox’lara girilmiĢ olan kullanıcı adı ve parola veri tabanından kontrol edilmelidir. Güvenlik nedeniyle veri tabanından sadece kullanıcı adına göre veriler çekilecek ve daha sonra if komutu kullanılarak parola kontrolü yapılacaktır.
Kullanıcı adına göre veriler çekilip bir datatable nesnesine aktarılır. DataTable nesnesinde ya kayıt yoktur, ya da 1 kayıt vardır. Eğer kayıt yok ise kullanıcı adı hatalı girilmiĢtir. Kullanıcı adı doğru girildiyse sadece 1 kayıt gelmelidir. Eğer bir kayıt varsa bu kayıt üzerinde parola alanındaki bilgi kontrol edilir. Bu değer uyuĢuyorsa bilgiler doğru girilmiĢtir. Bu durumda kullanıcının Üye Numarası, Adı Soyadı ve Siteye son giriĢ tarihi vb bilgiler Session değiĢkenlerine alınır.
Bu iĢlemleri yapan kodlar aĢağıda verilmiĢtir.
Diğer taraftan üye giriĢ sisteminin iki görünümü var demiĢtik. Üye giriĢ usercontrol’ü yüklendiğinde ilk görünümü açar. Fakat üye giriĢi yapıldıysa ilk görünüm değil ikinci görünüm gelmelidir. Bunu sağlamak için uyeGiris.ascx usercontrol’ünün Page_Load olayına üye giriĢi
yapılıp yapılmadığını kontrol ederek giriĢ yapıldıysa ikinci görünümü açmasını sağlayan kodlar eklenmelidir.
Ġkinci görünümde Oturumu Kapat düğmesine basılınca oturumun sonlandırılması için aĢağıdaki kodlar yazılmalıdır.
H HA H A A F FT F T T A A A – – – 7 7 7
Üye Yetki İşlemleri Üyelik Yönetimi
SQLDataSource (AccessDataSource) Kontrolü GridView Kontrolü
Üye Yetki İşlemleri
Bir web sitesinde yönetim paneli ve kullanıcı sayfaları olduğunda veya üyeler arasında yetki farklılıkları olduğunda, üyelerin yetkilerinin belirlenmesi gerekir. Üyelerin yetkisi için Veri tabanında Üye tablosuna yetki adında, tinyint (bayt) tipinde bir alan eklendi. Normal kullanıcı için düĢünülen değer varsayılan değer yapıldı.
Bizim sitemizde iki tür üye olacağı için yetki 1 yönetici, yetki 2 üye için düĢünüldü. Bu kodlama duruma göre değiĢtirilebilir. Normal üyelerin yetki alanındaki değer 2 olması gerektiği için bu sütunun varsayılan değeri 2 olarak ayarlandı.
Sitede yetki ile ilgili olarak düzeltmeler yapılması gerekir. Ġlk olarak Üye giriĢ UserControl’ünde ayarlama yapıldı.
Session[“Yetki”] değiĢkeni eklendi. Ayrıca yetki ile giriĢin doğrudan etkisin görülmesi için sitenin yeniden yüklenmesi daha doğru olacağı için Response.Redirekt komutu ile default.aspx sayfası yeniden çağırıldı. Buna göre üye giriĢ UserControl sayfasının kodları aĢağıdaki gibi olur.
Yönetici yetkisine sahip olan kullanıcıların yönetim sayfalarına ulaĢabilmesi için Menü UserControl’üne “YÖNETĠM” adında bir link daha eklenmesi gerekir. Bu link sadece yönetici yetkisine sahip üyeler tarafından görülmelidir. Bu nedenle ASP kontrollerinden HyperLink kontrolü kullanıldı. Menü UserControl’ü yüklenirken üyenin yetkisine bakılarak bu link görünür hale getirilecektir.
Bu sitenin tasarımında yetki 1 yönetici idi. Üye giriĢ UserControl’ünde Session’da Yetki ismindeki değiĢkene üyenin yetkisi kaydedilmiĢti. Menü UserControl’ünde de bu değiĢkenden yararlanarak YÖNETĠM linkinin görünüp görünmeyeceği belirlenecektir.
Ġlk olarak Session[“Yetki”] isminde bir değiĢkenin olup olmadığı kontrol edilir. Eğer yoksa YÖNETĠM linki gizlenir. Ġkinci olarak Session[“Yetki”] değiĢkeninin değerinin 1 olup olmadığı kontrol edilir. Eğer 1 ise YÖNETĠM linki gösterilir, aksi halde gizlenir. Bununla ilgili olarak Menü UserControl’üne aĢağıdaki kodlar eklenir.
Menüde Yönetim sayfalarına link verilmemiĢ olsa bile oturum açılmadan doğrudan adres satırından yönetim sayfasının adı yazılarak giriĢ yapılabilir. Hâlbuki yönetim sayfalarına sadece yöneticilerin üye giriĢi yatıktan sonra girebilmeleri gereklidir. Bu durumda yöneticilerin giriĢ yapabileceği sayfaların Load olaylarına kontrol kodları eklenmelidir. Bu kodlar ile yönetici oturumu açılıp açılmadığı kontrol edilir. Eğer yönetici giriĢi yapılmadıysa sayfaya giriĢ izni verilmez. Bu kodların yönetim ile ilgili tüm sayfalara eklenmesi gerekir. Fakat bu pratik bir durum değildir. Site incelendiğinde tüm yönetim ile ilgili sayfalar yönet.master sayfası ile bağlıdır. Bu durumda kontrol kodları sadece yönet.master isimli MasterPage sayfasına eklenmesi yeterli olacaktır. AĢağıda yönet.master sayfasnın Load olayına eklenen kod görülmektedir.
Dikkat edilirse, üye giriĢi yapılmadığında ve normal üye giriĢi yapıldığında doğrudan default.aspx sayfasına yönlendirme yapılmaktadır. Yönetici giriĢinin yapılıp yapılmadığı Session[“Yetki”] isimli değiĢkenin değeri ile anlaĢılmaktadır. Bu durumda yönetim sayfası adres çubuğuna yazılsa bile bu yönlendirme sayesinde doğrudan default.aspx sayfası ekranda görünecektir.
Yönetim sayfalarında kullanılan MasterPage yönet.master sayfasında bir menüye ihtiyaç vardır. Bu menü yönet.master sayfasında basit olarak hazırlanmıĢtır.
Ġlk olarak web sitemizde üyelik iĢlemleri hazırlanmıĢtır: Yeni üyelik baĢvurusu ve üye giriĢi. Bu nedenle üyelik yönetim sayfası önce hazırlanacaktır.
Üyelik Yönetim sayfasında veri tabanı bağlantısı ve üye bilgileri üzerinde düzeltmeler için iki adet asp kontrolü kullanılmıĢtır: SQLDataSource (AccessDataSource), GridView.
SQLDataSource kontrolü y_uyelik.aspx sayfasına eklenir. Bu kontrolün ayarı yapılır.
Kontrol fare ile seçilince sağ üst köĢesinde beliren ok iĢaretine basılır. Açılan menüden
“Configure Data Source” seçeneği seçilir. Burada il olarak veri tabanı bağlantısı ayarı yapılır.