Asynchronous Programming

Asynchronous Programming ? tentang apa lagi ini…,, hehe :D.. well hari ini sepertinya asynchronous programming menjadi syarat skill yang harus dimiliki seorang developers. Dahulu kebanyakan aplikasi bekerja dengan synchronous, jadi seorang user baru bisa memulai operasi baru sampai operasi sebelumnya telah complete, atau istilah gampangnya loading completed. Sebelum operasi complete, maka aplikasi akan frozen atau tidak bisa digunakan, seperti beberapa aplikasi web flash yang ada saat ini.

Asynchronous Programming

Pada trend saat ini , terutama dunia mobile. Pengguna tidak akan menggunakan aplikasi yang baru bisa bekerja setelah perkejaan sebelumnya beres (tidak mendukung multitasking). Ya kalee,.. jaman gini harus nunggu beberapa menit dulu… 😛

Nah di Windows Phone ada 2 teknologi untuk implementasi asynchronous programming ini, yaitu callbacks dan async/await  pattern. Oke mari kita bahas satu per satu:

Callbacks

Dibeberapa kasus, terutama Windows Phone 8, callbacks ini telah digantikan penggunaan method asynchronous nya dengna async dan await pattern. Tetapi, ada beberapa APIs yang masih menggunakan callbacks, jadi kita tidak bisa meninggalkannya begitu saja. Callbacks adalah method yang digunakan ketika operasi asynchronous berakhir, yang artinya code callbacks terhubung dengna code yang mengatur hasi keluaran pada 2 method yang berbeda. Berikut saya ambil contoh pada sebuah class webclient, merupakan atu dari basic APIs framework yang berfungsi untuk downloading dan uploading:

Downloading file akan dimulai ketika method  DownloadStringAsync() dipanggil, tetapi sebelumnya kita memerlukan event DownloadStringCompleted yang nantinya terhubung ketika download complete agar mengatur nilai return. Artinya, event handler (method callbacks) merupakan sebuah parameter yang konstan dari sebuah request atau yang biasa disebut DownloadStringCompletedEventArgs

Async dan await

Ya, menurut saya callbacks masih harus diperdalam lagi soalnya penjelasan diatas masih kurang mendetail. Well, tidak seperti code synchronous yang aliran eksekusinya berpindah pindah dari satu method ke method yang lain, sehingga tidak mudah dibaca dari satu line ke line yang lain oleh developer. Dan faktanya, ketika kita ingin menulis sebuah custom method yang dimulai dari network operation dan menginginkan nilai kembaliannya berupa file download itu tidak akan terjadi semudah itu, karena logicnya akan dibagi menjadi 2 bagian berbeda.

Pattern async dan await telah diperkenalkan di C# 5.0 untuk menyelesaikan masalah seperti itu, Windows Runtime juga telah mengaplikasikannya. Pattern aync dan await basicnya merupakan class Task yang mana adalah dasar dari tipe return pada asynchronous method. Method ini hanya bisa dikembalikan ketika:

  • Task 
    Compiler harus menunggu untuk beroperasi agar bisa menyelesaikan eksekusi pada line selanjutnya.
  • Task <T>
    Hampir sama, compiler juga harus menunggu untuk beroperasi dan akan menghasilkan return (yang bertipe T) ke main methodnya.

Mari kita lihat salah satu contoh script. Hampir sama sih seperti sebelumnya, yaitu penggunaan class webclient. Dengan menginstall library ini kita bisa menggunakan method DownloadingTaskAsync(). Method ini akan mengembalikan tipe Task<string> yang artinya nilai kembalian dari operasi asynchronous ini adalah berupa string.

 

Iklan

Good People write good comments ..

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s