April 2012 - Posts
Hi rekan developer,
Sudah pasti kita tidak asing dengan yang namanya unit test, test driven development, behaviour driven dsb. Meskipun ada kata-kata testnya tetapi berbeda. Tapi saya disini tidak bahas hal itu. Mungkin anda bisa explore sendiri mengenai blabla-test tersebut.
Saya biasanya menggunakan NUnit untuk melakukan Unit Test. Untuk TDD saya juga menggunakan NUnit. Sebelum munculnya Visual Studio 11 saya memanfaatkan TestDriven.NET untuk membantu saya mengeksekusi test dari Visual Studio, debuging terhadap test.
Tetapi sekarang di Visual Studio 11 kita mendapatkan extension yang bagus untuk melakukan hal tersebut. Fully integrated dengan Visual Studio. Yang buat extensions ini juga adalah creator dari NUnit sendiri. Sehingga kita bisa berharap bahwa extensions ini yang terbaik ya ?
Berikut langkah2 untuk menambahkan NUnit Adapter ke Visual Studio. Pastikan terlebih dahulu anda terkoneksi ke internet. Karena kita akan melakukan download dari Visual Studio. Tidak ada yang lebih mudah menambahkan plugin ketimbang menggunakan Extension Manager bukan ? Jika ini kali pertama anda maka anda tidak akan bisa lepas dari fitur berikut ini untuk kedepannya. Kecuali anda tidak memiliki koneksi internet. =_=
Buka Extensions Manager anda.
Cari NUnit Plugin dari Extensions manager tersebut.
Tunggu setelah selesai di install. Sekarang kita harus memunculkan unit test explorer. Aktifkan terlebih dahulu dari menu Unit test.
Akan ditampilkan kepada anda seperti berikut di sebelah kiri panel anda.
Jangan lupa untuk menambahkan reference anda ke NUnit sebelum membuat unit test. Cara yang paling mudah adalah menggunakan Nuget. Ini adalah kombinasi yang pas antara Extensions manager dan Nuget. kedua tools ini pasti akan menjadi favourite anda kedepannya. Klik kanan di reference seperti biasa ketika anda ingin menambahkan reference library. Tetapi pilih manage nuget package
Anda selanjutnya tinggal mengetikkan nunit pada search box yang disediakan.
Install dan tunggu beberapa saat sampai library nunit di download dan di konfigurasi di project anda.
Sekarang kita akan menambahkan test yang lagi-lagi meaningless seperti biasanya. Yah.. supaya tidak terlalu kompleks. - -" (alesan)
Build project tersebut maka nanti test anda tersebut akan disegera di load di panel unit test explorer.
Jalan kan test tersebut dengan menekan Run All. Sudah dapat dipastikan test tersebut gagal dengan sempurna.
Jika anda berhasil memperbaiki test tersebut maka anda akan mendapatkan green light seperti berikut.
Jika anda masih belum puas maka anda dapat menambahkan lagi test dengan model berikut. Ini adalah fitur di NUnit 2.5 sehingga kita bisa membuat data centric test.
Anda dapat melihat penjelasan nya di TestCaseAttribute
jangan lupa di build terlebih dahulu agar test yang baru dapat ditemukan.
Dan jalankan dengan Run All. Maka kita sekali ini beruntung mendapatkan semua test kita green. Tidak ada warna seindah hijau untuk para test addicted.
Masih ada fitur seperti Debug selected test dan test coverage. Mungkin anda dapat melakukan explorasi sendiri dan menikmati kemudahan yang ditawarkan oleh Visual Studio 11 kepada kita.
What do you waiting for ? Let's become test addicted in VS11 with NUnit
:)
Yups. Seperti judul yang saya sebutkan. selamat datang di hutan rimba konkuren. Teknologi komputasi semakin lama semakin mature dan memberikan banyak tambahan-tambahan library kepada kita developer untuk membuat aplikasi kita menjadi lebih cepat, memanfaatkan kemampuan hardware multicore dsb. .NET tidak ada bedanya. Banyak pilihan yang ditawarkan sehingga kadang kita tidak tau lagi mana yang harus dipakai, apa bedanya dan akhirnya jadi tidak terpakai sama sekali.
Conccurency merupakan hal yang sangat diperlukan untuk masa sekarng ini. Jika tidak maka sayang sekali multicore processor yang tersedia di production server. Sudah mahal-mahal beli komputer super power. Tapi kita gak bisa manfaatin sebagai programmer. How come ?
Mari kita lihat apa-apa saja pilihan yang tersedia untuk kita para programmer .NET. Kita mulai dari primitive yang tersedia yaitu Thread.
Threading
Salah satu pertanyaan yang wajib ditanyakan ketika akan masuk ke perusahaan tempat saya bekerja (Petrolink Services Indonesia) adalah.
What's the difference between thread and process ? Do you know the answer ? If you know please send me your resume cause I'm dying to talk with you. :)
send to my email : welly dot tambunan at petrolink dot com
wait wait wait.. back to the topic..
ok. begini cara melihat perbedaan antara thread dan process di komputer anda. anda bisa mencari referensi yang sesuai untuk mendapat penjelasan yang lebih detail
Anda bisa mendapatkan panduan yang bagus dari Threading in C# untuk mendalami tentang Threading.
Thread Pool
Apakah thread sudah cukup untuk menyelesaikan masalah performance ? Tentu saja tidak. Bahkan jika kita tidak mengalokasikan thread dengan benar kita malah akan mendapat performance penalty. Thread itu mahal loh... Gak gratis. Jadi kita harus memanfaatkannya dengan benar. Sehingga kita memanfaatkan Thread Pool untuk mengatur thread tersebut. Sebelum .NET 4.0 kita mendapatkan kemudahan untuk memanfaatkan thread pool dengan Thread.QueueUserWorkItem. Tapi ini pun banyak keterbatasannya.
Task Parallel Library (TPL)
Pada .NET 4.0 kita mendapatkan kemudahan untuk mengatur Thread dengan Task Parallel Library ( TPL ). Disini kita diberikan tambahan kemudahan seperti Parallel LINQ, Konsep Continuation untuk kordinasi task dsb. This is very great. You should start exploring that now.
Jika anda perhatikan WinRT di Windows 8 anda tidak akan menemukan construct primitive seperti Threading dkk. Hal tersebut adalah by design untuk menghindarkan kita dari kesalahan dan memaksa kita untuk menggunakan konstruk dimana kita dituntun untuk berbuat sedikit kesalahan. That's great right ?
Jika anda ingin mendalami lagi maka anda dapat membaca panduang Parallel Programming with Microsoft .NET.
TPL in Action
Berikut contoh yang simple dan meaningless bagaimana parallel programming bisa getting the most dari multicore processor anda.
Ok Ok. Seperti yang saya katakan sebelumnya bahwa contohnya meaningless. Saya disini hanya ingin menunjukkan bahwa operasi yang dilakukan ini adalah single thread. Anda dapat mengganti DoComplicatedCalculation dengan operasi seperti enkripsi file, resize image, encoding video dsb. Hal2 berikut dapat dilakukan sebenarnya saling lepas satu sama lain. Anda tidak perlu menunggu satu file selesai di encrypt baru melakukan yang berikutnya. Tetapi mungkin kita sudah dari dulu terbawa pola berpikir sequential sehingga terbawa sampai sekarang. Berikut adalah rekaman CPU yang ada di laptop saya.
Anda dapat melihat bahwa CPU Utilization saya tidak maksimal. Sebenarnya proses tersebut dapat memanfaatkan semua kemampuan CPU yang saya miliki. Tetapi kenyataannya tidak. Ada 4 logical processor tetapi tidak digunakan secara maksimal. Sayang sekali processornya ya ?
Sekarang kita lihat perbandingannya dengan memanfaatkan TPL. Code yang berubah sangat simple sekali sebenarnya.
Tetapi hal yang dihasilkannya sangat significant.
Disini program kita memanfaatkan kemampuan maksimal dari processor. This is how we should use our resources. Ini alasan mengapa kita membeli hardware mahal, multicore dsb. Kita harus bisa getting the most of it. Right ?
Data Flow
Masih belum cukup ? Kita mendapatkan kemudahan lagi untuk melakukan parallell programing dengan Pipe And filter structure. Ini dapat kita lakukan dengan memanfaatkan Data Flow dari TPL. Jika kita memiliki data yang jumlahnya besar dan harus melalui beberapa proses untuk mentransformnya menjadi output tertentu. Kita tentu saja tidak akan menyesaikan satu potongan kemudia melanjutkan potongan yang lain bukan? Katakanlah kita ingin melakukan proses transformasi dari input file sehingga file tersebut terenkripsi dan terkompress dengan benar. Maka kita akan mendapatkan pipeline kira2 sebagai berikut.
Dalam setiap filter kita memiliki queue yang akan diproses oleh worker thread. Bentuknya sama seperti konsep Producer Consumer. But. hey. that's already made for us. Great...
Kita hanya fokus ke process yang perlu kita lakukan di block tersebut. Kita bisa memanfaatkannya juga untuk Audio/Video processing dsb. Banyak scenario yang bisa dilakukan dengan Data Flow berikut. Data Flow mempermudah kita untuk membangun parallel dan asyncrhonous pipeline.
Reactive Extensions
Asynchronous Programming Model (APM)
Sekarang kita beralih kedunia yang masih memanfaatkan thread juga tetapi bukan multithreading. Coba perhatikan gambar berikut. Pernahkah anda mengalami hal seperti ini ?
Aplikasi sederhana di atas tidak responsive dan akhirnya terminated dengan sempurna. Coba kita perhatikan code dibaliknya seperti apa.
Anda dapat melihat bahwa masalahnya method DownloadString merupakan operasi syncrhonous yang akan memblock UI thread, sehingga Window tidak dapat menerima user input lagi. Operasi DownloadString berhubungan dengan I/O dan sudah barang tentu kita tidak tahu kapan pastinnya operasi tersebut akan selesai. Tidak ada jaminan bahwa operasi tersebut cepat selesai. Dibalik layar sebenarnya operasi tersebut sudah ditangani oleh networking hardware. Sebenarnya UI thread sudah dapat dilepaskan dan kita tinggal menunggu hasilnya saja. Bagaimana cara melakukannya dengan benar ?
Sebelum .NET 4.5 kita mengenai beberapa construct untuk melakukan Asynchronous Programming model (APM). Salah satunya dengan memanfaatkan callback dari pasangan method Begin... dan End... Contohnya BeginGetRequestStream dan pasangannya BeginGetRequestStream dari kelas WebRequest. Masalahnya dengan construct ini adalah code kita menjadi sulit dibaca dan dimengerti alurnya.
Event Based Asynchronous Pattern (EAP)
Alternatif yang lain adalah dengan menggunakan Event-Based Asynchronous Pattern (EAP). Jadi kita tinggal meregister event handler yang akan dieksekusi ketika hasilnya sudah tersedia untuk dikonsumsi. Banyak pro dan kontra mengenap EAP ini. EAP memberikan kemudahan untuk UI programming karena mudah digunakan untuk user interface. Event akan di eksekusi pada thread ui. Tetapi masalah performance APM tentu saja lebih baik, karena EAP diimplementasikan dengan APM. Sehingga ada performance penalty. Untuk UI application mungkin baik digunakan. Tetapi untuk kebutuhan menulis server yang high performance tidak disarankan. Baca CLR via C#, Third Edition karangan Jeffrey Richter Chapter 27.
async/await
Pada .NET 4.5 dan C# 5 kita diberikan penyelesaian masalah tersebut dengan async/await construct. Fitur ini sangat luar biasa sekali. Tidak ada lagi callback dan code yang ada juga mudah dibaca. Tidak berbeda dengan code yang ditulis secara synchronous.
Semua statement yang ada setelah line dengan keyword await akan digenerate oleh kompiler sebagai callback. method ini tidak akan memblock UI thread. Clean and performance. This is how you should write your code in the future. :)
Anda dapat membaca penjelasan lebih lanjut mengenai hal ini di MSDN.
Untuk mendapatkan informasi terbaru dari sekitar dunia conccurency di .net programming anda dapat melihat di blog berikut
Parallel Programming with .NET
auto vectorize
Mari kita lihat dengan bahasa tetangga kita yaitu c++. c++ selalu dikenal dengan keunggulan di masalah performance. Dan di versi visual studio yang berikut nya hal ini dibantu lagi oleh kompiler. Seperti yang kita bahas dibagian yang sebelumnya bahwa performance dapat dicapai dengan melakukan hal-hal secara parallel ketimbang sequential. c++ menyediakan hal ini di level looping secara otomatis. Kompiler c++ akan secara otomatis melakukan vectorize terhadap perulangan (loop) jika dia bisa. Jadi statement loop tersebut akan di ubah oleh si compiler. Bisa lebih cepat 8 x. Fantastis. Ini tentu saja dapat dilakukan pada processor yang support SIMD.
Anda dapat membaca keterangan lebih jelas mengenai Vectorization dari artikel berikut ini
Auto-Vectorization
What is Vectorization?
Auto-Vectorizer in Visual Studio 11 - Overview
GoingNative 7: VC11 Auto-Vectorizer, C++ NOW, Lang.NEXT
Bagaimana dengan c# dan managed code yang lain ? Apakah kita mendapatkan kemewahan yang serupa ? Ternyata bukan hanya kita yang menanyakan hal tersebut.
This is sad. - -".
c++ amp
c++ amp meningkatkan kecepatan eksekusi dari code anda dengan memanfaatkan hardware GPU (Graphics Processing Unit) yang memiliki kemampuan data parallel. c++ amp memiliki support terhadap array multidimensi, indexing, dan juga memiliki library matematika. c++ amp memberikan abstraksi terhadap hardware yang terdapat di perangkat kita. c++ amp ini membutuhkan DirectX 11 untuk hasil yang maksimal.
Anda dapat melihat beberapa artikel berikut untuk menggali lebih dalam lagi.
C++ Accelerated Massive Parallelism (C++ AMP)
Jika anda ingin mendapatkan informasi terbaru sekitar perkembangan parallel di dunia native code anda dapat mengunjungi
Parallel Programming in Native Code
Anda dapat melihat pada blog tersebut bahwa c++ amp menjadi selebritis baru di dunia c++. :)
Apakah kita c# developer dapat memanfaatkan kekuatan c++ amp tersebut ? Di MetroApps ? We really need that right ?
Untungnya ada beberapa workaround. Berikut beberapa diantaranya.
How to use C++ AMP from C#
How to use C++ AMP from C# using WinRT
Finally
Seperti judul yang saya sampaikan bahwa ibarat hutan rimba, dunia concurrency tersebut luas sekali. Jika kita tidak mempersiapkan diri kita akan tersesat. Saya harap artikel ini bisa memberikan gambaran singkat dan menjadi pemicu untuk memperdalam dan mengaplikasikannya di project anda. Apalagi moto dari Windows 8 adalah Fast and Fluid. Jadi sepertinya responsive apps, high performance merupakan hal yang harus diperhatikan mulai dari sekarang. Saya sudah menunjukkan hutan yang perlu kita telusuri bersama. Mari kita taklukkan hutan tersebut mulai dari sekarang. :).
Let's explore, share and learn together.
Baru ketemu ada tools menarik nih guys. Tools ini namanya MetroStudio. Kita bisa buat icon kita sendiri dari 600 koleksi icon yang ada.
Kita bisa customize dengan gampang dan sesuaikan dengan kebutuhan kita. Caranya untuk mendapatkan tools ini gampang saja, cukup register dari form yang sudah disediakan.
Setelah kita submit maka kita langsung mendownload aplikasi tersebut.
Setelah kita melakukan registrasi kita akan mendapat kiriman email yang isinya adalah unlock key untuk software tersebut. Silahkan cek di email yang anda masukkan sebelumnya. Jadi masukkan email yang valid ya...
Jalankan installer tersebut ketika diminta masukin unlock key copy paste dari email yang dikirim
Setelah anda selesai melakukan instalasi anda akan dihadapkan pada MetroStyle apps for desktop. !!! this is cool right ? MetroStyle everywhere...
Content before chrome / Fast And Fluid. :)
Tinggal pilih salah satu dari image yang ada dan lakukan eksperimen dan selamat berkreasi.
Because the lack of my designer skill, my icon is not look great - -"
Well... I'm born to code.. :) (*what a lame excuses)
This tools really follow Single Responsibility Principle. Do one thing and do it right.. :).
Selamat menikmati dan selamat membuat catchy icon with this freakin awesome tools..
See your creativity getting published to worldwide in the Windows Store soon.. :)
Dear Developers,
Begitu cepatnya perkembangan .NET sehingga kita tetap harus belajar dan belajar lagi untuk selalu tetap update dengan perkembangan ini.
.NET 4.5 banyak memberikan tambahan kemudahan-kemudahan untuk kita membangun aplikasi. Salah satunya adalah pengembangan aplikasi RESTful.
Maybe not fully restful but... Should give you the idea.. :) Soalnya definisi restful ini juga banyak dan banyak juga mengundang perdebatan.
Dengan mempublish service kita sebagai aplikasi RESTful maka kita memberikan kemudahan kepada aplikasi thin, mobile, tablet untuk mudah mengkonsumsi data service kita.
Beberapa format data yang lazim digunakan adalah XML, JSON, BSON, dan juga OData. MetroStyle apps juga tidak berbeda, tetap saja akan membutuhkan backend server untuk melayani kebutuhan datanya. Saya akan memberikan arahan mengenai komponen-komponen yang dibutuhkan untuk mendevelop aplikasi RESTful yang dapat diakses dari MetroStyle apps.
Server Side
RestFull Service dengan Web API
Banyak alternatif untuk membuat aplikasi RESTful dengan .NET.
Kita dapat membuatnya dengan WCF, atau WCF REST Starter Kit, ASP .NET MVC atau bahkan membuatnya sendiri dari scracth dengan menggunakan HTTP Handler dan low level programming dengan ASP .NET. Nah sekarang pertanyaannya adalah mau pilih yang mana ? ASP .NET 4.5 menawarkan satu lagi pilihan dengan WEB API.
Muncul yang baru lupakan yang lama...

So... that's very clear that... ASP .NET Web API is de facto standard from Microsoft for creating REST services. - -". Never mind. Let's start exploring. :)
Tempat yang sangat baik untuk melakukan eksplorasi untuk Web API adalah website berikut ini. Dengan mengikuti tutorial Your First ASP .NET Web API dapat memberikan gambaran sekilas yang cukup untuk memahami kemudahan yang ditawarkan oleh technology ini. Tapi pahami bahwa ini adalah getting started jadi kita tetap harus melakukan improvisasi jika ingin code tersebut layak untuk production.
Juga pahami bahwa status dari Web API adalah BETA dengan Go Live License. But... be careful masih banyak masalah dengan Web API ini beberapa diantaranya adalah masalah Serialization supportnya. Tools untuk Serialization pada Web API adalah DataContractSerializer. Dukungan yang diberikan oleh DataContractSerializer diraskan masih terbatas karena tidak dapat melakukan serialization terhadap object yang kompleks. Untuk kedepannya sepertinya DataContractSerializer tersebut bakalan digantikan oleh JSON .NET yang lebih mature.
Berikut adalah beberapa artikel yang mengungkap keterbatasan tersebut.
Working with the Entity Framework and Web API
Using an alternate JSON Serializer in ASP.NET Web API
Using JSON .NET with ASP .NET Web API
Serialization dan Deserialization dengan JSON .NET

Kita membutuhkan komponen untuk melakukan serialization dan deserialization untuk mempertukarkan data antara client (MetroStyle) dan server. Dalam hal ini kita akan menggunakan JSON .NET untuk melakukan hal tersebut. Resourcenya bisa dilihat di link berikut ini
JSON .NET CodePlex
JSON .NET Download
Anda juga dapat mengunduhnya dengan Nuget. Tetapi versi ini hanya dapat digunakan untuk server side saja. Untuk metrostyle kita harus mendownload dari source nya langsung.

Setelah anda mendownload source nya dari JSON .NET Download dan melakukan ekstraksi anda akan menemuka versi Metro di folder Bin\Metro.

Cara untuk menggunakan library tersebut sangat sederhana. Tinggal menggunakan 2 method saja.
HttpClient untuk mengakses data dari Client
Untuk mengakses data dari client kita menggunakan protokol HTTP. Kita menggunakan kelas HttpClient yang sudah disediakan oleh .NET Framework.
Untuk menggunakannya anda bisa menelusuri artikel berikut.
Quickstart: Connecting using HttpClient
Dan juga bisa dipelajari dari HttpClient Sample
Setelah data json tersebut berhasil sampai di client maka kita dapat dengan mudah melakukan deserialize dengan menggunakan JSON .NET library versi Metro yang sudah dijelaskan di atas tadi.
Jika anda tidak menginginkan adanya dependency library yang besar anda dapat menggunakan JSON parser yang sudah disediakan oleh WinRT library.
How to parse JSON
Sehingga kira kita akan memiliki arsitektur seperti ini. Still incomplete but should give you the idea.

Saya masih ragu sebenarnya dengan penggunaan Entity Framework sebagai Data Access layer karena masalah performance. Anda dapat menggunakan technology yang sesuai dengan kebutuhan anda atau bahkan plain simple ADO .NET bisa saja menjadi pilihan yang cukup baik. :)
Let's Start Building Awesome Apps now !
Kita semua sama-sama sudah tahu kalau Visual Studio adalah IDE yang terbaik untuk .NET developer.. Setuju ? :P
Tapi..
Tetap saja sepertinya masih ada saja yang perlu di improve pada IDE tersebut. Untungnya team Visual Studio cepat menyadari hal-hal tersebut dan melakukan improvement Continuous improvement is always in VS hearts actually. Ada hal yang saya dambakan pada Visual Studio 2010 akhirnya tercapai padaVisual Studio 11 Beta ini.
Salah satunya adalah generate EventHandler. Berikut saya berikan saja langsung contoh screenshoot. Image worth thousand word right?
Visual Studio sudah membantu sebenarnya dengan memberikan autocompletion dan generation ketika kita mengetikkan += untuk event.

Jika kita menekan Tab setelah popup ajaib tersebut muncul maka VS akan dengan senang hati melakukan generate method event handler kita.

Tetapi sayangnya si VS terlalu boros melakukan generate code tersebut. :(. Padahal code tersebut bisa ditulis dengan singkat seperti berikut

Akhirnya kita harus menghapus hasil generate tersebut untuk mendapatkan hasil yang lebih ramping.
Penyakit lain yang saya temukan adalah kita tidak bisa melakukan generate langsung dengan mengetikkan nama method handler.
Jika saya mengetikan langsung tanpa menggunakan completion, maka akan ditampilkan garis mungil yang mengundang kita untuk menekan CTRL+.

CTRL+. merupakan kombinasi keyword sakti yang paling sering sayang gunakan. Kegunaannya ada beberapa yaitu mengenerate kelas otomatis, auto using untuk namespace, rename.. dan mungkin masih ada lagi ya selain itu ? Saya mencoba untuk menguji keberuntungan dengan mengeluarkan combo sakti itu dan hasilnya adalah.

Ups.. this is a bad sign... property.. what the heck.. but.. let's at least give her a chance right.. And booomm..

NOT GREAT... - -".
Ternyata yang di generate benar2 property (tuh kan.. udh diperingatin dari tadi. masih juga membandel.... - -", VS bukan dukun tau.. )
That's our life before Visual Studio 11 Beta comes.
Nah.. sekarang Visual Studio 11 Beta kesalahan diatas sudah membaik... Kita sudah mendapatkan hasil generate yang ramping ketika menekan TAB utk event handler

Look nice right??

Dan sekarang kita ulangi percobaan yang sama seperti sebelum dengan mengetikkan manual nama method untuk event handlernya..

Hey.. what an improvement right? Feel excited... Ready.. and GO

COOLLL!! This is exactly what we want right ?? Finally hiks hiks.. After so long... Enough with the drama.. - -"
Hal lain yang baru saya tahu adalah.. (maklumlah kurang perhatian). Kita dapat generate langsung method yang kita definisikan namanya dari XAML. Jadi tidak hanya nama default saja yang bisa di generate. Tetapi kita bisa mengetikkan secara langsung dan menolak completion New Event Handler.

Setelah kita mengetikkan nama handler yang kita mau.. maka kita tinggal melakukan klik kanan dan pilih Navigate to Event Handler

And.. voila...

Huff... that's the journey of our beloved event handler generation..
Who loves you baby ? VS does..
:)
VS Rocks right ?? All of it ?
Bagaimana dengan perubahan warna di VS 11 ? Do you like it ?

Hai rekan developer,
Seperti yang kita ketahui bahwa Windows 8 Consumer Preview sudah di release pada tanggal 29 February. Banyak hal-hal yang baru dan tentu saja lebih besar lagi opportunity yang akan kita dapatkan dengan platform baru ini. Seperti yang kita ketahui market untuk consumer Windows Platform sangatlah besar bahkan merupakan yang terbesar. Sehingga kesempatan kita untuk mendapatkan profit dari aplikasi yang kita buat di lingkungan Windows ini lebih besar daripada platform lain seperti Android dan IOS.
Berikut adalah beberapa presentasi pengantar yang dapat memberikan gambaran mengenai Windows 8 Platform, Philosophy MetroStyle Apps dan metode pembangunan aplikasinya.
Windows 8 Camp: Introduction to Building Metro Apps - Soluto Case Study
Windows 8 Camp: Introduction to Building Metro Apps - Windows 8 Platform for Apps
Windows 8 Camp: Introduction to Building Metro Apps - Design a Metro-style apps
Windows 8 Camp: Introduction to Building Metro Apps - using C#, XAML & WinRT
Windows 8 Camp: Introduction to Building Metro Apps - Windows 8 Store
Saya sangat berharap bahwa dengan angin segar Windows 8 ini kita dapat menghasilkan aplikasi-aplikasi yang akan menembus Top Apps. Sehingga Indonesia menjadi lebih diperhitungkan lagi di pasar global.
This is our chance to show our potential to the largest market in this World !!
Let's get started from now. Download and install Windows 8 and Visual Studio 11 Beta.
Crank Your VS Up and Start Exploring Windows 8
Jangan lupa untuk Bergabung di komunitas Windows 8 Facebook. Saling berbagi dan berdiskusi.
Together we can break that Global Market.
:)
Kehadiran windows 8 benar-benar membawa angin segar bagi para developer. Tidak hanya bagi kalangan .NET developer tetapi Web Developer dapat juga menggunakan skill yang sudah dimiliki untuk membuat MetroStyle Apps. Tidak pernah terbayang sebelumnya jika dengan bermodalkan HTML 5 + JavaScript + CSS3 kita dapat membangun aplikasi di Windows. Yang tidak kalah mengejutkannya adalah aplikasi tersebut dijalankan sebagai native application. This is mind blowing. :).
Panduan untuk membuat aplikasi MetroStyle Apps dengan menggunakan HTML+JavaScript dapat di ikuti disini
Jika JavaScript dapat digunakan untuk membangun aplikasi tersebut, bagaimana dengan existing library seperti jQuery ? Apakah kita dapat menggunakannya juga ?
Experiment yang saya lakukan menunjukkan bahwa hal tersebut dapat dilakukan. Hal tersebut cukup mudah dilakukan, hampir tidak memiliki perbedaan dengan pembangunan web application. jQuery merupakan library yang memungkinkan para developer untuk membuat code javascript yang non-obstrusive. Artinya code JavaScript kita tidak ada diselip2 code HTML. Kekuatan dari jQuery terletak pada selectornya.
Anda dapat menambahkan library jQuery ke project MetroStyle anda dengan menggunakan Nuget Package manager.
Klik kanan pada References dan pilih Manage NuGet Packages

Search jQuery dari Online NuGet repository. Anda harus terkoneksi dengan internet untuk melakukan ini

Setelah di install anda akan mendapatkan library jQuery berada pada folder Scripts

Add references ke jQuery di default.html

Pada halaman default.html, gantikan isi body dengan code berikut. View kita hanya menampilkan satu button dan rating control.

Pada default.js tambahkan code berikut

Anda perhatikan bahwa kita menggunakan code jQuery biasa untuk mengakses button dengan id dan melakukan attach handler kepada event click.
Untuk mengakses ratingControlHost kita langsung mengakses element Dom objectnya dengan index ke 0. Disini kita mengakses WinJS control dengan menggunakan jQuery.
Really seamless integration right ?
Tekan F5 dan ketika anda menekan button click maka rating akan dimanipulasi

Cukup mudah sekali cara untuk melakukan integrasinya bukan ? Anda sekarang dapat memanfaatkan library jQuery, mengintegrasikannya dengan WinJS untuk mempercepat proses pembuatan aplikasi anda.
Have fun with non obtrusive power from jQuery !!
References
jQuery in a Windows 8 Application
Accessing Element Directly
jQuery Tutorial
Select Element By Id with jQuery
Quickstart: adding HTML controls and handling events
Quickstart: adding WinJS controls and styles