18 Mayıs 2008 Pazar

Neden LINQ?

Java Hibernate ile piyasaya hızlı bir giriş yaptığı dönemlerde Windows'un NHibernate teknolojisi ile geride kaldığı adeta kabul edilen bir gerçekti. Her ne kadar bazıları veritabanına sorgu yazmanın daha alışılmış kolay ve performanslı bir işlem olduğunu düşünseler de Hibernate kendine önemli bir yer edindi.

Bu günlerde ise Microsoft'un .Net Framework 3.5 'i piyasaya sürmesiyle LINQ kavramı gündemimizde. Aslında Hibernate ile rekabet etmiyor LINQ. Zira sınıfları farklı. Yaratmış olduğunuz bir XML dosyasından, varolan bir dataset'ten, SQL den ve hatta csv dosyalarınızdan sorgu ile obje evet yanlış duymadık obje çekebilmemizi sağlayan altyapıdır LINQ. Performans olarak kıyaslandığında yaptığının bir for each döngüsünden çok daha performanslı olacağını düşünmek şimdilik zor gibi. Fakat hemen her alanda size sorgulama imkanı vermesi bana kalırsa en önemli yanı. Kullanıyor muyum diye soracak olanlar olursa: Evet kullanıyorum.

Öncelikle yazmış olduğumu kod sadeleşiyor. Tutup da bir for each yazarak tüm verilerimi bir datatable üzerinde gezmektense sadece bir sorgu yazıyorum. Verinin hafızada kalıp kalamayacağını seçebiliyorum. Bir sorgu üzerinden geri dönen şeyin obje olması ise bambaşka güzellik. Veriyi çektikten sonra istediğim özelliğini kullanabiliyor ve daha derleme zamanında hata ayıklama yapabiliyorum.

Ayrıca ilerleyen yıllarsa LINQ optimize olabilecek ve performansı artacaktır diye tahmin ediyorum. Bu durumda yazdığım kodu da tekrar geri dönerek değiştirmek gerekmeyecek.

Eksilerini ancak eskilerin artıları olarak sıralayabiliriz. bir sorgu sırasında değeri bulunca break komutu koymak pek de mümkün değil ve tüm koleksiyonu gezmeniz gerekiyor mecburen. Bu da performansa olumsuz yansıyor.

Kimbilir belki de düşüncelerim yeni olana yalakalıktan ibarettir. Bunu ancak zaman gösterir.

29 Nisan 2008 Salı

WPF ne ola ki?


Mesleğin en sıkıntılı yanlarından bir tanesi de sürekli değişime açık olma zorunluluğudur. Bu özellik hepimizin cv'lerinde yer ede dursun buna ayak uydurmak da kolay değil. .NET Framework 3.5 ile birlikte tanıştığımız ve Microsoft tarafından geçtiğimiz dönemlerde tanıtılan Windows Presentation Foundation da alışkanlıklarımızı değiştireceğe benzer.

Peki ne ola ki bu WPF dedikleri? Efenim kısaca açıklamak gerekirse Microsoft tarafından hem Macromedia Flash benzeri grafik kabiliyetlere sahip hem de halen kullanılmakta olan Windows Forms yapısını geliştiren altyapıdır. Gerek web tabanlı gerekse masaüstü uygulamalarda çok benzer yapılarla kullanabilecek bu altyapı yakın zamanda düğmelerin uçup kaçmasına sebebiyet verebilecektir.
Bu görsel iddiasından dolayı WPF aslen sadece yazılımcılar için değil aynı zamanda grafik tasarımcıları için de önem arz ediyor. Zira Microsoft aslında grafik tasarım ve kodlama kavramlarını WPF sayesinde ayırdı bile. Bir taraftan Microsoft Blend ile tasarımcılar cafcaflı arayüzleri tasarlarken diğer taraftan da yazılımcılar Visual Studio ile kodlarını bu görsele bağımlı kalarak geliştirmek durumundalar.

Ayrıca Windows Forms tarafında tanımlı olan kontrollerin de neredeyse baştan aşağı değiştiğini, gözden geçirildiğini ve ilk kez kullanan bir yazılımcı da afallama hissi yarattığını da not etmek isterim. Olumlu ve olumsuz yönlerini görmezden gelerek kullanmaya şartlandığımız Windows Form'larında adeta reform ve hatta rönesans devri yaşanıyor.

Her ne kadar WPF emekleme dönemindeki bir bebek olsa da orta ve uzun vadede bu konuda çok konuşulacağı aşikar. Fakat Microsoft uzmanlarının bizat verdikleri tavsiyelere dayanılarak söylüyorum ki tamamen WPF ile yapılacak bir yazılım için henüz çok erken. Windows Forms ve WPF karışımı bir yaklaşım bu aralar daha temkinli. Bekleyelim görelim.. Bahisler açıldı..