Son zamanlarda özellikle Silverlight, WPF ve Expression Studio ürün ailesi ile ilgili sizleri blogum ve webinerler aracılığı ile bilgi bombardımanına tuttuğumun farkındayım :) Ama aslında her şey bu kadarla bitmiyor. Visual Studio 2008, Windows Server 2008, SQL 2008, ASP.NET 3.5 gibi daha bir sürü yeni ürün ve teknolojiye her gün biraz daha yaklaşıyoruz. Ben bu yazımda özellikle LINQ'dan bahsetmek istiyorum. Bunun nedeni bence Visual Studio 2008 ile beraber gelen en önemli ve bize bir o kadar da yabancı olacak konulardan biri olması.
LINQ (Language Integrated Query)
Query dediğimizde aklımıza hemen SQL gelir, yani veritabanı sistemleri. Kullandığımız hangi veritabanı sistemi olursa olsun bir sorgu (quary) hazırlar ve veritabanı sunucusuna göndeririz. Geriye dönen veriye göre programımız gerekli işlemleri yapmaya devam eder. LINQ dediğimiz sistem ise herhangi bir veritabanı teknolojisi ile bire bir bağlantılı değil. Daha açık dile getirmek gerekirse, LINQ SQL2008 ile veya başka bir veritabanı sistemi ile beraber geliyor olmayacak. LINQ tamamen Visual Basic veya C# kodlarımızda kullanacağımız "sorguları" tanımlıyor. Ve günün sorusu geliyor; "Veritabanını sorgulamayacaksak VB veya C# içinde neyi sorgulayacağız?" Biraz düşünelim, bizim elimizde program kodlarını yazarken hangi veriler oluyor? Tabi ki .NET objeleri. Sizi daha çok meraka ve sıkıntıya sokmadan hemen bir örnek görelim.
Dim Sayilar() As Integer = {5, 7, 1, 4, 9, 3, 2, 6, 8}
Yukarıdaki gibi bir dizimizin olduğunu varsayalım. Bu dizi içerisindeki değerlerden sadece 5'ten ufak olanları küçükten büyüğe sıralayarak almak için nasıl bir kod yazardınız? Aşağıdaki gibi bir kod yazamayacağımız kesin.
Dim Bulunanlar = From n In Sayilar Select n Where n <= 5 Order By n
For Each n As Integer In Bulunanlar
Response.Write(n)
Next
Muhteşem değil mi? LINQ ile ilk olarak sanırım bir yıl kadar önce karşılaştım ve ilk tepkim "Bu işin cılkı çıktı" şeklindeydi :) Haklı olarak bir an için yukarıdaki gibi SQL yazımına yakın bir kodu VB ile yazabiliyor olmanın artık işimizi gereğinden fazla kolaylaştırdığını düşündüm. Tabiri caiz ise artık .NET tarafında da verilerle oynamak çocuk oyuncağı haline geliyor.
Aşağıdaki örnekte veritabanından veri çekmek yerine VB kodu ile bir DataTable oluşturarak içerisinde üç satır bilgi yerleştirdim. Bakın DataTable üzerine sorgu göndermek ne kadar kolay.
Dim tablom As New Data.DataTable
tablom.Columns.Add(New Data.DataColumn("Kolon1"))
Dim satir As Data.DataRow = tablom.NewRow
satir.Item(0) = "Deneme"
tablom.Rows.Add(satir)
satir = tablom.NewRow
satir.Item(0) = "Denek"
tablom.Rows.Add(satir)
satir = tablom.NewRow
satir.Item(0) = "Daron"
tablom.Rows.Add(satir)
Dim Bulunanlar = From n In tablom.Rows Where n.item(0) Like "*D*" Order By n.item(0)
For Each n As Data.DataRow In Bulunanlar
Response.Write(n.Item(0))
Next
Muhteşem. Ama bu kadarla kalmıyor gelişmeler. LINQ'nin birçok uygulanma şekli var. LINQ2XML, LINQ2SQL, LINQ2Entity vs... Maalesef bunların hepsinden bahsetmeyeceğim. Yukarıda incelediğimiz kısım LINQ2Entity veya LINQ2Objects olarak adlandırılabilir. Şimdi bir de LINQ2XML ile ilgili ufak bir örnek yapalım.
Dim Adam As XElement = _
<Adam>
<Adi>Daron</Adi>
<Soyadi>Yöndem</Soyadi>
</Adam>
Response.Write(Adam.<Adi>.Value)
Hayatımızın çok kolaylaşacağı ortada. Yukarda gördüğümüz kodlar bize en uzak seçenekte 6 ay mesafede. Peki şimdiden LINQ ile denemeler yapmak için nelere ihtiyacınız var? Özet olarak Visual Studio 2008 diyebilirim. Visual Studio 2008'e ait Beta2 sürümünü Microsoft web sitesinden indirebilirsiniz. Hatta direk sanal makine imajları da mevcut, bilgisayarınıza kurmadan direk sanal makineyi Virtual PC ile çalıştırarak var olan sisteminizi etkilemeden denemeler yapabilirsiniz. Tüm bu yazılımları ücretsiz indirmek için aşağıdaki linkleri kullanabilirsiniz.
Visual Studio 2008 Beta 2 Download
Virtual PC 2007 Download
Beta 2 aşamasında olan bir ürünün parçası olarak şu an LINQ'yu üretim amacıyla kullanmak pek mümkün değil. O nedenle önümüzdeki dönemde LINQ ile ilgili detaylı yazılar yazmayacağım. Yazılarımı takip edenler bilirler, her yeni çıkan teknoloji veya ürün bende küçük bir çocuğa verilen oyuncaktan farksız etki yaratır.Yazımın başında da bahsettiğim gibi zaten hali hazırda yeni "programcı oyuncakları" olarak elimizde yepyeni Silverlight, Expression Studio duruyor. LINQ biraz bekleyebilir :)
Bu yazımda amacım sizlere geleceğe yönelik ufak bir öngörü aktarmaktı. Hepinize kolay gelsin.