WPF - .NET Framework 3.5 ile Gelen Yenilikler

Visual Studio 2008 ‘i yakından takip edenler hatırlar ki 3 hafta(20 Kasım 2007) önce tam sürümü biz geliÅŸtiricilere sunulmuÅŸtu. Bu tam sürümün piyasaya sunulması ile birlikte birçok sorun düzeltilmiÅŸken Windows Vista kullanıcılarında bazı sorunlar ile karşılaÅŸtır. Fakat bu sorunlarda çözülemeyecek kadar vahim deÄŸildi. Bazıları .NET kütüphanelerine ulaÅŸamıyorlardı, bazıları ise hiçbir kod yazmadan boÅŸ projeyi derleyemiyorlardı. Bu tür sorunların çözümleri tahmin edeceÄŸiniz üzere oldukça kolaydı. Nerelerde çalışacaklarını belirtmemiz yeterliydi.

Bu geliÅŸimlerin ötesinde birde çok güzel bir olay yaÅŸandı. .NET3.0 ömrünü doldurmuÅŸ yerini .NET3.5 almıştır. Bu geliÅŸimler olurken bizlerinde .NET3.0 bünyesinde yer alan yeni nesil dillerin ne tür deÄŸiÅŸiklikler yaÅŸadığını merak etmeye baÅŸlamıştık. Bu meraklar ilk olarak eski özellikler kaybolup kaybolmadığı ile ilgiliydi. Fakat bunun yersiz bir merak olduÄŸunu ve kaybolması yerine birçok ek özellikle geldiÄŸini öÄŸrenmiÅŸ olarak içimizi rahatlatıyorduk. Peki, .NET3.5 ‘te neler yeniydi. Ä°lk olarak bu sorunun cevabını bulmamız gerekiyordu.

.Net3.0 ile aramıza katılmış olan WPF, WCF, WF ve CardSpace .NET3.5 bünyesinde yerlerini almışlardı. Peki daha yeni ne vardı. Hatırlayacağınız kadarıyla Visual Studio 2005 ’e .NET3.0 ile birlikte Linq to SQL, Ajax gibi eklentilerde kuruyorduk. Bu teknolojilerin hayatımızı oldukça kolaylaÅŸtırdığı söyleyebilirdik. DoÄŸal olarak beklentimiz yeni çekirdekte bulunmasıydı. Çünkü bu yapılar .NET3.0 bünyesine dahil edilmemiÅŸlerdi. Microsoft’ta çalışan .NET geliÅŸtiricileri de bu durumu gözlerinden kaçırmayarak bu iki nadide yapının yanında Rest adı verilen bir yapıyı da .NET3.5 çekirdeÄŸine de ekleyerek beklentileri karşılamış oluyordu.

Peki, bu kadar eklemeler olurken eskiden bünyede yer alan dillere ve eski sürüm Framework ’lere destek ne düzeydeydi. .NET2.0 tek bir eksiklik dışında tamamıyla .NET3.5’ eklenmiÅŸ. Fakat tek bir eksikten bahsetmiÅŸtik. VS ’in daha önceki sürümlerinde Java geliÅŸtiricilerini düÅŸünerek tamamıyla pazarlama taktiÄŸi olarak kullanılan J# dili VS 2008 ’de maalesef yerini alamamış. DiÄŸer diller ise (VB.net, C++.net ve C#.net) varlıklarını sürdürmektedirler. Tabii unutulmaması gereken bir nokta ASP.NET ’te 3.5 sürümü ile aramızda kalmaya devam etmektedir.

.NET3.5 yapısında yer alan dilleri ve kütüphaneleri gösteren bir resim ile yukarıda açıkladıklarımızı daha da akılda kalıcı kılabiliriz.

mak22_1

.NET3.5 çekirdeÄŸinde hangi dillerin ve yapıların yer aldığına göz attıktan sonra, bu yazımızda deÄŸinmeyi amaçladığımız .NET3.5 WPF ’e ne tür yenilikler getirdi olacaktır.

Windows Presentation Foundation(WPF) aramıza 2005 yılının son çeyreÄŸinde Avalon kod adı ile merhaba demiÅŸti. Kendisi ile birlikte gelen yenilikler ile adından çokça söz ettireceÄŸe benziyordu. Öylede oldu. Peki, ilk çıktığı zamanlarda ne gibi yenilikler getiriyordu. Ä°lk olarak geliÅŸtirme aÅŸamasında bizlere XML ’den türemiÅŸ olan XAML(Zammel) ile merhaba diyordu. XAML yardımı ile artık standartlaÅŸtı dediÄŸimizi Windows Formlar büyüleyici bir görünüme kavuÅŸmuÅŸ oldular. Resim, animasyon gibi verilerimizi alternatif programlar(Expression Studio ailesi) yardımı ile XAML kodlarını alarak uygulamamıza ekleyebiliyorduk. Bunun bizlere kazancı tasarımcı – geliÅŸtirici uyumunu en üst düzeye çıkarmakla birlikte tamamen sayısal kodlar yardımı ile verilerimizi uygulamamıza eklediÄŸimiz için hem uygulamanın boyutu hem de performansı en uygun denilebilecek seviyeye yaklaÅŸmış oluyordu.

2006 yılının ortalarında ise .NET3.0 ile birlikte Avalon kod adı Windows Presentation Foundation ile gerçek ismine kavuÅŸuyordu. Bu sefer getirdiÄŸi yenilikler, masaüstü uygulamalarında Browser tarzı uygulamalar sunarak web ile tam uyum içinde çalışan yazılımlar geliÅŸtirmemize olanak tanıyordu. Bunları yaparken de XAML ile birlikte C# ‘ın uyumlu çalışması geliÅŸtiricileri kendisine çekmeye baÅŸlıyordu.

2007 yılının son çeyreÄŸinden ise Visual Studio 2008 ile .NET Framework 3.5 ‘in içerisinde yer alarak kendisini yenilemiÅŸ olarak aramıza daha da kuvvetli bir biçimde yer almış oluyordu. Kod yazımı biraz daha kolaylaÅŸtırılması gibi özellikleri, web servisleri ile karşılaşılan sorunların çözümü gibi yenilikler ile kendini daha kuvvetlendirmiÅŸ olarak geliÅŸtiricilere kendisini sunuyor.

Åžimdi ayrıntılı bir biçimde WPF ’in .NET Framework 3.5 ile ne tür yeniliklere sahip olduÄŸuna deÄŸineceÄŸiz.

3.0 sürümü ile Uyumu

.NET3.0 ile hazırlanmış olan uygulamalar .NET3.5 ile çalıştırılmak istendiÄŸinde yeni sürüme güncelleme yapılarak sorunsuz bir biçimde çalıştırılması saÄŸlanmıştır.

.NET3.5 sürümü ile geliÅŸtirilmiÅŸ uygulamalar .NET3.0 ile geliÅŸtirilmek istendiÄŸinde XAML ’de yeni nesil XML kütüphanesi yok ise sorunsuz bir biçimde çalışmaktadır.Bu yeni nesil XML kütüphanesi: http://schemas.microsoft.com/netfx/2007/xaml/presentation dır. Bu kütüphaneyi .NET3.0 sürümü ile çalıştırmak istiyorsak 2006 sürümünü seçmemiz gerekmektedir. Bu sürümü nasıl seçeceÄŸimizin ekran görüntüsüne alttaki resimden ulaÅŸabilirsiniz.

mak22_2

.NET3.0 sürümünden .NET3.5 sürümüne geçiÅŸte bir güncellemenin olduÄŸunu belirtmiÅŸtik. Bu geliÅŸtirme esnasında uygulanan mimariyi aÅŸağıda bilgilendirme için vereceÄŸiz. VermiÅŸ olduÄŸumuz bu mimari .NET1.1 sürümünden bu yana kullanıldığından ötürü bu sürümün mimarisini verirsek mantıken herhangi bir sorun ile karşılaÅŸmayız.

mak22_3

Yukarıda görmüÅŸ olduÄŸunuz mimari farklı .NET sürümlerinde geliÅŸtirilmiÅŸ olan uygulamalarda güncelleme sırasında uygulanan mantıktır.

Uygulamalar Açısından Yenilikler

Uygulama modellerinde geliÅŸtirilmiÅŸ olan özellikler:

• XBAP ile geliÅŸtirilmiÅŸ geniÅŸ çaplı uygulamalarda görüntüsel olmayan(dll) öÄŸeler eklenmek istendiÄŸinde uygulama hata verip Visual Studio kendisini kapatıyordu. Bu sorun çözülmüÅŸ. Bu arada XAML ile geliÅŸtirilmiÅŸ Browser uygulamalarına XBAP denilmektedir.

XBAP uygulamaları Firefox ile sorunsuz bir biçimde çalışabilecek düzeye getirilmiÅŸ. Fakat Opera ve Safari internet tarayıcılarında hala sorunlar ortaya çıkmaktadır.

• XBAP uygulamaları internet tarayıcısında çalışırken artık arka planda cookie ‘lerin oluÅŸmasına olanak tanınıyor. Yani uygulama diÄŸer web siteleri gibi dosyalarını tarayıcının yedeklemesine izin veriyor. Bu gelen yenilik uygulamaların tarayıcılarda ilk defa açılmasından sonraki açılmalarından açılma süresi olarak gözle görülür bir hızlanma olmasına sebep olacaktır.

• XAML de kullanılmakta olan IntelliSense çok daha iyileÅŸtirilmiÅŸ(Visual Studio 2005 ’te .NET3.0 SP1 gelene kadar maalesef çok kötü çalışıyordu).

• Localization özelliÄŸinde kullanılmakta üzere ekstra dil aileleri eklenmiÅŸ.

Visual ve NonVisual Yapıların WPF ’e Eklenmesi

.NET3.0 sürümünde uygulamalara fonksiyonellik katabilecek eklentiler yapabilmemize olanak tanınıyordu. Amaçlanan fonksiyonelliÄŸi .NET Framework ’ün izin verdiÄŸi ölçüde saÄŸlayabilmekteydik. ÖrneÄŸin bu fonksiyonelliÄŸi dinamik link kütüphanesi(dll) ile saÄŸlayabiliyorduk. Fakat eÄŸlence ile ilgili bir eklenti eklemek istediÄŸimizde yalnızca Microsoft tarafından geliÅŸtirilmiÅŸ olan eÄŸlence dosyalarını uygulamamıza ekleyebiliyorduk.

Tabii bu tür yukarıda bahsettiÄŸimiz eklentiler dışında eklentiler yapabilmemiz için 3. Parti yazılımları kullanmamız gerekmekteydi. .NET3.5 ile birlikte Office dosyalarından Visual Studio eklentilerine ve Windows Media Player ’ı hiçbir sorunsuz bir biçimde ekleyebilmekteyiz.

Yukarıda belirttiÄŸimiz eklentiler dışında UIElement ve FrameworkElement ile geliÅŸtirilmiÅŸ uygulamaları da sorunsuz bir biçimde kullanabilmemiz mümkündür. Örnek senaryolar ile kullanılabilirliÄŸi açıklamaya çalışalım:

• Messenger stili uygulamalar geliÅŸtirilebilmesi mümkündür. Arka planda oluÅŸturulmuÅŸ olan web servisleri ile kendimiz tarafından geliÅŸtirilmiÅŸ bir 3. Parti yazılımımız olabilir.

• Oyun uygulamaları geliÅŸtirerek belirli bir host ile kullanıma sunabiliriz.

• Ä°çerik tarayıcı oluÅŸturabilmemiz mümkündür. Kendime ait bir PDF Reader imiz olabilir.

• Mashup tarzı uygulamalar geliÅŸtirebilmemiz mümkündür. Örnek olarak Windows Sidebar ’ları

ve bu senaryoların dışında tarayıcılar üzerinde çalışabilecek sınırsız sayıda XBAP uygulamaları geliÅŸtirebilmemiz mümkündür.

WPF ’te Add-In ile ilgili daha ayrıntılı bir yazımız yakın zamanda sitemizde yer alacaktır.

Firefox ile XBAP

WPF 3.5 ’da Firefox 2.0 da XBAP uygulamalarının çalışmasına olanak saÄŸlamıştı. Åžimdi WPF 3.0 ile Firefox kullanıcılarının başına gelen ve çözülmüÅŸ olan birkaç sorundan bahsedelim:

Varsayılan tarayıcısı Firefox 2.0 olan geliÅŸtiricilerde XBAP uygulamalarını derlemek neredeyse bir kabul durumuna gelmiÅŸti. Çünkü bu uygulamalar çalıştırılmak istendiÄŸinde tarayıcıya fazladan yüklenerek kilitlenmesine sebep olmaktaydı. Bu geliÅŸtiricinin sisteminde Internet Explorer ’da yüklü deÄŸilse geliÅŸtirmiÅŸ olduÄŸu XBAP uygulamalarını test edememekteydi.

Karşılaşılan bir diÄŸer sorun ise alternatif yollarla XBAP uygulamasını Firefox ’ta çalıştırma baÅŸarısını gösteren geliÅŸtiricilerde Internet Explorer ’da saÄŸlanan güvenliklerin hiç biri saÄŸlanmıyor olmasıdır. Bu durum uygulama internet üzerinde çalışırken kötü düÅŸünceli bilgisayar korsanları tarafından sistemimize girilmesi olacaktır.

Cookie

Tarayıcılarda XBAP uygulamaları derlendiÄŸi zaman arka planda oluÅŸturulan oturum dosyalarını otomatik olarak siliyordu. WPF3.5 ile bu oluÅŸturulan cookieler biz istemediÄŸimiz sürece silinmez suruma geldi. Bu sayede XBAP, tarayıcılar tarafından web servis ve HTML gibi algılanmaktadır.

Visual Studio IntelliSense

Visual Studio ‘nun XAML editörüne eklenen yeni elementleri artık IntelliSense ’te yardımı ile eriÅŸebiliyoruz.

Localization

WPF3.5 ‘in bünyesine eklenmiÅŸ olan yeni dil aileleri aÅŸağıdakilerdir.

Bengali
Devanagari
Gujarati
Gurmukhi
Kannada
Malayalam
Oriya
Tamil
Telugu

Grafik

WPF ’in grafik objeleri sayısal veri olarak tuttuÄŸunu ve bu yöntem sayesinde oldukça hızlı olduÄŸundan defalarca bahsetmiÅŸtik. Bu sayısal yöntem dışında internet üzerinden ya da yerel bilgisayarımızdan resimleri alabilmemiz mümkündür. Ä°ÅŸte grafiksel olarak eklenen öÄŸeler için 4 adet daha Bitmap metodu oluÅŸturulmuÅŸ. Bu metotlara ve aldıklara parametrelere bir göz atalım.

BitmapImage.UriCachePolicy

BitmapDecoder.Create(Uri, BitmapCreateOptions, BitmapCacheOption, RequestCachePolicy)

BitmapFrame.Create(Uri, RequestCachePolicy)

BitmapFrame.Create(Uri, BitmapCreateOptions, BitmapCacheOption, RequestCachePolicy)

Bu metotlar yardımı ile istediÄŸimiz görüntüleri daha farklı özelliklerle uygulamamızda kullanma olanağımız oluÅŸmuÅŸtur.

3-D Grafik

Yeni nesneler ve sınıflar geliÅŸtirilmiÅŸ ve WPF3.5 bünyesine eklenmiÅŸtir. En göze batan özellik ise enteraktif uygulamaların boyutsal dönüÅŸümlerde kullanılacak olan yeni bir sınıf oluÅŸturulmuÅŸ olmasıdır.

Enteraktif 2-D ve 3-D Uygulamaları

Viewport2DVisual3D isimli yeni bir oluÅŸturulmuÅŸtur. Bu sınıf sayesinde enteraktif olarak alınmış 2D görüntülerin içeriÄŸi 3D ‘ye dönüÅŸtürülebilmektedir.

Data Binding

Bu özellik ilgili birkaç iyileÅŸtirme yapılmıştır. Bunlar:

Yeni bir debug mekanizması oluşturuldu. Bu sayede binding yaptığımız kodları da kolayca debug yapabileceğiz.

Business Layer ’da oluÅŸabilecek hatalara karşı IDataErrorInfo metot iyileÅŸtirilmiÅŸtir. Bu model yardımı ile kullandığımız özelliklerde karşılaÅŸabileceÄŸimiz hatalardan haberdar olmamız saÄŸlanmıştır.

Data Binding modeli Linq ve Dlinq ile iliÅŸkilendirilebilir oldu.

Yeni Debug Mekanizması

Data Binding iÅŸlemlerinde debug iÅŸlemlerinin yapılmasının kolaylaÅŸtırıldığı bilgisini vermiÅŸtik. Bu iÅŸlemin gerçekleÅŸmesini PresentationTraceSources.TraceLevel özelliÄŸinin debug yapısına eklenmesi ile saÄŸlanmıştır.

Bu son özelliÄŸimizi incelememiz ile WPF ’e .NET Framework 3.5 ile eklenmiÅŸ olan yeni özellikleri bitirmiÅŸ oluyoruz. Genel olarak eksiklerin tamamlanması ve hazırlanmış olan sınıfların iyileÅŸtirilmesine ağırlık verildiÄŸini gözlemlemiÅŸ oluyoruz.

Daha sonraki WPF ile ilgili yazılarımızda WPF bünyesinden yer alan sınıfları, metotları, veri yapılarını ve özelliklerini incelemeye devam edeceÄŸiz.

Bir sonraki yazımızda görüÅŸünceye dek esenlikle kalın.

Ä°yi çalışmalar…

Turhal TEMÄ°ZER

Yorum Gönder

0 Yorumlar

Ad Code

Responsive Advertisement