Bagikan melalui


Pengantar .NET MAUI

Tip

Konten ini adalah kutipan dari eBook, Pola Aplikasi Perusahaan Menggunakan .NET MAUI, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.

Pola Aplikasi Perusahaan Menggunakan thumbnail sampul .NET MAUI eBook.

Terlepas dari platform, pengembang aplikasi perusahaan menghadapi beberapa tantangan:

  • Persyaratan aplikasi yang dapat berubah dari waktu ke waktu.
  • Peluang dan tantangan bisnis baru.
  • Umpan balik yang sedang berlangsung selama pengembangan yang dapat secara signifikan memengaruhi cakupan dan persyaratan aplikasi.

Dengan mengingat hal ini, penting untuk membangun aplikasi yang dapat dengan mudah dimodifikasi atau diperpanjang dari waktu ke waktu. Merancang untuk kemampuan beradaptasi tersebut bisa sulit karena membutuhkan arsitektur yang memungkinkan bagian individual aplikasi dikembangkan dan diuji secara independen dalam isolasi tanpa memengaruhi aplikasi lainnya.

Banyak aplikasi perusahaan yang cukup kompleks untuk membutuhkan lebih dari satu pengembang. Ini bisa menjadi tantangan signifikan untuk memutuskan cara merancang aplikasi sehingga beberapa pengembang dapat bekerja secara efektif pada berbagai bagian aplikasi secara independen, sambil memastikan bahwa potongan-potongan tersebut bersatu dengan mulus saat diintegrasikan ke dalam aplikasi.

Pendekatan tradisional untuk merancang dan membangun aplikasi menghasilkan apa yang disebut sebagai aplikasi monolitik , di mana komponen digabungkan dengan erat tanpa pemisahan yang jelas di antara mereka. Biasanya, pendekatan monolitik ini menyebabkan aplikasi yang sulit dan tidak efisien untuk dipertahankan, karena mungkin sulit untuk mengatasi bug tanpa merusak komponen lain di aplikasi, dan mungkin sulit untuk menambahkan fitur baru atau mengganti fitur yang ada.

Obat yang efektif untuk tantangan ini adalah mempartisi aplikasi menjadi komponen yang digabungkan secara terpisah yang dapat dengan mudah diintegrasikan bersama ke dalam aplikasi. Pendekatan seperti itu menawarkan beberapa manfaat:

  • Ini memungkinkan fungsionalitas individu dikembangkan, diuji, diperluas, dan dikelola oleh individu atau tim yang berbeda.
  • Ini mempromosikan penggunaan kembali dan pemisahan kekhawatiran yang bersih antara kemampuan horizontal aplikasi, seperti autentikasi dan akses data, dan kemampuan vertikal, seperti fungsionalitas bisnis khusus aplikasi. Hal ini memungkinkan dependensi dan interaksi antar komponen aplikasi dikelola dengan lebih mudah.
  • Ini membantu mempertahankan pemisahan peran dengan memungkinkan individu atau tim yang berbeda, untuk fokus pada tugas atau fungsionalitas tertentu sesuai dengan keahlian mereka. Secara khusus, ini memberikan pemisahan yang lebih bersih antara antarmuka pengguna dan logika bisnis aplikasi.

Namun, ada banyak masalah yang harus diselesaikan saat mempartisi aplikasi menjadi komponen yang terpisah dan digabungkan secara longgar. Ini termasuk:

  • Memutuskan cara memberikan pemisahan kekhawatiran yang bersih antara kontrol antarmuka pengguna dan logika mereka. Salah satu keputusan terpenting saat membuat aplikasi perusahaan .NET MAUI adalah apakah akan menempatkan logika bisnis dalam file code-behind, atau apakah akan membuat pemisahan kekhawatiran yang bersih antara kontrol antarmuka pengguna dan logika mereka, untuk membuat aplikasi lebih dapat dipertahankan dan dapat diuji. Untuk informasi selengkapnya, lihat Model-View-ViewModel.
  • Menentukan apakah akan menggunakan kontainer injeksi dependensi. Kontainer injeksi dependensi mengurangi konektor dependensi antar objek dengan menyediakan fasilitas untuk membuat instans kelas dengan dependensi yang disuntikkan, dan mengelola masa pakainya berdasarkan konfigurasi kontainer. Untuk informasi selengkapnya, lihat Injeksi dependensi.
  • Memilih antara platform yang disediakan peristiwa dan komunikasi berbasis pesan yang digabungkan secara longgar antara komponen yang tidak nyaman untuk ditautkan berdasarkan referensi objek dan jenis. Untuk informasi selengkapnya, lihat Pengantar Berkomunikasi antara komponen yang digabungkan secara longgar.
  • Memutuskan cara menavigasi antar halaman, termasuk cara memanggil navigasi, dan di mana logika navigasi harus berada. Untuk informasi selengkapnya, lihat Navigasi.
  • Menentukan cara memvalidasi input pengguna untuk kebenaran. Keputusan harus mencakup cara memvalidasi input pengguna, dan cara memberi tahu pengguna tentang kesalahan validasi. Untuk informasi selengkapnya, lihat Validasi.
  • Memutuskan cara melakukan autentikasi, dan cara melindungi sumber daya dengan otorisasi. Untuk informasi selengkapnya, lihat Autentikasi dan otorisasi.
  • Menentukan cara mengakses data jarak jauh dari layanan web, termasuk cara mengambil data dengan andal, dan cara menyimpan data. Untuk informasi selengkapnya, lihat Mengakses data jarak jauh.
  • Memutuskan cara menguji aplikasi. Untuk informasi selengkapnya, lihat Pengujian Unit.

Panduan ini memberikan panduan tentang masalah ini, dan berfokus pada pola inti dan arsitektur untuk membangun aplikasi perusahaan lintas platform menggunakan .NET MAUI. Panduan ini bertujuan untuk membantu menghasilkan kode yang dapat disesuaikan, dapat dipertahankan, dan dapat diuji, dengan mengatasi skenario pengembangan aplikasi perusahaan .NET MAUI umum, dan dengan memisahkan kekhawatiran presentasi, logika presentasi, dan entitas melalui dukungan untuk pola Model-View-ViewModel (MVVM).

Aplikasi sampel

Panduan ini mencakup aplikasi sampel, eShop, yang merupakan toko online yang menyertakan fungsionalitas berikut:

  • Mengautentikasi dan mengotorisasi terhadap layanan backend.
  • Menelusuri katalog item.
  • Memfilter katalog.
  • Memesan item dari katalog.
  • Menampilkan riwayat pesanan pengguna.
  • Konfigurasi pengaturan.

Contoh arsitektur aplikasi

Di bawah ini adalah gambaran umum tingkat tinggi tentang arsitektur aplikasi sampel.

Arsitektur tingkat tinggi eShop

Aplikasi sampel dikirim dengan:

  • .NET Aspire App Hosting & Orkestrasi
  • Aplikasi web Blazor dikembangkan dengan ASP.NET Core.
  • Aplikasi multi-platform dikembangkan dengan .NET MAUI, yang mendukung iOS, Android, macOS melalui Mac Catalyst, dan Windows.

Aplikasi sampel mencakup layanan backend berikut:

  • Layanan mikro identitas, yang menggunakan ASP.NET Core Identity and IdentityServer.
  • Layanan mikro katalog, yang merupakan layanan buat, baca, perbarui, hapus (CRUD) berbasis data yang menggunakan database SQL Server menggunakan EntityFramework Core.
  • Layanan mikro pemesanan, yang merupakan layanan berbasis domain yang menggunakan pola desain berbasis domain.
  • Layanan mikro kerak, yang merupakan layanan CRUD berbasis data yang menggunakan Redis Cache.

Layanan backend ini diimplementasikan sebagai layanan mikro menggunakan ASP.NET Core, dan disebarkan sebagai kontainer unik dengan .NET Aspire. Secara kolektif, layanan backend ini disebut sebagai aplikasi referensi eShop. Aplikasi klien berkomunikasi dengan layanan backend melalui antarmuka web Representational State Transfer (REST). Untuk informasi selengkapnya tentang layanan mikro dan kontainer, lihat Layanan mikro kontainer.

Aplikasi Multi-Platform

Panduan ini berfokus pada pembangunan aplikasi perusahaan lintas platform menggunakan .NET MAUI, dan menggunakan aplikasi multi-platform eShop sebagai contoh. Gambar di bawah ini menunjukkan halaman dari aplikasi multi-platform eShop yang menyediakan fungsionalitas yang diuraikan sebelumnya.

Aplikasi eShop MAUI

Aplikasi multi-platform menggunakan layanan backend yang disediakan oleh aplikasi referensi eShop. Namun, dapat dikonfigurasi untuk mengonsumsi data dari layanan tiruan bagi mereka yang ingin menghindari penyebaran layanan backend.

Aplikasi multi-platform eShop menjalankan fungsionalitas .NET MAUI berikut:

  • XAML
  • Kontrol
  • Pengikatan
  • Konverter
  • Gaya
  • Animasi
  • Perintah
  • Perilaku
  • Pemicu
  • Efek
  • Kontrol Kustom

Untuk informasi selengkapnya tentang fungsionalitas ini, lihat dokumentasi .NETMAUI.

Selain itu, pengujian unit disediakan untuk beberapa kelas di aplikasi multi-platform eShop.

Solusi aplikasi Multi-Platform

Solusi aplikasi multi-platform eShop mengatur kode sumber dan sumber daya lainnya ke dalam beberapa proyek. Semua komponen seluler inti terkandung dalam proyek tunggal bernama eShopContainers. Ini adalah fitur yang diperkenalkan dengan .NET 6 yang memungkinkan proyek untuk menargetkan beberapa output yang membantu menghilangkan kebutuhan akan beberapa proyek platform yang akan kami gunakan dalam Xamarin.Forms dan versi .NET sebelumnya. Proyek tambahan disertakan untuk pengujian unit.

Meskipun proyek ini memiliki semua komponennya yang disimpan dalam proyek tunggal, ada baiknya mempertimbangkan untuk memisahkannya menjadi beberapa proyek berdasarkan kebutuhan Anda. Misalnya, jika Anda memiliki beberapa implementasi penyedia layanan berdasarkan layanan dengan dependensi mereka sendiri, mungkin masuk akal untuk memecah implementasi penyedia layanan tersebut ke dalam proyek terpisah mereka sendiri. Kandidat yang baik untuk pemisahan proyek termasuk model bersama, implementasi layanan, komponen klien api, database atau lapisan penembolokan. Di mana pun Anda merasa bahwa bisnis dapat menggunakan kembali komponen dalam proyek lain adalah kandidat potensial untuk pemisahan. Proyek-proyek ini kemudian dapat dimas melalui NuGet untuk distribusi dan penerapan versi yang mudah.

Semua proyek menggunakan folder untuk mengatur kode sumber dan sumber daya lainnya ke dalam kategori. Kelas dari aplikasi multi-platform eShop dapat digunakan kembali di aplikasi .NET MAUI apa pun dengan sedikit atau tanpa modifikasi.

proyek eShop

Proyek eShop berisi folder berikut:

Folder Deskripsi
Animasi Berisi kelas yang memungkinkan animasi dikonsumsi dalam XAML.
Perilaku Berisi perilaku yang diekspos untuk melihat kelas.
Kontrol Berisi kontrol kustom yang digunakan oleh aplikasi.
Konverter Berisi pengonversi nilai yang menerapkan logika kustom ke pengikatan.
Pengecualian Berisi ServiceAuthenticationException kustom.
Ekstensi Berisi metode ekstensi untuk VisualElement kelas dan IEnumerable<T> .
Pembantu Berisi kelas pembantu untuk aplikasi.
Model Berisi kelas model untuk aplikasi.
Properti Berisi AssemblyInfo.cs, file metadata rakitan .NET.
Layanan Berisi antarmuka dan kelas yang mengimplementasikan layanan yang disediakan untuk aplikasi.
Memicu Berisi pemicu BeginAnimation, yang digunakan untuk memanggil animasi di XAML.
Validasi Berisi kelas yang terlibat dalam memvalidasi input data.
ViewModels Berisi logika aplikasi yang terekspos ke halaman.
Tampilan Berisi halaman untuk aplikasi.

Ringkasan

Alat dan platform pengembangan aplikasi multi-platform lintas platform Microsoft menyediakan solusi komprehensif untuk aplikasi klien seluler B2E, B2B, dan B2C, menyediakan kemampuan untuk berbagi kode di semua platform target (iOS, macOS, Android, dan Windows) dan membantu menurunkan total biaya kepemilikan. Aplikasi dapat berbagi antarmuka pengguna dan kode logika aplikasi mereka, sambil mempertahankan tampilan dan nuansa platform asli.

Pengembang aplikasi perusahaan menghadapi beberapa tantangan yang dapat mengubah arsitektur aplikasi selama pengembangan. Oleh karena itu, penting untuk membuat aplikasi sehingga dapat dimodifikasi atau diperpanjang dari waktu ke waktu. Merancang untuk kemampuan beradaptasi tersebut bisa sulit, tetapi biasanya melibatkan pemartisian aplikasi menjadi komponen yang digabungkan secara terpisah yang dapat dengan mudah diintegrasikan bersama ke dalam aplikasi.