Visual Studio 2008 ve Language Integrated Query

0 dakikada yazıldı

7970 defa okundu

Düzenle

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.