Formulir Xamarin, MVVMCross, dan SkiaSharp: Tritunggal Mahakudus dari Pengembangan Aplikasi Lintas Platform
Diterbitkan: 2022-03-11Bicara tentang menetapkan harapan yang tinggi. Trinitas suci, tidak kurang!
Sebenarnya, pengembangan aplikasi seluler mahal jika Anda menargetkan banyak platform, karena tidak ada kode bersama. Apple mengharuskan Anda membuat kode di Objective-C atau Swift, Android mengharuskan Anda membuat kode di Java, dan WinPhone mengharuskan Anda mengembangkan di .NET, sering kali C#. Ditambah dengan banyaknya perpustakaan yang disediakan setiap platform untuk menangani peta, menggambar, gambar, atau GPS—banyak waktu dan pengetahuan diperlukan untuk membangun satu aplikasi seluler.
Tak perlu dikatakan, sebagian besar startup tidak mampu melipatgandakan pengeluaran mereka, dan bahkan bisnis yang sudah mapan dapat mengalami kesulitan membenarkan harga masuk ke ruang seluler.
Dalam artikel ini, Anda akan mempelajari bagaimana Xamarin Forms, dalam kombinasi dengan MVVMCross dan SkiaSharp, dapat menjadi cara yang layak untuk membangun aplikasi seluler lintas platform tanpa mengurangi keakraban, kinerja, dan keunikan. Artikel ini akan meninjau ketiga teknologi ini dan bagaimana mereka dapat mengurangi biaya pengembangan dengan memungkinkan penggunaan kembali kode secara maksimal di berbagai platform seluler.
Masalah Penting
Masalah pengembangan aplikasi seluler lintas platform adalah nyata dan, dengan demikian, banyak solusi berbeda telah muncul selama bertahun-tahun untuk mengurangi biaya pengembangan dengan berbagi kode antar platform. Dalam industri video game, misalnya, semua mesin game utama menyediakan solusi lintas platform, bahkan Unreal dan Unity menargetkan ponsel dan tablet.
Di bagian depan aplikasi, ada beberapa upaya untuk memimpin pasar lintas platform ini selama bertahun-tahun. Banyak yang gagal dan tersesat di jurang, tetapi beberapa dari mereka masih bertahan setelah beberapa tahun. Di antaranya adalah Xamarin, satu-satunya solusi .NET yang menawarkan dukungan untuk ketiga platform seluler.
Asli atau Bukan, Ini Aku Datang
Jadi ada perang yang mengobarkan antara solusi yang berbeda dan siapa bilang perang berarti propaganda!
Perang sebagian besar terjadi di depan N besar : menjadi penduduk asli! Anda perlu mewaspadai kata tersebut karena tidak memiliki arti yang jelas. Ini adalah kata yang paling banyak digunakan di dunia pengembangan seluler saat ini dan sangat trendi. Kebenarannya adalah bahwa tidak ada yang setuju tentang apa artinya sebenarnya.
Saat memilih kerangka kerja lintas platform, semua opsi "asli" tidak sama, jadi berhati-hatilah, Anda mungkin membandingkan apel dengan jeruk. Untuk beberapa ini tentang bahasa pemrograman, untuk yang lain tentang kemampuan untuk menggunakan fitur perangkat keras, yang lain berpikir ini tentang penggunaan platform API/UI, dan seringkali ini hanya tentang bukan aplikasi web.
Ada argumen di setiap sisi perdebatan dan saya tidak akan menggali lebih dalam karena itu tidak berguna. Mengapa tidak berguna? Baiklah, izinkan saya memberi tahu Anda fakta yang sulit diterima: pengguna akhir Anda tidak peduli!
Ya, Anda membacanya dengan benar, hanya programmer Anda yang peduli. Pengguna akhir Anda tidak akan pernah memilih aplikasi Anda karena teknologi yang mendasarinya: mereka akan memilih aplikasi Anda karena itu menjawab masalah mereka dan memberikan pengalaman yang baik.
Jadi, alih-alih memperebutkan arti sebuah kata, mari kita lihat bagaimana Xamarin menyediakan cara yang efisien untuk memberi pengguna Anda apa yang mereka pedulikan.
Bapa, Putra, dan Roh Kudus
Sebelum kita melanjutkan, mari kita perjelas tiga elemen yang membentuk solusi kita untuk masalah pengembangan lintas platform.
Ayah: Xamarin
Seperti yang disebutkan sebelumnya, Xamarin adalah solusi .NET untuk pengembangan aplikasi seluler dan desktop. Itu dibeli oleh Microsoft pada 2016 tetapi bertanggal sekitar empat tahun lalu dengan proyek Mono. Saat ini, ia memiliki tiga solusi: Xamarin.iOS, Xamarin.Android dan Xamarin.Mac. Platform lain sudah menangani aplikasi .NET secara default, menjadi solusi Microsoft. Singkatnya, Xamarin menawarkan tautan langsung ke API platform di .NET. Oleh karena itu, Anda dapat menggunakan fitur asli dari aplikasi .NET. Ada juga modul ekstensi untuk Xamarin yang disebut Formulir yang menyediakan lapisan abstraksi untuk UI.
Putra: SkiaSharp
SkiaSharp adalah pembungkus .NET di atas perpustakaan grafik vektor Skia Google. Skia adalah mesin rendering asli Android, Chrome, ChromeOS, dan Firefox. Dengan SkiaSharp, Anda dapat menggunakan perpustakaan di aplikasi .NET Anda untuk menjadikannya lintas platform. Ini berarti bahwa bayangan rapi yang dikatakan desainer Anda "akan membuat aplikasi Anda jauh lebih baik" dapat dikodekan hanya sekali, bukan diulang untuk setiap platform target. Secara pribadi, menurut saya fitur terbaiknya adalah kemampuan untuk merender grafik SVG dengan cara yang memungkinkan Anda mencegah duplikasi berbagai faktor bentuk sambil mempertahankan rendering piksel yang tajam dan sempurna.
Roh Kudus: MVVMCross
Untuk menjaga semuanya terpisah dengan baik dan digabungkan secara longgar, solusi suci kami akan bergantung pada MVVMCross. Kerangka kerja ini mengimplementasikan infrastruktur MVVM (Model-View-ViewModel) sehingga semuanya dapat tetap independen. Tanpa terlalu teknis, aplikasi umumnya dibagi menjadi tiga bagian:
- Model: Representasi memori dari data kami
- Tampilan: UI kami, menyajikan data dan tindakan kepada pengguna
- ViewModel: Lapisan yang mengikat Model kita ke View dan sebaliknya
Dalam rekayasa perangkat lunak, kami selalu berusaha untuk menjaga tampilan terpisah dari ViewModel sehingga logika aplikasi (dalam ViewModel) dapat digunakan kembali meskipun kami mengubah representasi visual. MVVMCross membantu kami mencapai hal itu dengan menangani pengikatan data dan menyediakan pola dan alat untuk abstraksi platform.
Apa yang Dipedulikan Pengguna Akhir
Sekadar rekap, ada beberapa hal berbeda yang membedakan aplikasi yang sukses dari yang buruk. Aplikasi yang berhasil:
- Memecahkan masalah kehidupan nyata
- Menawarkan pengalaman yang menyenangkan
Poin nomor 1 jelas tidak ada hubungannya dengan framework yang Anda pilih. Jadi mari kita berkonsentrasi pada poin nomor 2. Ada tiga aspek utama yang berkontribusi pada kenikmatan aplikasi Anda:
- Keakraban
- Pertunjukan
- Keunikan
Keakraban
Keakraban berkaitan dengan kemudahan penggunaan dan dengan cepat menemukan jalan Anda melalui aplikasi.
Dengan kata lain, ini tentang menggunakan paradigma antarmuka pengguna platform yang berbeda dengan cara yang koheren di seluruh sistem. Misalnya, hal-hal sederhana seperti posisi tombol, tindakan konteks daftar, atau navigasi semuanya berkontribusi pada keakraban aplikasi Anda.
Keakraban adalah titik lemah utama aplikasi web atau kerangka kerja berdasarkan antarmuka web. Xamarin Forms, di sisi lain, menyediakan pemetaan lintas platform ke elemen UI yang disediakan vendor.
Oleh karena itu, pengguna Anda mendapatkan pengalaman yang sesuai dengan tampilan dan nuansa umum platform sehingga mereka secara intuitif akan merasa nyaman di aplikasi Anda.
Pertunjukan
Terus terang, menyebutkan "asli" dalam propaganda pemasaran Anda tidak ada artinya. Ambil Jasonette sebagai contoh yang "asli melalui HTTP". UI disimpan di server web… halo perjalanan pulang pergi dan pelambatan, jadi kami melihat bahwa asli tidak selalu dapat dianggap menyiratkan kinerja yang lebih baik!
Jadi dengan keluarnya mitos itu, ketika melihat tolok ukur kehidupan nyata, Xamarin keluar sebagai solusi paling lengkap terkait dengan kinerja. Formulir Xamarin, tidak memerlukan lebih banyak sakelar konteks, menawarkan kinerja yang sebanding dengan aplikasi bahasa asli.

Kesimpulan saya adalah bahwa pilihan implementasi Anda adalah yang dapat memperlambat aplikasi Anda daripada Xamarin vs. bahasa asli. Pilihan lain di luar sana jelas tidak menguntungkan sehubungan dengan kinerja.
Keunikan
Kemungkinan bagi desainer Anda untuk membuat aplikasi yang tampak unik juga sangat penting untuk dipertimbangkan jika Anda ingin memberikan pengalaman pengguna terbaik dan membedakan aplikasi Anda.
Sering kali, keunikan menyiratkan pembuatan kontrol, animasi, atau gerakan yang terlihat khusus. Ketika tidak tersedia di Xamarin, Anda dapat menggunakan SkiaSharp (pembungkus di sekitar perpustakaan rendering grafik vektor Skia Google) dan memanfaatkan konsep renderer kustom dari Xamarin Forms untuk sedekat mungkin dengan perangkat keras yang diperlukan, sambil selalu mengkode dalam satu bahasa, sesuatu yang tidak dapat ditawarkan oleh solusi lain.
Apa yang Anda Peduli sebagai Bisnis
Pada titik ini, kemungkinan besar Anda berpikir bahwa pilihan kerangka kerja juga merupakan keputusan bisnis. Terlepas dari faktor-faktor di luar cakupan artikel ini, seperti ketersediaan sumber daya manusia, Xamarin memiliki banyak hal untuk ditawarkan, terutama jika digabungkan dengan MVVMCross. Saya akan menguraikan empat aspek yang ingin Anda pertimbangkan dalam keputusan Anda:
- Harga dan biaya pengembangan
- Penggunaan kembali kode
- Ketersediaan komponen
- Dukungan dan komunitas
Harga dan Biaya Pengembangan
Mari kita singkirkan yang ini. Sejak awal tahun ini, Xamarin gratis untuk freelancer dan bisnis kecil seperti startup (dengan Visual Studio Community Edition). Untuk organisasi yang lebih besar, ia datang « bebas » dengan lisensi Visual Studio yang mungkin sudah Anda miliki. Formulir Xamarin, MVVMCross, dan SkiaSharp juga semuanya gratis dan open source untuk melengkapinya!
Seperti yang telah saya sebutkan, menggunakan rute .Net dengan Xamarin memungkinkan Anda mengembangkan aplikasi dalam satu bahasa dari awal hingga akhir. Sebagian besar solusi lain di luar sana mengharuskan pemrogram Anda untuk mengetahui bahasa yang berbeda. Dalam kasus Cordova, misalnya, Anda harus fasih tidak hanya dalam HTML, Javascript, CSS, tetapi juga mungkin Objective-C, Java, dan/atau C# jika Anda perlu mengakses API vendor yang tidak memiliki plugin yang tersedia .
Variasi bahasa yang digunakan membuat lebih banyak sakelar konteks dan lebih banyak alat untuk dikuasai yang mengarah pada penurunan efisiensi. Xamarin, di sisi lain, adalah solusi lengkap: dari Visual Studio Anda membangun, menyebarkan, dan men-debug di semua platform.
Meskipun tidak terkait langsung dengan Xamarin, Anda juga mendapatkan banyak fitur di C# yang mempercepat pengembangan dengan memilih solusi .Net. Yaitu, Anda mendapat manfaat dari fitur-fitur hebat di C# 4.5+ seperti multi-threading yang mudah dengan async/menunggu, penutupan, dan refleksi, yang semuanya telah terbukti meningkatkan efisiensi.
Penggunaan Kembali Kode
Anda mungkin telah memikirkan tentang penggunaan kembali kode dan kemungkinan besar Anda menganggap semua solusi agak setara dalam hal ini. Maaf untuk mengatakan sobat, tetapi Anda salah!
Para programmer di antara Anda mungkin bertanya-tanya mengapa saya mengusulkan penggunaan MVVMCross di atas lapisan MVVM yang dibangun ke dalam Formulir? Nah, inilah sesuatu yang perlu dipertimbangkan: apakah Anda benar-benar hanya membuat aplikasi seluler?
Dengan mengisolasi logika aplikasi Anda dengan MVVMCross dan menggunakan inversi kontrol yang disediakannya, Anda dapat menggunakan kembali jumlah maksimum kode di ponsel, tetapi juga di Windows dan Mac (karena Xamarin.Mac adalah teman Anda).
Tidak hanya menghemat uang Anda, tetapi juga mengedepankan praktik rekayasa yang baik yang akan menurunkan biaya pemeliharaan kode Anda.
Ketersediaan Komponen
Mungkin Anda tidak seperti saya, tapi saya benci menciptakan kembali roda. Oleh karena itu, memiliki akses ke komponen yang sudah ada yang dapat Anda integrasikan dengan mudah di aplikasi Anda sangat penting untuk mempercepat waktu Anda ke pasar dan seringkali itu akan menurunkan biaya Anda pada saat yang bersamaan.
Memilih Xamarin dan MVVMCross menawarkan dua pilihan untuk memilih komponen yang ada. Pertama, semakin banyak komponen yang tersedia untuk Xamarin dengan atau tanpa Formulir. Xamarin memiliki Component Store yang terintegrasi di dalam Visual Studio di mana Anda dapat menemukan berbagai solusi untuk masalah aplikasi umum dan perusahaan lain menjual langsung, jadi pastikan untuk mencari sebelum Anda mulai menulis komponen Anda sendiri (atau pertimbangkan untuk menjualnya setelah dibuat).
Kedua, Anda akan ingin mencari paket Nuget karena kemungkinan seseorang telah menulis kode untuk melakukan apa yang Anda butuhkan. Di antara paket-paket itu, Anda akan menemukan daftar plugin MVVMCross lintas platform yang layak yang akan memecahkan masalah umum seperti email, GPS, atau lokalisasi.
Jika Anda sudah berpengalaman dengan C#, Anda mungkin memiliki komponen pilihan Anda. Tentu saja, Anda tidak ingin membiarkan mereka pergi, mereka merasa sangat nyaman. Yakinlah, Anda dapat membuat ikatan C# untuk komponen yang ada dan kemudian menggunakannya seolah-olah kami dibundel dengan Xamarin, bahkan dalam Formulir dengan sedikit bantuan dari perender khusus.
Omong-omong, Anda mungkin ingin melihat repositori Xamarin binding Github sebelum membuatnya sendiri.
Dukungan dan Komunitas
Terakhir, akses ke dukungan dan contoh merupakan faktor yang sangat penting dalam memilih kerangka kerja. Xamarin telah ada untuk sementara waktu, jadi komunitasnya cukup besar hari ini.
Mencari informasi di Google biasanya menghasilkan cukup banyak jawaban (tip: coba juga pencarian Anda untuk monotouch dan monodroid, nenek moyang Xamarin) dan Xamarin menawarkan banyak contoh dan dokumentasi hebat di situs web mereka.
Selain itu, karena Xamarin benar-benar hanya mengikat API vendor, dokumentasi Apple dan Google selalu relevan dan akan menjawab banyak pertanyaan Anda. Anda kemudian dapat membuat layanan MVVMCross Anda sendiri untuk mengabstraksi API vendor di dalam kode bersama Anda.
Adapun masa depan Xamarin, dengan akuisisi Maret lalu oleh Microsoft, taruhan saya adalah bahwa itu tidak akan kemana-mana kecuali maju. Sejak penjualan itu, dan peralihan ke model free-ish, komunitas hanya tumbuh, dukungan telah meningkat, dan produk terus meningkat bahkan mungkin dengan kecepatan yang lebih cepat!
Masa depan terlihat cerah bagi Xamarin.
Mari Bersiap untuk Bergemuruh!
Saya menyadari fakta bahwa saya mungkin membuka sekaleng cacing dengan artikel ini. Sekarang jangan salah paham, ada pilihan lain di luar sana yang layak dipertimbangkan dan saya mengundang Anda untuk melakukannya, karena kekhawatiran saya mungkin tidak sama dengan Anda.
Ingatlah bahwa jika Anda memiliki garis waktu enam minggu dan empat bulan kemudian Anda masih belum menyiapkan aplikasi, Anda tidak menang. Itu akan menyisakan dua setengah bulan dan banyak uang untuk melatih seseorang di rumah atau mempekerjakan seseorang yang berpengetahuan luas. Bersikeras membangun aplikasi "asli" pada saat itu bisa sangat merugikan nasib proyek Anda.
Xamarin dan teknologi pendamping ini memberikan apa yang diinginkan pengguna Anda dan apa yang Anda butuhkan. Saya harap artikel ini akan membantu Anda membuat keputusan yang tepat tentang kerangka kerja yang dapat Anda pilih untuk aplikasi seluler Anda berikutnya.