• Sonuç bulunamadı

ASP.NET DERS İÇERİĞİ HAFTA HTML Nedir?... 3 HTML avantajları... 3 HTML dezavantajları... 3 Microsoft.NET nedir?... 3 ASP Nedir?...

N/A
N/A
Protected

Academic year: 2022

Share "ASP.NET DERS İÇERİĞİ HAFTA HTML Nedir?... 3 HTML avantajları... 3 HTML dezavantajları... 3 Microsoft.NET nedir?... 3 ASP Nedir?..."

Copied!
42
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

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

(2)

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

(3)

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.

(4)

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:

(5)

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

(6)

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

(7)

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ı

(8)

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.

(9)

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.

(10)

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.

(11)

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.

(12)

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.

(13)

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

(14)

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.

(15)

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.

(16)

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

(17)

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.

(18)

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();

(19)

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&degisken2=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.

(20)

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.

(21)

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

(22)

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.

(23)

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.

(24)

Ö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

(25)

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

(26)

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.

(27)

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.

(28)

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ı

(29)

Ġ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

(30)

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.

(31)

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.

(32)

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.

(33)

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.

Referanslar

Benzer Belgeler

Bir web sayfası için yazı tipi, boyutu ve renginin belirlendiği bir stil şablonu oluşturup bu şablonu yerel, genel ve harici olarak

 &lt;img&gt; etiketi kapalıdır, yani bu etiket mutlaka parametreler ile kullanılır ve bir kapatma etiketi bulundurmaz..  Sayfanızda bir resim görüntüleyebilmek

“Sayfa şablonları” komutlarını tıklayarak aşağıdaki sayfaya gelelim burada tek tek Web sayfa seçeneklerini inceleyerek bizim için en uygun olan seçeneği alalım.. ve

Yukarıdaki komutları not defterine yazıp html dosyası olarak kaydettiğinizde aşağıdaki çıktıyı verir..

&lt;html&gt;…&lt;/html&gt; Bu kod browsera HTML belgesinin başladığı ve bitiği yeri bildirir.Bütün diğer kodlar bu iki kod arasına yazılır.. &lt;head&gt;…&lt;/head&gt;

kullanımına ait kod parçacığı Şekil 4.1.’de verilmiş olup ilgili kod parçacığının çıktısı Şekil 4.2.. deki

Kayseri İli’nde Bir Uygulama”, Atatürk Üniversitesi Sosyal Bilimler Enstitüsü Dergisi, 2012, 16(3), s.335.İstatistik, Ekrem Yıldız, Seçkin

 Yaşlanma; Kronolojik, biyolojik, fizyolojik, psikolojik, sosyo-kültürel, ekonomik ve toplumsal olmak üzere farklı boyutlarıyla tanımlanmaktadır.... KRONOLOJİK