İlkay İlknur

just a developer...

C# 5.0 Asenkron Programlama Özelliklerini .NET Framework 4.0, Windows Phone 7.5 & 8.0 ve Silverlight 4.0 & 5.0 Platformlarında Kullanın

Blogda bulunan C# 5.0 Asenkron programa ilgili makaleleri okuyanlardan zaman zaman "Acaba bu özellikleri .NET 4.0 veya Windows Phone 7.5 gibi platformlarda kullanabiliyor muyuz ? " gibi mailler alıyorum. Tabi .NET 4.0 kullananlar için projenizi .NET 4.5'e yükseltip kullanın demek verilebilecek en kolay cevap :) Ama tabi projeyi yükseltin demek her zaman söylendiği kadar kolay olamayabiliyor :) Çok kapsamlı çalışmaların, testlerin yapılması gerekebiliyor. Bu nedenle tabi ki insanlar projeyi yükseltmekten ziyade daha kolay yoldan bu özellikleri kullanabilmeyi tercih edebiliyorlar. Windows Phone veya Silverlight tarafına geçtiğimizde ise tabi ki C# 5.0 compilerının yanında compilerın arka planda kullandığı yapılarında bu platformlara taşınmış olması gerekiyor. Neyse çok fazla uzatmayalım ve şöyle Visual Studio 2012 ile .NET Framework 4.0 'da bir Console uygulaması yaratalım ve duruma bir bakalım :)

Şimdi basit bir async metot yazmaya çalışalım ve bakalım nasıl bir durumla karşı karşıya kalacağız.

Çok basit bir şekilde C# 5.0 ile yapabildiğimiz, bir işlemi arka planda çalıştırma olayını .NET Framework 4.0 ile gerçekleştirdik. Şimdi projemizi derleyelim ve bakalım bir sorun ile karşılaşacak mıyız ?

Mesaj aslında oldukça net :) Async ve await keywordlerini C# 5.0 compilerını kullandığımız için kullanabilmekteyiz. Ancak compilerın arka planda kullanacağı tipler haliyle .NET Framework 4.0 içerisinde bulunmuyor ve compiler da haliyle kodu arka planda yeniden yazmak için bu tiplere ihtiyaç duyuyor . Peki compilerın ihtiyacı olan bu tipleri acaba dışarıdan bir library aracılığıyla versek :) kısayoldan sonuca ulaşabilir miyiz ?

Microsoft.Bcl.Async

Microsoft.Bcl.Async nuget paketi Microsoft tarafından geliştirilen ve .NET Framework 4.0, Windows Phone 7.5 / 8.0 ve Silverlight 4.0/5.0 platformları için compilerın arka planda ihtiyaç duyduğu tipleri içerisinde barındıran bir paket. Bunun yanında ilgili platformlarda bulunan bazı tiplere task-based asenkron metotlar da extension metot olarak bu paket sayesinde gelmekte. O zaman bu package'ı projemize ekleyelim ve bakalım nasıl bir değişiklik olacak.

Microsoft.Bcl.Async paketini proye ekledikten sonra projemiz sorunsuz bir şekilde derlendi. Bunun yanında eğer WebClient tipi gibi içerisinde asenkron metotlar bulunan tiplere bakarsak bu tipler içerisinde de task-based asenkron metotların extension metotlar olarak eklendiğini görüyor olacağız.

Gördüğünüz gibi artık C'# 5.0 özelliklerini .NET 4.0, Silverlight ve Windows Phone'da kullanmak oldukça kolay :)  Yapmanız gereken tek şey proje solutionınızı Visual Studio 2012'ye yükseltemek. Evet yanlış okumadınız :) Şu ana kadar yaptıklarımız sadece Visual Studio 2012 içerisinde geçerli. En azından sizi framework upgrade'inden kurtardım ;) Umarım sizler için faydalı bir yazı olmuştur.


MIX’11 Konferansının Ardından

Merhaba Arkadaşlar,

Her sene merakla beklediğim 2 konferanstan biri olan MIX konferansı (diğeri de PDC) bugün yapılacak oturumlardan sonra sona erecek. Konferansın ilk iki gününün sabahlarında yapılan keynote oturumları ile Microsoft adeta developer araçları konusundaki sessizliğini bozdu ve yaptığı çalışmaları bizlerle paylaştı. Konferansın ilk gününde keynote oturumunda Internet Explorer ekibinin başındaki Dean Hachamovitch ile .NET Platformunun başındaki ScottGu sahnedeyken ikinci günde Windows Phone ekibinin lideri Joe Belfiore ile yine ScottGu sahnedeydi. İlk 2 gün boyunca keynote oturumlarında pek çok gelişmeden bahsedildi ve yeni pek çok ürün kullanıma sunuldu. İsterseniz fazla zaman kaybetmeden yapılan duyurulardan kısaca bahsedelim.

Internet Explorer 10 Platform Preview 1

Yaklaşık 1 ay önce final sürümü çıkan Internet Explorer 9’un gelişmesi hiç durmadan devam ediyor. Yaklaşık 3 haftadır üzerinde geliştirme yapılan Internet Explorer 10 ‘da birinci platform preview sürümü ile yazılım geliştiricilerin kullanımına sunuldu. Özellikle IE9 ile beraber gelen pekçok özellikle ilgi çeken Internet Explorer’ın bu denli hızlı bir şekilde gelişmesi oldukça güzel bir haber. Microsoft’un özellikle HTML 5 ve standartlar konusuna verdiği önemi görmek, bunun yanında da tarayıcının geliştirimini yine yazılım geliştiriciler ile beraber interaktif olarak devam ettirmesi oldukça güzel gelişmeler. IE10 Platform Preview sürümünü http://ie.microsoft.com/testdrive/ bu adresten indirebilir ve bu site üzerinde bulunan uygulamalar ile test edebilirsiniz.

IE10 Platform Preview 1 içerisinde bulunan yeni özellikler ise şunlar

  • CSS3 Flexbox
  • CSS3 Grid Alignment
  • CSS3 Multi-Column
  • CSS3 Gradients on background-images
  • ECMAScript5 Strict Mode

Yapılan duyurulara göre bundan sonra IE10’un gelişimi 10-12 haftalık aralarla yeni platform-preview sürümleri çıkarılarak biz yazılım geliştiricilerle paylaşılmaya devam edecek.

ASP.NET MVC 3 Tools Update

MIX Konferansının ilk gününde yapılan duyurulardan biri de ASP.NET MVC 3 Tools güncellemesiydi. Sadece Visual Studio araçları içerisinde yapılan bu güncellemelerle artık ASP.NET MVC 3 projelerinde HTML 5 kullanmak mümkün hale geldi. Bu güncelleme ile gelen yenilikler ise şu şekilde.

  • ASP.NET MVC 3 projelerinde HTML 5 desteği. Proje yaratımı sırasında HTML 5 seçeneği seçilir ise otomatik olarak yaratılan View’larda semantic HTML 5 tagleri kullanılmakta.
  • Yeni proje yaratma penceresine Intranet uygulama şablonu eklendi. Bu proje şablonu seçildiği durumlarda ASP.NET MVC uygulaması artık Windows Authentication kullanacak şekilde yaratılmakta ve uygulama içerisinde AccountController bulunmamakta.
  • EF 4.1 ile beraber Code-First Development ile geliştirilen model üzerinden Controller ve View’ların full olarak yaratılması özelliği bu güncelleme ile gelmiş durumda. Artık Create, Read, Update, Delete işlemleri için Controller ve View’lar otomatik olarak üretilmekte.
  • NuGet kullanılarak artık Javascript kütüphaneleri de proje içerisinde eklenilebilmekte.
  • Son olarak ise ASP.NET MVC projelerine HTML 5 ve CSS3 kullanımlarında tarayıcılardaki uyumluluk sorunlarıyla daha kolay başaçıkmak için Modernizr 1.7 artık ASP.NET MVC 3 projelerinde yer almakta.

ASP.NET MVC 3 Tools güncellemesine buradan erişebilirsiniz.

Entity Framework 4.1 – Code First Development

Uzun zamandır Code-First Development özelliği ile biz yazılım geliştiricilerin kullanımında olan Entity Framework 4.1’in RTM versiyonu MIX konferansında duyuruldu. Basit olarak  POCO(Plain Old CLR Objects) sınıfları ve sınıflar arasındaki ilişkileri tanımlayarak veritabanının yaratılmasını ve veritabanı tabloları ile uygulama tarafındaki sınıfların eşleştirilmesini sağlayan Code-First Development özelliği EF 4.1 içerisinde yer almakta.

Entity Framework 4.1 güncellemesine buradan erişebilirsiniz.

Visual Studio 2010 Async CTP Refresh

Geçtiğimiz yılın sonunda yapılan PDC konferansında duyurulan C# programlama dilinin bir sonraki versiyonunun temasını oluşturacak olan Asenkron Programlama teması ile ilgili ilk çalışmaların sunulduğu Visual Studio Async CTP bildiğimiz gibi Visual Studio Service Pack 1’in çıkmasıyla çalışamaz duruma gelmişti. MIX konferansında Visual Studio Async CTP Refresh duyuruldu ve yapılan bir takım ek geliştirmeler ve VS 2010 SP1 ile uyumluluk özellikleri ile yazılım geliştiricilere sunuldu.

Visual Studio Async CTP Refresh’e buradan erişebilirsiniz. Yeni refresh sürümü ile beraber gelen yeniliklere(en dikkat çekici yenilik async özelliğinin Windows Phone 7 içerisine gelmesi) ve düzeltmelere her zaman büyük bir ilgiyle takip ettiğim Eric Lippert’ın sitesinden ulaşabilirsiniz. Ayrıca yine Channel 9’da bulunan C# programlama dili Program Manager’ı Mads Torgersen’ın videosunu izleyebilirsiniz.

Windows Phone 7 Mango Update

Windows Phone 7’nin çıkacak olan Mango kod adlı büyük güncellemesinin detayları MIX konferansının ikinci gününde Joe Belfiore tarafından açıklandı. Keynote sırasında dikkatimi çeken yenilikler ise şunlar.

  • Arama ekranları üzerinde pek çok yenilik bulunmakta. Gerek Marketplace entegrasyonu gerekse telefon üzerinde yapılan aramalarda pek çok kolaylık getirilmiş durumda.
  • En çok dikkatimi çeken gelişmelerden biri de Internet Explorer 9’un bu güncelleme ile beraber Windows Phone 7 içerisinde bulunacak olması. Özellikle HTML 5 desteği gelmesi ve hardware accelerationın sağlanacak olması Windows Phone 7 için büyük bir artı olacak. Internet Explorer 9 ‘da yapılan güzel çalışmalar Windows Phone 7’ye de taşınacak.
  • Bir diğer büyük yenilik ise Windows Phone 7 içerisinde SQL CE desteği gelecek olması. Bunun yanında Socket desteği, RAW kamera verisine erişim, native uygulamaların arka-planda çalışılabilirlik kazanması özellikleri oldukça ilgi çekiciydi.
  • Ayrıca özellikle Pivot kontrolünde ve List kontrollerinde performans geliştirmeleri.

Windows Phone 7 Mango güncellemesi sonbahara doğru kullanıcılara sunulmaya başlanacak.

Windows Phone 7 Developer Tools

Mango güncellemesi WP7 kullanıcılarına sunulurken tabi ki yazılım geliştiriciler için de Windows Phone 7 uygulama geliştirme araçlarında yakın zamanda bir güncellemeye gidiliyor olunacak. Çok yakın bir zaman sunulacak olan bu güncellemede Mango güncellemesinin yanında şu özellikler bulunacak.

  • Windows Phone 7 emulator üzerinde en büyük eksikliklerden biri de özellikle accelerometerın kullanıldığı senaryolarda emulator üzerinden hiçbir şekilde herhangi bir accelerometer verisi alamamaktaydık. Yeni gelecek güncelleme ile beraber emulator üzerine eklenecek bir yapı ile doğrudan accelerometer verisine kolay bir şekilde ulaşabileceğiz.
  • Emulator üzerindeki bir diğer büyük eksikliklerden biri de location verilerinin alınamamasıydı. Lokasyon bazlı olarak çalışan uygulamalar geliştirdiğimizde uygulamanın test edilmesi sırasında lokasyon verileri emulator üzerinden elde edilememekteydi. Yapılacak olan güncelleme ile emulator üzerinden harita üzerinde seçilen yerin bilgileri alınıp emulatore yollanabilecek ayrıca farklı noktaların koordinatları belirli aralıklarla emulator üzerine iletilebilecek. Örneğin kullanıcının lokasyonunun sürekli olarak değişeceği durumlarda uygulamanızın lokasyon bilgilerini nasıl işleyebildiğini görmek için bu özellik oldukça yararlı olacaktır.
  • Son olarak ise gelen en büyük yeniliklerden biri de Visual Studio üzerinde eklenen performans araçları. Uygulamanızın çalışması sırasında gerekli bilgileri toplayan bu performans araçları uygulama sonlandıktan sonra gerekli analizi gerçekleştirmekte ve uygulama içerisinde bulunan sorunların performans kayıplarının nerelerde hangi metotların çalışması sırasında gerçekleştiği çok kolay biçimde bulunabilmekte.

Kinect Windows SDK

Microsoft’un son dönemlerde çıkardığı en başarılı ürünlerden biri olan ve tüm zamanların en çok satan ürünlerinden biri olan Kinect’in Windows uygulamaları tarafından kullanılması için dışarıya sunulacak olan SDK’nın duyurusu da yapılmış oldu. C#, VB ve C++ ile kullanılabilecek olan bu SDK ile Kinect kullanılarak hızlı ve kolay bir şekilde uygulama geliştirmek mümkün hale gelecek. Kinect Windows SDK ile neler yapılabileceği ile ilgili örnekleri görmek için MIX Keynote sırasında yapılan demoları buradan izleyebilirsiniz.

Veee Silverlight 5 Beta !!!

Geçtiğimiz Aralık ayında Silverlight FireStarter etkinliğinde yapılan Silverlight 5 ile gelen yeniliklerin duyurulmasından sonra gözler MIX konferansına çevrilmişti. MIX konferansının ikinci günüde ScottGu beklendiği şekilde Silverlight 5 Beta’yı duyurdu ve developerların kullanımına sundu. Silverlight 5 ile gelen yeniliklerden bazıları da  şunlar.

  • 3D desteği.
  • XAML Custom Markup Extensions
  • XAML Debugging
  • Implicit Data Templates
  • Binding in Styles
  • Ancestor RelativeSource
  • Control Yenilikleri
  • Multi-Click Desteği
  • TrickPlay Desteği
  • OOB, Elevated Trust Yenilikleri

Silverlight FireStarter etkinliğinde duyurulan yeni özelliklerin hepsi Beta sürüm içerisinde bulunmamakta. Silverlight 5 Beta içerisinde bulunan özelliklere buradaki PDF dökümanından ulaşabilirsiniz. Ayrıca Silverlight Program Manager’ı Tim Heuer’ın blogundaki postundan da Silverlight 5 Beta yeniliklerini inceleyebilirsiniz. Bende en kısa zamanda Silverlight 5 Beta ile gelen yenilikleri sizlere aktarıyor olacağım.

Silverlight 5 ile beraber ayrıca Expression Blend’in Preview versiyonu da yayınlanmış durumda.

Silverlight 5 Beta Tools’u buradan indirebilirsiniz.

Expression Blend Preview ‘ı  da buradan indirebilirsiniz.

Ayrıca ilk günün keynote oturumunu da buradan ve ikinci gün oturumunu da buradan indirebilir veya izleyebilirsiniz.

Ayrıca MIX konferansı sırasında yapılan sunumlara da Channel 9 üzerinden erişebilirsiniz. Mutlaka diğer sunumları da izlemenizi tavsiye ederim.

Bir sonraki yazımızda görüşmek üzere,



Silverlight 5 Beta - Implicit Data Templates

Merhaba Arkadaşlar, Bu görsel dersimizde Silverlight 5 ile gelen Implicit Data Templates özelliğini inceliyoruz. Görsel dersi buradan indirebilirsiniz. Görüşmek Üzere,


Silverlight 5 Beta - Kontrol Yenilikleri

Merhaba Arkadaşlar, Bu görsel dersimizde Silverlight 5 ile gelen Kontrol Yeniliklerini inceliyoruz.  


Silverlight 5 Beta - XAML Debugging ve Custom Markup Extensions

Merhaba Arkadaşlar,

Bu görsel dersimizde Silverlight 5 ile gelen Data Binding ifadeleri üzerinde debug yapma olanağı ile XAML içerisinde kendi markup extensionlarımızı oluşturmayı sağlayan Custom Markup Extensions özelliğini inceliyoruz.

Görsel dersi buradan indirebilirsiniz.

Umarım faydalı bir görsel ders olmuştur.

Görüşmek Üzere,



Silverlight 5 Beta - Style'lar İçerisinde Binding ve Ancestor RelativeSource Binding Özelliği

Merhaba Arkadaşlar, Bu görsel dersimizde Silverlight 5 Beta ile gelen Style'lar içerisindeki Binding özelliği ile Ancestor RelativeSource özelliğini inceliyoruz. Umarım faydalı bir ders olmuştur. Görsel dersi buradan indirebilirsiniz. Herkese Kolay Gelsin, Hoşçakalın


Silverlight 5 Beta - Tarayıcı İçerisinde Elevated Trust ve OOB Yenilikleri

Merhaba Arkadaşlar, Bu görsel dersimizde Silverlight 5 Beta ile tarayıcı içerisindeki Elevated Trust özelliği ile OOB tarafında gelen sınırsız dosya erişimi, multiple Ad-Hoc Windows özelliklerini inceliyoruz.

Görsel dersi buradan indirebilirsiniz.

Umarım faydalı bir görsel ders olmuştur.

Görüşmek Üzere,



Silverlight 5 RC Yayınlandı !!!

Merhaba Arkadaşlar,

1 Eylül itibariyle Silverlight 5 artık RC(Release-Candidate) sürümüne ulaştı ve developerların testine sunuldu. RC sürümü ile beraber Beta sürümünde bulunan mevcut özelliklerin üzerine post-beta'da gelecek olan özellikler dediğimiz özellikler de eklenmiş oldu.

Bu Özellikler,

  • P/Invoke desteği ile native metotların çağrılabilmesi
  • 64-bit desteği
  • DataContextChanged Eventi
  • Browser içerisinde Trusted uygulamalar
  • SDK içerisinde PivotViewer kontrolü
  • Vector Printing
  • Media Uygulamalarında Uzaktan Kumanda Desteği

Beta sürümden RC sürümüne değişen bir nokta var mı diye baktığımızda ise major değişiklik olarak karşımıza Beta sürümde RichTextBox kontrolünde bulunan Linked Text desteğinin artık RichTextBlock kontrolüne kaydırıldığını görüyoruz.

Unutmadan, RC sürümünün hala daha Go-Live lisansı bulunmamakta. Yani sadece developerlara açık bir sürüm. Smile

Expression Blend tarafını merak edenler için ise şu anda Silverlight 5 RC sürümü için güncellenmiş bir Expression Blend 5 sürümünün olmadığını belirtmek isterim. Mevcut Expression Blend Preview'ı Silverlight 5 RC ile kullanırken aksaklıklar yaşayabilirsiniz. Bunun için de Silverlight 5 RC için güncellenmiş Expression Blend 5'i beklemekte yarar var.

Silverlight 5 RC sürümünü http://www.silverlight.net/downloads adresinden indirebilirsiniz.

Silverlight 5 'in release olma zamanına baktığımızda ise muhtemelen bu yılın sonları olacağını rahatlıkla söyleyebiliriz.

Bende bu süreçte RC ile gelen yeniliklerin detaylarını yine sizlerle paylaşıyor olacağım.

Görüşmek Üzere,