c# 5 yeni özellikler

27
C# 5 Yeni Özellikler Erkan BALABAN Yazılım Uzmanı NTV

Upload: erkan-balaban

Post on 14-Dec-2014

1.886 views

Category:

Technology


1 download

DESCRIPTION

C# 5 ile gelen yeni özellikler

TRANSCRIPT

Page 1: C# 5 Yeni özellikler

C# 5 Yeni ÖzelliklerErkan BALABAN

Yazılım UzmanıNTV

Page 2: C# 5 Yeni özellikler

C#’ın evrimi

C# 1 Managed Code

C# 2 Generics

C# 3 LINQ

C# 4 Dynamic

C# 5 AsynchronousProgramming

Page 3: C# 5 Yeni özellikler

C# 5’te neler yeni?• Asynchronous programming• Windows Runtime Support• Caller Info Attributes

Page 4: C# 5 Yeni özellikler

Asenkron ve arkadaşları• Asynchronous• Synchronous• Parallel• Multi threading

Page 5: C# 5 Yeni özellikler

Synchronous• Bilinen / genel yöntem • Blok 0larak çalışır.• UI, arkadaki kodun çalışmasını bitirmesini bekler.

Page 6: C# 5 Yeni özellikler

Multithreading• Operasyonları diğer thread’lere dağıtır.• Main ve diğer thread’lerle senkronizasyonu bizim

yapmamız gerekir.• Thread’lerin çalışma koşullarını biz kontrol ederiz.

Page 7: C# 5 Yeni özellikler

Parallelism• Tanım olarak multithread’dir.• Task / kaynak havuzunda çalışır.• Konsept olarak birden fazla core’u, işlemciyi

kullanabilir.

Page 8: C# 5 Yeni özellikler

Asynchronous Nedir, Ne Değildir?• Parallel programlama değildir.• Uygulamadaki kodlar aynı thread’de çalışmaya

devam eder.• Kodun UI’dan alınıp arkaya konulması demektir.

• Yani;• Metodun çalışması bitene kadar UI cevap verebilir. • Metod arkada çalışır.• Metod işini bitirdiğinde UI’ya sonucu iletebilir.• Böylece kullanıcı takılma yaşamaz.

Page 9: C# 5 Yeni özellikler

Asenkron programlama

Programlamada yeni norm olacak

Page 10: C# 5 Yeni özellikler

Neden Asynchronous Programming?• Tabletler günümüzde daha fazla kullanılmaya

başlandı. • 2011’de PC satışlarının % 15’i tablet pc olacak. (IDC)• Ipad, Android tablet, RIM, ....• Yakında Windows 8 tabletler çıkacak.

• Tabletlerle birlikte UI daha fazla önem kazanacak. Çünkü UI’ın daha hızlı / kısa sürede cevap verebiliyor olması gerekiyor. Herne kadar yapılması gereken işlem tamamlanmamış olsa bile. Örneğin haber okuma gibi. Haberin özeti, ilgili resimler, ilintili haberler, haber detayı vs

• UI’ın daha fazla cevap verebiliyor olması gerekiyor.• UI’yı bloklamadan uzun süren işlemleri yapabilmek

gerekiyor.

Page 11: C# 5 Yeni özellikler

Under the hood• Tek çekirdekli / işlemcili bilgisayarlarda

concurrency• Aynı anda birden fazla uygulama çalıştırırız!!!• Bir karsonun iki masayla aynı anda ilgilenmesi gibi.

• Asenkron çalışma da benzer mantıktır. • İşler küçük parçalara bölünür.• Parçalar sıraya konur, kuyruğa alınır.• Kuyruktan sırası gelen iş alınır ve işlemci tarafından

çalıştırılır.• Bu işlem aynı thread’de gerçekleşir.

• Birden fazla core / CPU olmadan multitask çalışma • Her iş için bir task oluşturulur ve caller, task’in

tamamlanması bekler.• Aktivite tamamlandığında – metod

tamamlandığında – caller’da bir senkronizasyon yapılır.

Page 12: C# 5 Yeni özellikler

TAP?Task-based Asynchronous Pattern

Page 13: C# 5 Yeni özellikler

TPL vs TAP

TPL TAP

CPU yükü fazla olan işlemlerde kullanılır. Main thread / programın dışında çalıştırılır.

CPU yükü fazla olmayan işlemlerde kullanılır. Resim download etme, network işlemleri,vb

Multiplethreading ve multi core’un avantajlarını kullanır.

Multithread veya multicore kullanmaz. Core’lar boşta kalır.

İşlemleri concurrency kullanarak çözer. TAP bu özelliği extend eder.

UI serbest kalır ve uygulama pekçok thread açmaz.

TAP sadece UI’da kullanılmaz. Multithread ortamlarda da kullanılabilir.

Page 14: C# 5 Yeni özellikler

Await Async

Page 15: C# 5 Yeni özellikler

Await• Derleme sırasında compiler «continuation code»

generate eder.• Callback’leri otomatik olarak yakalar.• Callback yakaladığında caller’a geri döner.• Kodun normal akışını devam ettirebilmesi için

task’in tamamlanmasını bekler.• Kodu çağıran metoda hataları ve cancellation

token’ları yayar.

Page 16: C# 5 Yeni özellikler

Async • Compiler’a metodun asenkron olduğunu belirtir.

Metodu asenkron olarak işaretler.• Asenkron olarak işaretlenmiş metodlar en az bir

tane await içermelidir.• Bu metodlar birden fazla await içerebilir.• Async olarak işaretlenmiş metodlar beklenebilir.

(can be awaited)• Asenkron metodlar void olabilir, Task veya Tast<T>

döndürebilir.

Page 17: C# 5 Yeni özellikler

Örnek

public async Task<string> GetXmlAsync(string url) { var client = new HttpClient(); var response = await client.GetAsync(url); var text = response.Content.ReadAsString(); return text;}

Page 18: C# 5 Yeni özellikler

Demo 1Sync vs Async

- UI response- Async nasıl yazılır?

Page 19: C# 5 Yeni özellikler

Demo 2

Multiple await

Page 20: C# 5 Yeni özellikler

Demo 3

Veritabanından asekron veri çekme

Page 21: C# 5 Yeni özellikler

Asenkron programlama modelleriWindows Runtime IAsyncOperation<T>.NET Framework Task<T>Javascript Promises

Page 22: C# 5 Yeni özellikler

Asenkron hakkında notlar• Asenkron kullanırken işler küçük parçalara bölünür

ve işlerin tamamlanmaları beklenir. Burada dikkat edilmesi gereken işleri ne kadar çok sayıda parçaya böldüğümüzdür. Fazla sayıda küçük parçaya bölmek iyi değildir.

• TAP herne kadar iyi olsa da her derde deva değildir. Kullanırken dikkat etmek ve iyi ölçmek gerekir.

• İşlem 50 milisaniyeden fazla zaman alıyorsa asenkron yapılabilir.

• Async metodlar cascading olarak çağırılabilir.

Page 23: C# 5 Yeni özellikler

Exception Handling

Demo- sql sorgusunun yanlış olması

Page 24: C# 5 Yeni özellikler

Caller Info Attributes__FILE__ ve __LINE__

public static class Logger{ public static void LogDB(string message, [CallerFilePath] string file = "", [CallerLineNumber] int line = 0, [CallerMemberName] string member = "") { var err = string.Format("{0}:{1} – {2}: {3}", file, line, member, message);

// log error message to db }}

Page 25: C# 5 Yeni özellikler

Caller Info Attributes

Logger.LogDB(″Kullanıcı adı ve şifre hatalı″);

Page 26: C# 5 Yeni özellikler

LinkVisual Studio Asynchronous Programminghttp://msdn.microsoft.com/en-us/vstudio/async

Page 27: C# 5 Yeni özellikler

Teşekkürler ... erkanbalaban.com.tr

[email protected]