E N D
ASP.NET Nedir? ASP.NET, Web sayfaları ve web servisleri oluşturmak için Microsoft tarafından .NET vizyonu çerçevesinde geliştirilen teknolojidir. Yeni bir yaklaşım ortaya konarak klasik web uygulamalarının object-oriented paradigmasıyla çalışması sağlandı. Böylelikle web sayfaları ve web sayfalarındaki kontroller birer obje olarak kullanılabilir hale geldi. ASP.NET ve .NET Framework Her .NET uygulamasında olduğu gibi Asp.net sayfaları da çalıştırılırken öncelikle .NET CLR compiler tarafından MSIL'e çevrilmektedir. Daha sonra JIT compiler tarafından bu aradil makine koduna çevrilir ve işlemci tarafından çalıştırılır. .NET Framework bu safhaları sayfanın her çağrılmasında yapmaya gerek duymaz. Bir kere sayfa derlendiğinde daha sonra derlenmiş kod bellekten çalıştırılmaktadır. Bu sayede uygulamalar klasik asp sayfalarına göre daha performanslı çalışır. Tıpkı windows formlar gibi asp.net uygulamalarında da web form'lar vardır. Web sayfaları event-driven mantığına yaklaştığı için bu şekilde adlandırılmaktadır.
ASP.NET'in ASP'ye karşı Avantajları • ASP.NET uygulamaları derlenmiş kod üzerinden çalışır dolayısıyla hatalar dizayn zamanında ayıklanmıştır. • try-catch blokları sayesinde hata yönetimi kolaylaşır. • Kullanıcı kontrolleri sayesinde uygulamalar daha modüler hale gelir. • Sayfa tasarımı windows uygulamalarındaki gibi kolay hale gelmiştir. • Geniş bir kontrol ve sınıf kütüphanesi ile daha kısa geliştirme zamanı sağlar. • Diğer .NET uygulamalarında olduğu gibi çoklu programlama dili desteği sağlar. VB.NET, C Sharp, Managed C++ v.s. • Cache mekanizmasını tüm sayfa üzerinde yada sayfanın belirli kısımları üzerinde tanımlanabilmesini ve bu sayede uygulamanın performansının esnek bir şekilde yönetilebilmesini sağlar.
Session nesnesinin SQL Server üzerinde tutulabilmesine olanak verir. Bu sayede server resetlendiğinde veya ASP.NET worker process tekrar başladığında Session değerleri korunur. • .NET 2.0 ile beraber framework'ün üretmiş olduğu html kodu W3C\ECMA standartlarına uygun hale gelmiştir. Daha önceki versiyonlarında(1.0, 1.1) bu konuda sorunlar vardı. • Nesneye dayalı programlama üzerine oluşturulmuştur. • Çok sayıda hazır kullanıcı kontrolleri ile daha az kod yazma, daha hızlı uygulama geliştirme • Dilden bağımsız bir ortam • Gelişmiş online/offline yardım araçları (MSDN) • XML Web Servisleri sayesinde uygulamanın farklı ortamlarla konuşturulması
Geliştirme Araçları ASP.NET uygulamaları geliştirmek için çeşitli araçlar var. Bunlardan ücretsiz olanlar arasında en yaygın olanı Visual Web Developer 2005 Express Edition'dır. Profesyonel anlamda en yaygın kullanılan araç Visual Studio 2005'tir. .ASPX Sayfaları aspx .NET ortamında web sayfaları için kullanılan dosya formatıdır. aspx sayfaları gerçekte düz metin sayfalarıdır. aspx sayfaları html ve dinamik koddan oluşur. aspx içerisinde C# kodları da yazılabilir fakat tercih edilmeyen bir yöntemdir. C# kodları business logic dediğimiz asıl işi yapan kısımdır. aspx sayfaları ise arayüz'ü (interface) temsil etmektedir. Sunucudan gelen talep ve cevapları içeren dinamik kod asp, jsp, php' de olduğu gibi <% dinamik kod %> şeklinde aspx içinde yazılır. aspx dosyaları ve diğer dosyalar IIS (Internet Information Services) üzerinde çalıştırılır. Bir aspx sayfası çağrıldığında IIS bunu .NET Framework'e yönlendirir.
ASP.NET Dosya Tipleri • Solution dosyası (.sln) • Web uygulaması dosyaları • ASP.NET Web Form dosyaları (.aspx) • Code-behind dosyaları (aspx.vb -aspx.cs) • Class dosyaları (.vb - .cs) • Master sayfalar (.master) • Şablon dosyaları (.skin) • Konfigürasyon dosyaları (web.config) • Site Haritası dosyaları (.sitemap) • ASP.NET Web Servisi dosyaları (.asmx) • Proje assembly dosyaları (.dll)
ASP .NET 2.0 ile Gelen Yenilikler • IIS’ten bağımsız çalışma • Code Snippets:Hazır kod parçaları ile daha hızlı kodlama • Server Kontrolleri:50’nin üzerinde sunucu kontrolü • MasterPages:Tek dosyadan sayfalar türetme • Temalar:Sitenin geneline uygulanabilecek tema ve şablonlar • Site Navigasyonu:Tek dosyadan tüm menü işlemleri • Veri Kontrolleri:Hızlı ve çok kolay veri işlemleri • Üyelik Kontrolleri:Hızlı ve pratik kullanıcı işlemleri • Üyelik ve Rol Yönetimleri:Kolaylaştırılmış rol yönetimleri • Web Kısımları (Webparts):Sayfaların kişiselleştirilmesi
IIS (Internet Information Services)’den bağımsız çalışma • Server Kontrolleri: Calendar, FileUpload, Wizard… • Code Snippets (Kod parçacıkları) • Visual Studio’nun yapısında bulunan etiketlenmiş haldeki kod parçacıkları. • Daha hızlı şekilde kod yazılmasını, program bloklarının oluşturulmasını sağlar. • Master Sayfalar (MasterPages) • İçerik açısından temel bir sayfadan başka sayfaların kalıtılmasını sağlar • Birden fazla sayfaya şablon olacak bir yapı sunar. Böylece içerik sayfaları şablon olarak master sayfasını kullanır • Tasarım ve kodlama aşamasında büyük kolaylıklar sağlar
Site.master Default.aspx http://.../Default.aspx İçerik Şablonu İçerik
Temalar (Themes) • Sayfalarda bulunan html elementlerinin ve ASP.NET sunucu kontrollerinin görünümünü belirleyen şablon kütüphaneleri oluşturulabilir • CSS ile html etiketlerinin formatlanması dışında .skin uzantılı dosyalar ile ASP.NET sunucu kontrollerinin görsel formatlamaları da tek bir noktadan yapılabilir • App_Themes klasörü ile uygulama ve sayfa bazında kolay şekilde temaların uygulanması ve yönetilmesi sağlanabilir • Uygulama bazlı tema belirleme • <system.web> • <pagestheme="YesilTema"></pages> • Sayfa bazlı tema belirleme • <%@ Page Language="C#“Theme="MaviTema" ….. %>
Tema aktif olan bir uygulamada sayfa bazında temayı engellemek için Page direktifinde EnableTheming=“False“ ifadesini belirtmek gerekir • Sayfa bazında ayarlamada intelli-sense desteği
Navigasyon Kontrolleri • Dinamik menüler oluşturmak için gerekli alt yapıyı sunar. JavaScript kullanmadan gelişmiş menü kontrolleri tasarlanabilir • .sitemap uzantılı XML tabanlı site haritası dosyaları oluşturularak sayfalarda dinamik menüler oluşturulabilir • Navigasyon Kontrolleri • Menu: Açılır menü kontrolü • TreeView: Ağaç yapısındaki menü kontrolü • SiteMapPath: O an sayfanın bulunduğu yolu belirten kontrol • SiteMapDataSource: .sitemap dosyasını Menu ve TreeView kontrolüne veri kaynağına bağlamak için kullanılır
Üyelik (Login) Kontrolleri • Bir web sitesinin üyelik alt yapısını geliştirmek oldukça zor ve uzun bir işlemdir. Veritabanı ve tabloların tasarımı, form arayüzlerinin hazırlanması, doğrulama kontrollerinin yapılması ve kodlanması… • Membership API ve login kontrolleri ile gerekli tüm bileşenler hazır olarak gelir ve bir web sitesinde komple üyelik sistemi neredeyse kod yazmadan hazırlanabilir
Üyelik Sistemini Özelleştirme • Özel ayarlarla kullanmak için web.config dosyasında bazı ayarlamalar gerekir
Varsayılan ayarlar machine.config dosyasında saklanmaktadır. web.config’de yapılacak ayarlar için bu dosyadaki bilgiler referans alınabilir • Membership API’leri varsayılan olarak SQL Server Express Edition veritabanını kullanır • SQL Server 2005 için hazır olarak gelen bir veritabanı bulunmaktadır • Üyelik Sistemini Farklı Veritabanları İçin Özelleştirme • SQL Server 2005 veritabanı ve tabloları için aspnet_regsql.exe ile uygun kurulum yapılmalıdır • web.config’e ilgili veritabanı bağlantı elementi eklenmeli ve buna göre providers kısmındaki connectionStringName niteliğine değiştirilmelidir • Eğer üye bilgilerini kendi veritabanımızda saklamak istersek MembershipProvider sınıfından bir sınıf kalıtarak miras alınan metotları ezmek(override) gerekecektir
Üyelik Sistemine Programatik Erişim • Üyelik sistemi sadece kontroller aracılığıyla değil, kendi tasarladığımız formlar aracılığıyla da kullanılabilir • Membership sınıfı altında yer alan statik metotlar kullanılarak programatik erişim sağlanabilir • Membership.ValidateUser("kullanici_adi", "sifre"); • Membership.CreateUser("kullanici_adi", "sifre", "eposta_adresi"); • Membership.DeleteUser("kullanici_adi"); • …..
Üye Kontrolleri Yeni hesap oluşturma, login olma, şifre doğrulama, şifre değiştirme gibi birçok işlem hazır kontrollerle sadece sürükle bırak ile kullanılabilir halde bulunmaktadır.
Üyelik ve Rol Yönetimi • Sitede bulunan bazı dizinlere verilen izin dahilinde belirli kullanıcıların bu dizine erişmesini sağlamak veya erişimini engellemek. • ASP.NET’in önceki sürümlerinde web.config dosyası ile kolaylıkla yapılabilen bu işlemler ASP.NET 2.0 ile birlikte daha hızlı ve pratik olarak yapılabilmektedir. (Web Site Administrator Tool) • Rol yönetimini aktif etmek için web.config’e şu ifade eklenmelidir • <roleManager enabled=”true”/>
Veritabanı İşlemleri • Var olan mimari aynen korunmakta ve programcının işini çok kolaylaştıran işlevler gelmektedir • Yeni kontrollerle birlikte karmaşık işlemler dahi çok kısa şekilde gerçekleştirilmektedir. • Veri sayfalama, sıralama, seçme, ekleme, güncelleme, silme işlemleri… gibi • Veri Kontrolleri • Gelişmiş veri kontrolleri: GridView, DetailsView, FormView • Gelişmiş özellikler ile kolon ekleme, güncelleme, ekleme şablonlarını özelleştirebilme • Olaylar aracılığıyla ele alınan satırları güncelleyebilme
Data ve DataSource Mimarisi Veriye kolay erişimi sağlayan data source kontrolleri: SqlDataSource, AccessDataSource, ObjectDataSource… Gelişmiş Command ve Parametre yapısı sayesinde kolay sorgulamalar gerçekleştirebilme
Tam sayı değişken sınıfı : -2.147.483.648 den 2.147.483.648 kadar olan tam sayıları integer tipi değişkenlerde tanımlayabiliriz. Ondalık Sayılar : Nokta ile kesirli kısımları ifade eder. Karakterler (Strings): Bu karakterler hemen her türlü olabilir.”^+%&”, “548”,”ASP.NET” vb; Boolean tip değişkenler : Boolean genel kullanışta doğru-yanlış, açık-kapalı, evet-hayır, 0 gibi iki zıt ifadeyi temsil eden ifadelerdir. Değişkenlerin Bildirimleri Degisken_tipi degisken_ismi şeklinde yapılır. Örneğin int mesafe;
Değişken İsimlendirilmesinde Dikkat edilecek Hususlar 1. Bir harf veya alt çizgi(_) ile başlamalıdır 2. c# için anlamlı ifadeler olmamalıdır. 3. 255 karakterden uzun olmamalıdır. 4. Karakterler aralarında; boşluk, bölü gibi hataya sebep olacak özel karakterler kullanılmamalıdır. Değişken Değerlerin Atanması int mesafe ; mesafe= 5 ; C# da değişken bildirimini ve atamasını aynı satırda yapmak mümkündür. int mesafe = 5 ;
Değişken değeri atamasında string tip değerler çift tırnak içinde yazılır; string mesafe = “5” publicpartialclass_Default : System.Web.UI.Page { protectedvoid Page_Load(object sender, EventArgs e) { int mesafe_1 = 100; int mesafe_2 = "150 km"; int b = mesafe_1 + mesafe_2; Response.Write(b); } }
Tip çevirimi Tip evirmek için “tip” i parantez içinde belirtip, çevirelecek tipin içine koymak. Bu tip çevrimler için hazır metotlar mevcuttur. ToBoolen ToBYte ToChar ToDateTime ToDouble ToInt16 ToInt32 ToInt64 To String publicpartialclass_Default : System.Web.UI.Page { protectedvoid Page_Load(object sender, EventArgs e) { int mesafe_1 = 100; String mesafe_2 = "150"; int b = mesafe_1 + Convert.ToInt16(mesafe_2); Response.Write(b); } }
Diziler (Arrays) string[] arac = new string[5]; arac[0] = "otomobil“; arac[1] = "kamyon“; arac[2] = "uçak“; arac[3] = "gemi“; arac[4] = "tren“; Veya string[] arac ={ "otomobil", "kamyon", "uçak", "gemi", "tren" }; Şeklinde tanımlanır.
publicpartialclass_Default : System.Web.UI.Page { protectedvoid Page_Load(object sender, EventArgs e) { /* string[] arac = new string[5]; arac[0] = "otomobil"; arac[1] = "kamyon"; arac[2] = "uçak"; arac[3] = "gemi"; arac[4] = "tren"; */ string[] arac ={ "otomobil", "kamyon", "uçak", "gemi", "tren" }; Response.Write("Dizinin 0 numaralı degeri: "); Response.Write(arac[0] + "<p>"); Response.Write("Dizinin 4 numaralı değeri: "); Response.Write(arac[4] + "<p>"); Response.Write("Dizinin 1 numaralı elamanı : "); Response.Write(arac[3 - 2] + "<p>"); } }