WPF antara Cinta dan Realita | Episode 5
Happy Ied, selamat lebaran. Liburan lebaran yang indah telah berlalu, kegiatan nge-lab kembali berlangsung. Hal yang menarik pada saat pertama kali ngelab adalah diselenggarakannya sebuah Events mingguan di Lab MIC dengan nama Internal Skill Accelerator UX development and foundations with WPF. Sebuah pola pertanyaan yang nyata pada setiap pembelajaran WPF adalah "mengapa saya harus mengadopsi WPF" pertanyaan ini tampaknya sudah dijawab pada WPF Cinta dan Realita episode 1. Pertanyaan yang menarik lainnya adalah "Bagaimana mempertahankan investasi kode yang telah dimiliki oleh kita yang dikembangkan dengan teknologi sebelum WPF yakni Windows Forms, Win32, ataupun control lain seperti ActiveX. Dan ini yang akan kita bahas pada episode kali ini.
Interoperabilitas di tingkat Managed Code
Teknologi WPF menghadirkan konsep interoperabilitas dengan teknologi sebelumnya. Interoperabilitas didefinisikan sebagai kemampuan suatu platform/teknologi untuk dapat berkomunikasi dengan platform/teknologi lain, baik secara langsung atau melalui suatu broker yang dikenal dengan middleware. WPF secara langsung mendukung dua teknik yang memungkinkan terjadinya interopreabilitas antara teknologi Windows sebelumnya, yakni.
- Host WPF Content di Windows Form, pada bagian ini kunci utamanya adalah class ElementHost yang menangani komunikasi control WPF di Windows Form
- Host Windows Forms Control di WPF Applications, pada mekanisme ini kunci utamanya adalah class WindowsFormHost yang menjadi container control Windows Form di WPF
Kedua kemampuan ini menarik sebagai contoh melakukan hosting wpf control ke Windows Form akan memfasilitasi pihak-pihak yang telah memiliki investasi kode di Windows Form untuk meningkatkan UX aplikasinya dengan menambahkan WPF Contents, hal yang sebaliknya juga berlaku pada kondisi-kondisi tertentu.
Interoperabilitas di tingkat Unmanaged Code
Bagaimana dengan Interop dengan teknologi sebelum Windows Form. Secara umum memang tidak ada jalur yang "mudah" untuk ini tetapi bila kita sama-sama mengacu pada kemampuan .NET Framework dalam memfasilitasi komunikasi berbasis interop melalui mekanisme COM Interop dan Platform Invoke, maka kita dapat melakukannnya dengan dua pendekatan umum yakni.
- Mengkonversi terlebih dahulu program yang kita miliki menjadi program yang memiliki dukungan .NET. Sebagai contoh kita dapat mengkompilasi aplikasi Win32 kita dengan flag /CLI kemudian melakukan pemanggilan fungsi-fungsi yang dibutuhkan dengan menggunakan P-Invoke
- Mengenkapsulasi terlebih dahulu control yang berbasis win32 / ActiveX menjadi User control .NET Framework kemudian memanggilnya di aplikasi WPF
Kode Sumber
Konsep-konsep di atas penulis tampilkan dalam kode-kode berikut, kode pada solusi ini memang cukup panjang mengingat topic interop memang cukup luas dan menarik dalam pembahasannya. Pada kode sumber ini pembaca dapat memperoleh berbagai proyek-proyek contoh interop antara.
- WPF ke Window Form
- Windows Form ke WPF
- ActiveX ke WPF
- Win32 ke WPF
Unduh di