SlideShare a Scribd company logo
Erkan BALABAN
 Yazılım Uzmanı
           NTV
C# 5          Asynchronous
                                          Programming


                     C# 4            Dynamic



              C# 3            LINQ



       C# 2            Generics



C# 1            Managed Code
• Asynchronous programming
• Windows Runtime Support
• Caller Info Attributes
• Asynchronous
• Synchronous
• Parallel
• Multi threading
• Bilinen / genel yöntem
• Blok 0larak çalışır.
• UI, arkadaki kodun çalışmasını bitirmesini bekler.
• 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.
• Tanım olarak multithread’dir.
• Task / kaynak havuzunda çalışır.
• Konsept olarak birden fazla core’u, işlemciyi kullanabilir.
• 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.
• 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.
• 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.
Task-based Asynchronous Pattern
TPL                                       TAP

CPU yükü fazla olan işlemlerde            CPU yükü fazla olmayan işlemlerde
kullanılır. Main thread / programın       kullanılır. Resim download etme,
dışında çalıştırılır.                     network işlemleri,vb
Multiplethreading ve multi core’un        Multithread veya multicore kullanmaz.
avantajlarını kullanır.                   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.
Await
Async
• 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.
• 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.
public async Task<string> GetXmlAsync(string url) {
    var client = new HttpClient();
    var response = await client.GetAsync(url);
    var text = response.Content.ReadAsString();
    return text;
}
Sync vs Async


- UI response
- Async nasıl yazılır?
Multiple await
Veritabanından asekron veri çekme
Windows Runtime  IAsyncOperation<T>
.NET Framework  Task<T>
Javascript  Promises
• 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.
Demo
       - sql sorgusunun yanlış olması
__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
    }
}
Logger.LogDB(″Kullanıcı adı ve şifre hatalı″);
Visual Studio Asynchronous Programming
http://msdn.microsoft.com/en-us/vstudio/async
erkanbalaban.com.tr

erkan@erkanbalaban.com.tr

More Related Content

Similar to C# 5 Yeni özellikler

Android mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerAndroid mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-scheduler
Ercan Pinar
 
Tersine Mühendislik 101
Tersine Mühendislik 101Tersine Mühendislik 101
Tersine Mühendislik 101
Fatih Erdoğan
 
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
Muhammed GÖKKAYA
 
Spring application framework
Spring application frameworkSpring application framework
Spring application framework
Kenan Sevindik
 
İşletim sistemleri
İşletim sistemleriİşletim sistemleri
İşletim sistemleri
illker SEN
 
Visual Studio Developer Tools
Visual Studio Developer ToolsVisual Studio Developer Tools
Visual Studio Developer Tools
Uğur Tılıkoğlu
 
Angular Web Programlama
Angular Web ProgramlamaAngular Web Programlama
Angular Web Programlama
Cihan Özhan
 
Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)
Cihan Özhan
 
Csharpnedir
CsharpnedirCsharpnedir
Csharpnedir
bykezza
 
Gerçek zamanlı-i̇şletim-sistemi
Gerçek zamanlı-i̇şletim-sistemiGerçek zamanlı-i̇şletim-sistemi
Gerçek zamanlı-i̇şletim-sistemi
ilvarol
 
64 bit işlemcilerin modern tarihçesi
64 bit işlemcilerin modern tarihçesi64 bit işlemcilerin modern tarihçesi
64 bit işlemcilerin modern tarihçesiTalha Kabakus
 
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
Burak Oğuz
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web Programlama
Cihan Özhan
 
windows_process_management
windows_process_managementwindows_process_management
windows_process_management
guest0bd6e2
 
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod YazmakSonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Muhittin Özer
 
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - TürkçeApache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Emre Akış
 
Log yönetimi ve siem projelerindeki en önemli kriter EPS değerleri
Log yönetimi ve siem projelerindeki en önemli kriter EPS değerleriLog yönetimi ve siem projelerindeki en önemli kriter EPS değerleri
Log yönetimi ve siem projelerindeki en önemli kriter EPS değerleri
Ertugrul Akbas
 

Similar to C# 5 Yeni özellikler (20)

Android mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerAndroid mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-scheduler
 
Tersine Mühendislik 101
Tersine Mühendislik 101Tersine Mühendislik 101
Tersine Mühendislik 101
 
İşlemciler
İşlemcilerİşlemciler
İşlemciler
 
Erlang web-frameworks
Erlang web-frameworksErlang web-frameworks
Erlang web-frameworks
 
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
 
Nmap & Hping
Nmap & HpingNmap & Hping
Nmap & Hping
 
Spring application framework
Spring application frameworkSpring application framework
Spring application framework
 
İşletim sistemleri
İşletim sistemleriİşletim sistemleri
İşletim sistemleri
 
Visual Studio Developer Tools
Visual Studio Developer ToolsVisual Studio Developer Tools
Visual Studio Developer Tools
 
Angular Web Programlama
Angular Web ProgramlamaAngular Web Programlama
Angular Web Programlama
 
Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)
 
Csharpnedir
CsharpnedirCsharpnedir
Csharpnedir
 
Gerçek zamanlı-i̇şletim-sistemi
Gerçek zamanlı-i̇şletim-sistemiGerçek zamanlı-i̇şletim-sistemi
Gerçek zamanlı-i̇şletim-sistemi
 
64 bit işlemcilerin modern tarihçesi
64 bit işlemcilerin modern tarihçesi64 bit işlemcilerin modern tarihçesi
64 bit işlemcilerin modern tarihçesi
 
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web Programlama
 
windows_process_management
windows_process_managementwindows_process_management
windows_process_management
 
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod YazmakSonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
 
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - TürkçeApache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
 
Log yönetimi ve siem projelerindeki en önemli kriter EPS değerleri
Log yönetimi ve siem projelerindeki en önemli kriter EPS değerleriLog yönetimi ve siem projelerindeki en önemli kriter EPS değerleri
Log yönetimi ve siem projelerindeki en önemli kriter EPS değerleri
 

C# 5 Yeni özellikler

  • 2. C# 5 Asynchronous Programming C# 4 Dynamic C# 3 LINQ C# 2 Generics C# 1 Managed Code
  • 3. • Asynchronous programming • Windows Runtime Support • Caller Info Attributes
  • 4. • Asynchronous • Synchronous • Parallel • Multi threading
  • 5. • Bilinen / genel yöntem • Blok 0larak çalışır. • UI, arkadaki kodun çalışmasını bitirmesini bekler.
  • 6. • 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.
  • 7. • Tanım olarak multithread’dir. • Task / kaynak havuzunda çalışır. • Konsept olarak birden fazla core’u, işlemciyi kullanabilir.
  • 8. • 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.
  • 9.
  • 10. • 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.
  • 11. • 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.
  • 13. TPL TAP CPU yükü fazla olan işlemlerde CPU yükü fazla olmayan işlemlerde kullanılır. Main thread / programın kullanılır. Resim download etme, dışında çalıştırılır. network işlemleri,vb Multiplethreading ve multi core’un Multithread veya multicore kullanmaz. avantajlarını kullanır. 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.
  • 15. • 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.
  • 16. • 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.
  • 17. public async Task<string> GetXmlAsync(string url) { var client = new HttpClient(); var response = await client.GetAsync(url); var text = response.Content.ReadAsString(); return text; }
  • 18. Sync vs Async - UI response - Async nasıl yazılır?
  • 21. Windows Runtime  IAsyncOperation<T> .NET Framework  Task<T> Javascript  Promises
  • 22. • 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.
  • 23. Demo - sql sorgusunun yanlış olması
  • 24. __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 } }
  • 25. Logger.LogDB(″Kullanıcı adı ve şifre hatalı″);
  • 26. Visual Studio Asynchronous Programming http://msdn.microsoft.com/en-us/vstudio/async