Karakteristik Aplikasi Web Modern

Tip

Konten ini adalah kutipan dari e-book berjudul Architect Modern Web Applications with ASP.NET Core and Azure, yang tersedia di .NET Docs atau sebagai PDF yang dapat diunduh gratis dan dibaca secara offline.

Architect Modern Web Applications with ASP.NET Core and Azure eBook cover thumbnail.

"... dengan desain yang sesuai, fitur-fiturnya menjadi murah. Pendekatan ini sulit, tetapi terus berhasil dilakukan."
- Dennis Ritchie

Aplikasi web modern memiliki ekspektasi pengguna yang lebih tinggi dan tuntutan yang lebih besar dari sebelumnya. Aplikasi web saat ini diharapkan tersedia 24/7 dari mana saja di seluruh dunia, dan dapat digunakan di hampir seluruh perangkat atau ukuran layar apa pun. Aplikasi web harus aman, fleksibel, dan dapat diskalakan guna memenuhi lonjakan permintaan. Skenario yang semakin kompleks harus ditangani oleh pengalaman pengguna yang kaya dan dibangun pada klien menggunakan JavaScript, dan berkomunikasi secara efisien melalui API web.

ASP.NET Core dioptimalkan untuk aplikasi web modern dan skenario hosting berbasis cloud. Desain modularnya memungkinkan aplikasi hanya bergantung pada fitur-fitur yang benar-benar mereka gunakan, meningkatkan keamanan dan performa aplikasi sekaligus mengurangi persyaratan sumber daya hosting.

Aplikasi referensi: eShopOnWeb

Panduan ini mencakup aplikasi referensi, eShopOnWeb, yang menunjukkan beberapa prinsip dan rekomendasi. Aplikasi ini adalah toko online sederhana, yang mendukung penjelajahan dengan katalog kemeja, cangkir kopi, dan item pemasaran lainnya. Aplikasi referensi sengaja dibuat sederhana agar mudah dipahami.

eShopOnWeb

Gambar 2-1. eShopOnWeb

Aplikasi Referensi

Dihosting cloud dan dapat diskalakan

ASP.NET Core dioptimalkan untuk cloud (cloud publik, cloud privat, cloud apa pun) karena menggunakan memori yang rendah dan memiliki throughput yang tinggi. Jejak aplikasi ASP.NET Core yang lebih kecil berarti Anda dapat menghosting lebih banyak aplikasi pada perangkat keras yang sama, dan Anda membayar untuk sumber daya yang lebih sedikit saat menggunakan layanan hosting cloud PAYG. Throughput yang lebih tinggi berarti Anda dapat melayani lebih banyak pelanggan dari aplikasi pada perangkat keras yang sama, semakin mengurangi kebutuhan untuk berinvestasi dalam server dan infrastruktur hosting.

Platform silang

ASP.NET Core bersifat lintas platform dan dapat berjalan di Linux, macOS, dan Windows. Kemampuan ini membuka banyak opsi baru untuk pengembangan dan penyebaran aplikasi yang dibangun dengan ASP.NET Core. Kontainer Docker - Linux dan Windows - dapat menghosting aplikasi ASP.NET Core, memungkinkan mereka untuk memanfaatkan keuntungan kontainer dan layanan mikro.

Modular dan digabungkan secara longgar

Paket NuGet adalah warga kelas satu di .NET Core, dan aplikasi ASP.NET Core terdiri dari banyak pustaka melalui NuGet. Granularitas fungsionalitas ini membantu memastikan aplikasi hanya bergantung pada dan menyebarkan fungsionalitas yang benar-benar mereka butuhkan, mengurangi jejak dan area permukaan kerentanan keamanan mereka.

ASP.NET Core juga sepenuhnya mendukung injeksi dependensi, baik secara internal maupun di tingkat aplikasi. Antarmuka dapat memiliki beberapa implementasi yang dapat ditukar sesuai kebutuhan. Injeksi dependensi memungkinkan aplikasi untuk secara longgar bergabung dengan antarmuka tersebut, dan bukan dengan implementasi tertentu, membuatnya lebih mudah untuk diperluas, dipelihara, dan diuji.

Pengujian yang mudah menggunakan pengujian otomatis

Aplikasi ASP.NET Core mendukung pengujian unit, dan penggabungan longgar serta dukungan untuk injeksi dependensi memudahkan penukaran masalah infrastruktur dengan implementasi palsu untuk tujuan pengujian. ASP.NET Core juga dikirim dengan TestServer yang dapat digunakan untuk menghosting aplikasi dalam memori. Pengujian fungsional kemudian dapat membuat permintaan ke server dalam memori ini, menjalankan tumpukan aplikasi penuh (termasuk middleware, perutean, pengikatan model, filter, dll.) dan menerima respons, semuanya dalam sepersekian waktu yang diperlukan untuk menghosting aplikasi di server nyata dan membuat permintaan melalui lapisan jaringan. Pengujian ini sangat mudah ditulis, dan berharga, untuk API, yang nilainya semakin penting dalam aplikasi web modern.

Perilaku tradisional dan SPA didukung

Aplikasi web tradisional telah melibatkan sedikit perilaku sisi klien, tetapi sebaliknya telah mengandalkan server untuk semua navigasi, kueri, dan pembaruan yang mungkin perlu dilakukan aplikasi. Setiap operasi baru yang dibuat oleh pengguna akan diterjemahkan ke dalam permintaan web baru, yang hasilnya adalah pemuatan ulang halaman penuh di browser pengguna akhir. Kerangka kerja Model-View-Controller (MVC) klasik biasanya mengikuti pendekatan ini, dengan setiap permintaan baru yang sesuai dengan tindakan pengontrol yang berbeda, yang pada gilirannya akan berfungsi dengan model dan mengembalikan tampilan. Beberapa operasi individual pada halaman tertentu mungkin ditingkatkan dengan fungsionalitas AJAX (JavaScript dan XML Asinkron), tetapi arsitektur aplikasi secara keseluruhan menggunakan banyak tampilan MVC dan titik akhir URL yang berbeda. Selain itu, ASP.NET Core MVC juga mendukung Razor Pages, cara yang lebih sederhana untuk mengatur halaman bergaya MVC.

Aplikasi Halaman Tunggal (SPAs), sebaliknya, melibatkan sangat sedikit muatan halaman sisi server yang dihasilkan secara dinamis (jika ada). Banyak SPAs diinisialisasi dalam file HTML statis yang memuat pustaka JavaScript yang diperlukan untuk memulai dan menjalankan aplikasi. Aplikasi ini banyak menggunakan API web untuk kebutuhan data mereka dan dapat memberikan pengalaman pengguna yang jauh lebih kaya. BlazorWebAssembly menyediakan sarana untuk membangun SPAs menggunakan kode .NET, yang kemudian berjalan di browser klien.

Banyak aplikasi web melibatkan kombinasi perilaku aplikasi web tradisional (biasanya untuk konten) dan SPAs (untuk interaktivitas). ASP.NET Core mendukung MVC (Berbasis tampilan atau Halaman) dan API web dalam aplikasi yang sama, menggunakan sekumpulan alat dan pustaka kerangka kerja yang mendasarinya yang sama.

Pengembangan dan penyebaran sederhana

Aplikasi ASP.NET Core dapat ditulis menggunakan editor teks sederhana dan antarmuka baris perintah, atau lingkungan pengembangan dengan fitur lengkap seperti Visual Studio. Aplikasi monolitik biasanya disebarkan ke titik akhir tunggal. Penyebaran dapat dengan mudah diotomatisasi agar terjadi sebagai bagian dari alur integrasi berkelanjutan (CI) dan pengiriman berkelanjutan (CD). Selain alat CI/CD tradisional, Microsoft Azure telah mengintegrasikan dukungan untuk repositori git dan dapat menyebarkan pembaruan secara otomatis ketika penyebaran dijadikan cabang atau tag git tertentu. Azure DevOps menyediakan alur build dan penyebaran CI/CD berfitur lengkap, dan GitHub Actions menyediakan opsi lain untuk proyek yang dihosting di sana.

ASP.NET dan Web Forms tradisional

Selain ASP.NET Core, ASP.NET tradisional 4.x terus menjadi platform yang kuat dan andal untuk membangun aplikasi web. ASP.NET mendukung model pengembangan MVC dan Web API, serta Web Forms, yang sangat cocok untuk pengembangan aplikasi berbasis halaman yang kaya dan memiliki ekosistem komponen pihak ketiga yang kaya. Microsoft Azure memiliki dukungan jangka panjang yang luar biasa untuk aplikasi ASP.NET 4.x, dan banyak pengembang yang terbiasa menggunakan platform ini.

Blazor

Blazor disertakan dengan ASP.NET Core 3.0 dan yang lebih baru. Hal ini menyediakan mekanisme baru untuk membangun aplikasi klien web interaktif yang kaya menggunakan Razor, C#, dan ASP.NET Core. Hal ini menawarkan solusi lain yang dapat dipertimbangkan saat mengembangkan aplikasi web modern. Ada dua versi Blazor yang perlu dipertimbangkan: sisi server dan sisi klien.

Blazor sisi server dirilis pada tahun 2019 dengan ASP.NET Core 3.0. Seperti namanya, versi ini berjalan di server, merender perubahan pada dokumen klien kembali ke browser melalui jaringan. Sisi server Blazor memberikan pengalaman klien yang kaya tanpa memerlukan JavaScript sisi klien dan tanpa memerlukan pemuatan halaman terpisah untuk setiap interaksi halaman klien. Perubahan di halaman yang dimuat diminta dari dan diproses oleh server lalu dikirim kembali ke klien menggunakan SignalR.

Blazor sisi klien, dirilis pada tahun 2020, menghilangkan kebutuhan untuk merender perubahan di server. Sebaliknya, versi ini memanfaatkan WebAssembly untuk menjalankan kode .NET dalam klien. Klien masih dapat melakukan panggilan API ke server jika diperlukan untuk meminta data, tetapi semua perilaku sisi klien berjalan di klien melalui WebAssembly, yang sudah didukung oleh semua browser utama dan hanya berupa pustaka JavaScript.

Referensi – Aplikasi Web Modern