Yazı Font Küçült Yazı Font Büyült

ASP.NET 3.5 ile Gelen Yenilikler

Bu yazımızda ASP.NET 3.5 ile gelen yeniliklere hızlı şekilde göz atıyoruz. Yine geçtiğimiz günlerde resmen duyurulan ASP.NET 3.5 Extensions paketiyle gelen yenilikleri de inceliyor olacağız.
.NET Framework 3.5 sürümünün resmen duyurulmasıyla ASP.NET te 3.5 sürümüne ulaşmış oldu. Bildiğimiz gibi .NET Framework 3.0 ile önceki mimaride değişiklik olmamıştı ama Windows Presentation Foundation, Windows Communication Foundation, Workflow Foundation ve Cardspace gibi yeni teknolojiler mimariye eklenmişti. 3.5 sürümüyle birlikte ise önceki mimaride bazı değişiklikler, yeni eklentiler ve yeni tipler getirildi. Özellikle Linq (Language Integrated Query) adındaki Dil ile Bütünleşik Sorgulama modeli bu sürümdeki en göze çarpan yenilik oldu. Bu yazımızda Framework ün ASP.NET kısmında bizi ne gibi yeniliklerin beklediğini incelemeye çalışacağız.
Aslında ASP.NET i .NET Framework ün 1.0 sürümünden beri takip edenler 1.1 sürümünden 2.0 sürümüne geçişteki köklü ve önemli yenilikleri hatırlayacaktır. Yazımıza giriş yaparken hemen şunu belirtelim ki 2.0 sürümünden 3.5 sürümüne geçişte bu denli büyük ve köklü yeniliklerimiz olmayacak. Fakat AJAX ve Linq temelli olarak ta iki köklü yeniliğin geldiğini de belirtmekte fayda var. Bir diğer konu da ASP.NET 3.5 in ardından yakında resmen duyurulması beklenen ASP.NET 3.5 Extension paketi. (Belki de yazıyı okuduğunuzda bu paket resmen duyrulmuş olacaktır) ASP.NET MVC (Model View Controller) Framework, yeni AJAX ve veri kontrolleri ile SilverLight kontrollerinin ekleneceği bu paketinde mimariye dahil olmasıyla birlikte aslında daha da önemli yeniliklerin bizi beklediğini söyleyebiliriz. Makalemizin son kısmında bu paket ile ilgili de önemli bilgileri sizlerle paylaşmaya çalışacağım.
ASP.NET 3.5 ile gelen en önemli ve köklü iki yenilik AJAX Extension entegrasyonu ve Linq desteğidir. Aslında Linq C# 3.0 ile birlikte gelen bir yenilik ve platformdaki tüm uygulamalarda kullanabileceğimiz gibi ASP.NET uygulamalarında da kullanabileceğiz. Aşağıdaki başlıklarda gelen yenilikleri inceliyoruz.

Resim1

Şekil 1



Resim2

Şekil 2

Resim3

Şekil 3




1. ASP.NET AJAX Entegrasyonu
ASP.NET AJAX, ASP.NET ortamında hızlı ve kolay bir şekilde AJAX uygulamaları geliştirmemizi sağlayan ücretsiz bir AJAX framework üdür. ASP.NET 2.0 ın ardından duyurulan ve bu yılın (2007) başında resmi sürümü çıkarılan AJAX Extension ları ASP.NET 3.5 ile mimariyle bütünleşik şekilde geliyor. Artık temel sınıf kütüphanelerimiz içerisinde AJAX kontrolleri ve tipleri de bulunmaktadır. Bir başka deyişle AJAX web uygulamaları geliştirmek için ASP.NET in sitesinden ASP.NET AJAX paketini indirmeye ve kurulum yapmaya gerek kalmayacak.
.NET Framework 3.5 ile birlikte duyurulan yeni uygulama geliştirme ortamımız Visual Studio 2008 de açılan her ASP.NET 3.5 artık AJAX destekli olarak oluşturuluyor. Yani AJAX Extension kontrollerini kullanarak hızlı şekilde AJAX uygulamaları geliştirebiliyoruz. Yapılacak tek işlem sayfaya gerekli AJAX Extension kontrollerini eklemek ve gerekli işlemleri yapmak. Kurulum yapmaya, kontrolleri ToolBox a eklemeye ve proje oluştururken ayrı bir proje şablonu seçmeye gerek yok. Bu sürümü ile birlikte bazı eksiklikler ve sorunlar giderilerek artık ASP.NET AJAX ın sunucu kontrolleriyle tam uyumlu şekilde çalışması da sağlanıyor. Visual Studio 2008 ile birlikte Control Toolkit te yer alan kontrollerin varolan sunucu kontrollerine çok kolay şekilde entegre edilebilmesi de işimizi kolaylaştıracak bir yenilik olarak göze çarpıyor. Önceki sürümde olduğu gibi AJAX kontrollerimiz System.Web.UI isim alanına eklenmiş durumda. Aşağıda Microsoft un sunduğu .NET Framework 3.5 isim alanları ve sınıfları posterinden System.Web.UI kesiti bulunmaktadır. (ScriptManagerProxy ve Timer kontrolleri nedendir bilinmez bu postere eklenmemiş ama aşağıda güncellediğim posterin ilgili kesitini görebilirsiniz.)

2. LINQ (Language Integrated Query)
.NET Framewrok 3.5 ile birlikte artık web uygulamalarında da Linq hayatımıza girecek. Linq C# 3.0 ile birlikte geliyor ve dil ile bütünleşik olarak sorgulamalar yapılabilmesini sağlıyor. Veritabanında SQL query leri kullanarak nasıl tablolar üzerinde sorgulamalar yapıyor ve sorgu sonucunu elde edebiliyorsak, artık C# veya VB.NET gibi bir dil ile de uygulama içerisindeki bir nesnenin içeriği ile ilgili SQL sorgu cümlelerine benzer şekilde sorgulamalar gerçekleştirebileceğiz. Bir dizi, bir koleksiyon nesnesi, XML dosyadan alınan veriler veya DataTable gibi veri taşıyan bir nesne üzerinde Select, Where, Order By, Join... gibi tanıdığımız ifadeleri kullanarak sorgulamalar gerçekleştirebiliyoruz. Aslında Linq böyle 3-4 cümle ile anlatılacak kadar da basit bir yenilik değil. Aksine arka planda sadece Linq i desteklemek için bile birçok önemli yenilik C# diline kazandırılıyor. Linq ile birlikte gelen var tipi, nesne ve koleksiyonlara ilk değer atıcılar, extension metotları ile varolan bir sınıfa ek metotlar eklemek gibi birçok yeniliği de C# veya VB.NET gibi bir dil ile dolayısıyla ASP.NET ile bütünleşik şekilde kullanabiliyoruz.. Linq ve gelen diğer yeniliklerle ilgili olarak aşağıdaki blog yazılarını ve makaleleri okumanızı tavsiye ederim.

- C# 3.0 Ne Getiriyor ve LINQ PROJESİ Nedir?
- Bilinçsizce Türlendirilmiş Lokal Değişken (Implicitly Typed Local Variable): var
- Nesne ve Koleksiyonlara İlk Değer Atayıcı (Object and Collection Initializer)
- Genişletme Metotları (Extension Methods)
- LINQ: Daha Fazla Sorgu


3. YENİ VERİ KONTROLLERİ
ASP.NET 3.5 ile gelen AJAX kontrolleri dışında kontrol kütüphanemizde üç yeni kontrol daha ekleniyor: ListView, DataPager ve LinqDataSource. ListView ve DataPager kontrolleri ile artık daha esnek veri görüntüleme işlemleri yapabiliyorken, LinqDataSource kontrolü ile de tüm veri kontrollerini Linq sorgularının sonucuna bağlayabiliyoruz.

- ListView
ListView veri görüntüleme, veri seçme-ekleme-güncelleme-silme gibi işlemleri yapabileceğimiz bir kontrol. İlk bakışta GridView kontrolüne benzetebileceğimiz bu kontrolün GridView den üç temel farklılığı bulunmaktadır. Bildiğimiz gibi GridView ile veri seçme-güncelleme-silme gibi işlemleri otomatik olarak yapabiliyorken veri ekleme işlemini bu şekilde gerçekleştiremiyorduk; ancak oluşturulacak bir template içerisinde ekstra işlemler yaparak bu işlemi yapabiliyorduk. ListView ile artık veri ekleme işlemlerini de otomatik olarak gerçekleştirebileğiz (1. farklılık). ListView ile sayfalama işlemleri yaparken artık DataPager (bu yeni kontrole az sonra değineceğiz) gibi özel bir kontrol ile sayfalama template ini de özelleştirebiliyoruz (2. farklılık). Yine tasarım aşamasında ListView kontrolü ile daha özelleştirilebilir veri görüntüleme işlemleri yapabiliyoruz ki bu belki de ListView in GridView dan en önemli farklılığı (3. farklılık). ListView kontrolünü aslında GridView ve DataList kontrolünün harmanlaşmış versiyonu gibi düşünebiliriz. Tıpkı GridView deki gibi kolay şekilde tüm veri işlemlerimizi çözebilirken, DataList te olduğu gibi de arka planda HTML kodlarını kullanarak kontrolün görünümünü çok kolay şekilde istediğimiz gibi değiştirebiliyoruz. ToolBox ta Data Controls kısmında yer alan bu kontrolü basit bir şekilde nasıl kullanabileceğimizi görelim. Bu örnekte ListView i bir SqlDataSource kontrolü ile SQL Server veritabanındaki bir tabloya bağlıyoruz. Bu kısım aslında önceki veri kontrollerinde olduğu gibi, fakat bağlama işleminin ardından verilerin nasıl görüntüleceğini belirlememiz gerekecektir. ListView in sağ üst köşesindeki Smart-tag ikonuna tıklayarak açılan pencereden Configure ListView linkini seçiyoruz. Açılan pencereden verilerin nasıl listeleneceğini, stil ayarlarını ve veri ekleme, güncelleme, silme, sayfalama işlemlerini aktif hale getirip getiremeceğimizi belirliyoruz. Aşağıdaki resimde karşımıza çıkacak pencere ve yapabileceğimiz seçimler görünmektedir.

Aslında yukarıdaki resimde ilk ilgimizi çekecek durumlardan birisi verileri artık yan yana da dizebildiğimiz olabilir. ListView tıpkı DataList kontrolü gibi arka planda HTML kodları ile özelleştirilebildiği için artık görüntülenecek verileri esnek şekilde kullanıcılara görüntületebiliriz. Bu şekilde yine görsel kısımdan yapacağımız işlemlerle veriye çok kolay erişebiliriz. ListView ile ilgili olarak kullanabileceğimiz bazı önemli özellikler (property) ve açıklamalarını aşağıda bulabilirsiniz.
DataSourceID: Bağlanacak DataSource kontrolünün ID bilgisi
EditIndex: Güncelleme işleminin yapılacağı kayıt numarası. Varsayılan değeri -1 dir ve hiçbir kayıtı güncelleme modunda açma anlamına gelir
GroupItemCount: Gruplanacak kayıt sayısını belirler. Bu sayı tek satırda kaç kayıt bulunacağını belirler ve 1 dışında bir değer verildiğinde GroupTemplate tanımlaması da yapılması gerekecektir.
InsertItemPosition: Insert şablonunun bulunacağı yeri belirler. InsertItemPosition enum sabiti tipinden değer alır ve alabileceği değerler None, FirstItem ve LastItem dır.
ItemContainerID: Görüntülenecek verilerin bulunacağı HTML elementin ID bilgisini taşır.
LayoutTemplate, ItemTemplate, AlternatingItemTemplate, SelectedItemTemplate, InsertItemTemplate, EmptyDataTemplate, EditItemTemplate, GroupTemplate gibi görünüm şablonları içerisine yazılacak uygun HTML elementleri ile verinin her türlü görünümünü belirleyebiliriz. Aşağıda ListView ile oluşturulmuş bir sayfanın çıktısını görebilirsiniz.

- DataPager
ListView ile bütünleşik şekilde kullanabileceğimiz bu kontrol ile ListView in veri sayfalama template ini şekillendirebilmekteyiz. ListView in TemplateLayout şablonu içerisine eklenir. Temel olarak esnek sayfalama template hazırlamamızı sağlayan bu kontrolde ToolBox ın Data Controls grubunda yer alıyor. İki farklı görünüm şekli bulunan bu kontrole eğer istenilirse TextBox, DropDownList gibi kontroller eklenerek özelleştirebiliriz. Örneğin toplam 20 sayfadan oluşan verilerimizde bir TextBox a 15 yazarak 15 numaralı sayfaya gidilmesini sağlayabiliriz. Burada akla gelen sorulardan birisi şu olabilir DataPager gibi etkin sayfalama işlemleri yapabilen bu kontrolü sadece ListView kontrolü ile birlikte kullanılabiliyor.

- LinqDataSourceaSource
LinQ ile yapılan sorgu sonuçlarını veri kontrollerine bağlanmasını sağlayan kontroldür. Aslında bu kontrolle birlikte .NET Framework 3.5 ve Visual Studio 2008 ile gelen yeni bir dosya tipinden bahsetmekte fayda olacaktır: yeni bir dosya eklerken karşınıza LINQ to SQL Classes tipi olarak gelen DataBase Markup Language (dbml) dosyaları. Gelişmiş bir projedeki en büyük ihtiyaçlarımızdan birisi de veritabanındaki tabloların class olarak karşılıklarını uygulamamızda oluşturmak olacaktır. Aslında entity katmanı oluşturarak daha kolay şekilde veri ile çalışmaktan bahsediyoruz. dbml dosyaları veritabanındaki bir tablonun tüm özelliklerini taşıyan class ını oluşturmamızı sağlar. DataContext tipindeki nesneler üzerinde Linq sorguları çalıştırabiliriz. LinqDataSource kontrolümüzde bu amaca yönelik kullanılabilecek bir kontroldür.

4. WEB SERVİSLERİNDE WCF DESTEĞİ
Web servisleri artık .NET Framework 3.0 ile gelen WCF (Windows Communication Foundation) desteği ile geliştirilebiliyor. JSON kullanılan AJAX uygulamalarında ve RSS kaynaklarından veri sağlanması gibi işlemler artık WCF ile daha da kolay şekilde gerçekleştirilebilecek. Yine Visual Studio 2008 de yeni bir web projesi oluştururken WCF Service proje şablonu, projemize yeni bir dosya eklerken WCF Service dosyası (.svc) karşımıza çıkan yeniliklerden bazıları.
ASP.NET 3.5 ile birlite gelen temel yenilikler bunlar. Gözümüze biraz az gelmiş olabilir ama Microsoft geçtiğimiz günlerde çıkardığı ASP.NET 3.5 Extensions paketi ile artık ASP.NET 3.5 i daha da güçlü hale getirdi. Bu yeni paket ile gelen yeni kontroller ve MVC Framework ile artık daha güçlü ve zengin web uygulamaları geliştirebiliyor olacağız. Aşağıdaki kısa yazıda ASP.NET 3.5 Extensions paketini tanımaya çalışıyoruz.
 
ASP.NET 3.5 EXTENSIONS
Aslında Microsoft bunun bir benzerini ASP.NET 2.0 ın ardından ASP.NET AJAX Extension ı duyurarak yapmıştı. Şimdi de benzeri bir strateji ile geliyorlar. AJAX ancak 3.5 sürümünde mimariyle bütünleşti, belki 3.5 Extensions ile gelen yenilikler de ASP.NET 4.0 (böyle bir sürüm olur mu bilinmez) ile bütünleşik gelecektir. Aslında ASP.NET 3.5 Extensions içerisinde daha önceden duyurulan ASP.NET Futures paketindeki kontroller ile ASP.NET MVC Framework ün olduğunu söylesek pek te yanlış olmaz. Aşağıda bizleri bekleyen yenilikleri hakkında kısa bilgileri bulabilirsiniz.
1. ASP.NET MVC Framework: MVC yani Model View Controller. MVC mimarisi aslında daha önceden de duyulan bir tasarım deseniydi (design pattern) programlama dünyasında. Bu yaklaşımdaki temel mantık bir web projesini üç temel parçaya bölmek ve yapılacak işleri bu parçalar üzerinden yürütmektir. Hazırladığımız projelerde sıklıkla kullandığımız uygulamayı iş katmanı ile veri katmanı olarak ayrı parçalara bölmeyi buradaki yaklaşım ile benzeştirebiliriz. Aslında temel amaç uygulamayı işe yarar belirli amaçları olan parçalara bölmek ve bir parçanın değişiminden diğer parçaların etkilenmesini engellemektir. MVC uygulamanın Model, View ve Controller olarak üçe ayrılmasını benimseyen bir tasarım desenidir.
- Model veri ve durum bilgilerini taşır. Burası DataTable, DataSet ve entity katmanımızdaki sınıfların bulunduğu bileşendir.
- View uygulamanın arayüzlerinin bulunduğu bileşendir. Master sayfalar, aspx ve ascx gibi kullanıcının görüntüleyeceği dosyalar bu kısımda yer alır.
- Controller ise arayüzler arasındaki etkileşimi sağlayan, veri nesneleri üzerinde değişiklik yapılmasını sağlayan bileşenlerdir. Örneğin, Controller katmanındaki sınıflar aracılığıyla etkin URL Mapping işlemi yaparak artık tarayıcı üzerinden sayfalara istek yapmak yerine nesnelere istekte bulunabiliyoruz. Yani URL üzerinden tarayıcıda görüntülenecek nesnenin render edilmesi sağlanabiliyor.
2. ASP.NET AJAX Tarafındaki Geliştirmeler: Futures paketinden tanıdığımız History kontrolü bu paketin içerisinde olacak. AJAX sayfalarında tarayıcıdaki ileri-geri gitme problemini çözecek olan bu kontrol asenkron postbackler esnasında sayfanın URL kısmını değiştirerek tarayıcının değişen sayfa içeriklerini geçmişine kaydetmesini sağlıyor.
Dinamik Veri (Dynamic Data) Desteği/strong>: Yine Futures paketinden tanıdığımız bir özellik. DynamicAutoData, DynamicList, DynamicNavigator, DynamicRssLink gibi bazı veri kontrolleri ile bir veritabanında yapacağımız Select, Insert, Update, Delete gibi işlemleri neredeyse kod yazmadan gerçekleştirebilmemizi sağlıyor. .NET Framework 3.5 ile gelen Database Markup Language (dbml)/strong> dosyaları ile dinamik veri kontrollerini birlikte düşününce ve üstüne MVC Framework ü de katınca bu yeniliklerin MVC nin Model katmanını oluşturacağını söyleyebiliriz.
SilverLight Desteği: SilverLight artık ASP.NET ile giderek bütünleşiyor. Tahminen yine Futures paketindeki Media ve XAML kontrollerinin ekleneceği bu pakette ASP.NET ile SilverLight ın entegrasyonunun daha da kolaylaşacak. Yani daha interaktif daha zengin içerikli sayfalar geliyor.
ADO.NET Veri Servisleri (Data Services): ADO.NET Entity Framework adı verilen bu pakette ASP.NET 3.5 Extensions ile birlikte duyurulacak. Object Relation Mapping (ORM) desteği ile daha da güçlenen .NET Framework 3.5 teki veri işlemleri aslında bu framework altında toplanıyor gibi. Artık veri ile ilgili her türlü işlemi oluşturacağımız veya SqlMetal.exe aracı ile oluşturulacak class lar ile gerçekleştireceğiz gibi.
ASP.NET 3.5 Futures paketiyle ilgili daha detaylı bilgi edinmek, bilgisayarınıza yüklemek ve kullanmak için http://asp.net/downloads/3.5-extensions/ adresine göz atabilirsiniz. Bir başka yazıda görüşmek dileğiyle.

NOT: Bu yazı Uğur UMUTOĞLU nun makalesinden ALINTIDIR.