Sejak rilis Blazor Server dengan .NET Core 3.0 bulan lalu, banyak orang telah berbagi dengan kami antusiasme mereka untuk kemampuan membuat antarmuka klien berbasis web hanya menggunakan .NET dan C #. Pada saat yang sama, kami juga mendengar banyak pertanyaan tentang apa itu Blazor Server, bagaimana hal itu dikaitkan dengan Blazor WebAssembly, dan untuk skenario apa Blazor Server paling cocok. Haruskah saya memilih Blazor Server untuk antarmuka web sisi klien saya atau menunggu Blazor WebAssembly? Posting ini dimaksudkan untuk menjawab pertanyaan-pertanyaan ini dan memberikan gambaran tentang bagaimana Blazor Server bekerja pada skala, dan bagaimana kita melihat perkembangan Blazor di masa depan.

Apa itu Server Blazor?
Aplikasi Blazor Server meng-host komponen Blazor di server dan menangani interaksi antarmuka pengguna melalui koneksi SignalR secara real time. Ketika pengguna berinteraksi dengan aplikasi, peristiwa antarmuka pengguna dikirim ke server melalui koneksi yang diproses oleh berbagai komponen yang membentuk aplikasi. Saat komponen memproses acara antarmuka pengguna, komponen itu ditampilkan berdasarkan statusnya yang diperbarui. Blazor membandingkan output yang baru-baru ini dirender dengan yang sebelumnya diberikan, mengirimkan perubahan kembali ke browser dan menerapkannya ke DOM.

Karena aplikasi Blazor Server berjalan di .NET Core di server, mereka memanfaatkan sepenuhnya menjalankan .NET Core, termasuk kinerja runtime yang sangat baik dan penggunaan alat-alat canggih. Aplikasi Blazor Server dapat menggunakan seluruh ekosistem perpustakaan .NET Standard tanpa batasan browser.
Kapan Anda harus menggunakan Blazor Server?
Blazor Server memungkinkan Anda untuk menambahkan antarmuka interaktif yang kaya ke aplikasi .NET tanpa perlu JavaScript. Jika Anda menginginkan interaktivitas aplikasi satu halaman dalam aplikasi .NET, maka Blazor Server adalah solusi hebat.
Blazor Server dapat digunakan untuk menulis aplikasi yang benar-benar baru atau untuk melengkapi aplikasi MVC dan Razor Pages yang ada. Tidak perlu menulis ulang logika aplikasi yang ada. Blazor dirancang untuk bekerja dengan MVC dan Razor Pages, bukan menggantikannya. Anda dapat terus menggunakan MVC dan Razor Pages untuk kebutuhan rendering server, sementara Blazor digunakan untuk interaksi antarmuka pengguna sisi klien.
Blazor Server paling cocok untuk skenario di mana Anda memiliki koneksi jaringan latensi rendah yang andal yang biasanya dicapai ketika klien dan server secara geografis terletak di benua yang sama. Aplikasi yang memerlukan pembaruan instan dengan kesetiaan yang sangat tinggi dengan setiap klik kecil tetikus, seperti game waktu nyata atau aplikasi menggambar, tidak cocok untuk Blazor Server. Karena aplikasi Blazor Server memerlukan koneksi jaringan yang aktif, skrip yang berdiri sendiri tidak didukung.
Blazor Server juga berguna ketika Anda ingin mentransfer pekerjaan dari klien ke server. Aplikasi Blazor Server hanya memerlukan unduhan kecil untuk membuat koneksi ke server dan untuk menangani interaksi antarmuka pengguna. Semua kerja keras menjalankan logika aplikasi dan memvisualisasikan antarmuka pengguna dilakukan di server. Ini berarti aplikasi Blazor Server memuat dengan cepat, bahkan ketika fungsionalitas aplikasi bertambah. Karena sisi klien dari aplikasi Blazor Server sangat ringan, ini adalah solusi yang bagus untuk aplikasi yang harus dijalankan pada perangkat berdaya rendah.
Menggunakan Blazor Server untuk menskala
Blazor Server dapat berkembang dari aplikasi bisnis internal kecil ke aplikasi Internet besar. Sementara .NET Core 3.0 masih dalam pratinjau, kami menguji Blazor Server untuk memahami cara penskalaan bekerja. Kami menempatkan aplikasi Blazor Server di bawah beban klien yang aktif dan memantau keterlambatan interaksi pengguna. Dalam pengujian kami, satu instance dari
Standard_D1_v2 di Azure (1 vCPU, memori 3,5 GB) dapat memproses lebih dari 5000 pengguna secara bersamaan tanpa mengurangi penundaan.
Contoh
Standard_D3_V2 (4 vCPUs, 14 GB memori) menangani lebih dari 20.000 klien yang menjalankan secara bersamaan. Hambatan utama untuk pemrosesan lebih lanjut dari beban adalah memori yang tersedia. Apakah Anda mencapai skala ini dalam aplikasi Anda sendiri? Ini akan sangat tergantung pada berapa banyak memori tambahan yang dibutuhkan aplikasi Anda per pengguna. Tetapi untuk sebagian besar aplikasi, kami menemukan tingkat skala ini cukup masuk akal. Kami juga berencana untuk menerbitkan pembaruan tambahan untuk meningkatkan skalabilitas Blazor Server dalam beberapa minggu mendatang. Jadi tunggu saja!
Apa itu Blazor WebAssembly?
Blazor adalah kerangka kerja antarmuka pengguna yang dapat bekerja di lingkungan yang berbeda. Saat Anda membuat komponen antarmuka pengguna menggunakan Blazor, Anda mendapatkan fleksibilitas untuk memilih bagaimana dan di mana mereka akan ditempatkan dan diluncurkan. Selain menjalankan komponen antarmuka pengguna pada server dengan Blazor Server, Anda dapat menjalankan komponen yang sama pada klien menggunakan Blazor WebAssembly. Fleksibilitas ini berarti bahwa Anda dapat beradaptasi dengan kebutuhan pengguna Anda dan menghindari risiko terikat dengan model hosting aplikasi tertentu.
Aplikasi WebAssembly Blazor meng-host komponen dalam browser menggunakan .NET runtime berdasarkan WebAssembly. Komponen menangani peristiwa antarmuka pengguna dan menjalankan render logika langsung di browser. Aplikasi Blazor WebAssembly hanya menggunakan standar web terbuka untuk menjalankan kode .NET client tanpa memerlukan plug-in browser atau porting kode. Seperti halnya aplikasi Blazor Server, platform Blazor memproses output yang dibandingkan dengan apa yang sebelumnya ditampilkan dan memperbarui DOM, tetapi dalam Blazor WebAssembly, rendering antarmuka pengguna ditangani di sisi klien.

Kapan saya perlu menggunakan Blazor WebAssembly?
Blazor WebAssembly masih dalam pratinjau dan belum siap untuk digunakan. Jika Anda mencari solusi turnkey, kami sarankan Blazor Server.
Setelah rilis Blazor WebAssembly (Mei 2020), itu akan memungkinkan komponen Razor dan kode .NET untuk berjalan di browser pada perangkat pengguna. Aplikasi Blazor WebAssembly membantu transfer pekerjaan dari server ke klien. Aplikasi Blazor WebAssembly dapat menggunakan sumber daya komputasi, memori dan sumber daya penyimpanan perangkat klien, serta sumber daya lain yang tersedia melalui API browser standar.
Aplikasi Blazor WebAssembly tidak memerlukan .NET di server dan dapat digunakan untuk membuat situs statis. Aplikasi Blazor WebAssembly hanyalah kumpulan file statis yang dapat di-host menggunakan layanan hosting statis apa pun, seperti halaman GitHub atau hosting statis situs web Azure. Dalam kombinasi dengan pekerja layanan, Blazor WebAssembly dapat bekerja sepenuhnya offline.
Dikombinasikan dengan .NET di server Blazor, WebAssembly menyediakan pengembangan tumpukan web lengkap. Anda dapat berbagi kode, menggunakan ekosistem .NET, dan menggunakan kembali keterampilan dan infrastruktur .NET yang ada.
Termasuk runtime .NET di aplikasi web Anda meningkatkan ukuran aplikasi, yang mempengaruhi waktu buka. Meskipun ada berbagai metode untuk mengatasi masalah ini (pre-rendering di server, caching HTTP, koneksi IL, dll.), Blazor WebAssembly mungkin bukan pilihan terbaik untuk aplikasi yang sangat sensitif untuk memuat ukuran dan waktu. unduhan.
Aplikasi Blazor WebAssembly juga membutuhkan browser yang mendukung WebAssembly. WebAssembly didukung oleh semua browser modern, termasuk browser mobile dan desktop. Namun, jika Anda memerlukan dukungan untuk browser lama tanpa dukungan WebAssembly, maka Blazor WebAssembly bukan untuk Anda.
Blazor WebAssembly dioptimalkan untuk skenario rendering antarmuka pengguna, tetapi saat ini tidak cocok untuk melakukan beban prosesor yang berat. Saat ini, aplikasi Blazor WebAssembly menggunakan interpreter .NET IL untuk menjalankan kode .NET yang tidak memiliki kinerja yang sama dengan runtime .NET asli dengan kompilasi JIT. Kami berupaya mengatasi skenario ini dengan lebih baik di masa mendatang dengan menambahkan dukungan untuk mengkompilasi kode .NET Anda langsung ke WebAssembly alih-alih menggunakan juru bahasa.
Anda bisa berubah pikiran nanti
Terlepas dari apakah Anda memilih Blazor Server atau Blazor WebAssembly, Anda selalu dapat berubah pikiran nanti. Semua aplikasi Blazor menggunakan model komponen umum, komponen Razor. Komponen yang sama dapat di-host di aplikasi Blazor Server atau aplikasi Blazor WebAssembly. Jadi, jika Anda mulai dengan satu model hosting Blazor, dan kemudian memutuskan bahwa Anda ingin beralih ke yang lain, itu sangat sederhana.
Apa selanjutnya dengan Blazor?
Dengan rilis Blazor WebAssembly, kami berencana untuk memperluas Blazor untuk mendukung tidak hanya aplikasi web, tetapi juga Progressive Web Apps (PWA), aplikasi hybrid, dan bahkan aplikasi yang sepenuhnya asli.
- Blazor PWA: PWA adalah aplikasi web yang menggunakan standar web terbaru untuk memberikan pengalaman yang lebih asli. PWA dapat mendukung skrip yang berdiri sendiri, pemberitahuan push, dan integrasi OS, seperti mendukung menyematkan aplikasi ke layar beranda atau menu Mulai Windows.
- Blazor Hybrid: Aplikasi hibrid adalah aplikasi tertanam yang menggunakan teknologi web untuk antarmuka pengguna. Contohnya termasuk aplikasi Electron dan aplikasi seluler yang muncul di tampilan web. Aplikasi hybrid Blazor tidak berjalan di WebAssembly, melainkan menggunakan runtime .NET mereka sendiri, seperti .NET Core atau Xamarin. Anda dapat menemukan sampel percobaan menggunakan Blazor dengan Electron di GitHub.
- Blazor Native: Aplikasi Blazor saat ini membuat HTML, tetapi sebagai gantinya, renderer dapat diganti dengan menampilkan kontrol asli. Aplikasi Blazor Native awalnya diluncurkan pada perangkat dan menggunakan abstraksi umum antarmuka pengguna untuk memvisualisasikan kontrol asli untuk perangkat ini. Ini sangat mirip dengan bagaimana kerangka kerja seperti Xamarin Forms atau React Native bekerja hari ini.
Ketiga produk baru ini sedang dalam tahap percobaan. Kami mengharapkan pengumuman resmi dukungan untuk aplikasi Blazor PWA dan Blazor Hybrid menggunakan Electron selama periode .NET 5 (November 2020). Belum ada peta jalan untuk mendukung Blazor Native, tetapi ini adalah area yang kami jelajahi secara aktif.
Total
Dengan .NET Core 3.0, Anda dapat membuat antarmuka pengguna sisi klien yang kaya dan interaktif hari ini dengan Blazor Server. Blazor Server adalah cara terbaik untuk menambahkan fungsionalitas sisi klien ke aplikasi web yang ada dan baru menggunakan keterampilan dan sumber daya .NET yang ada. Blazor Server dirancang untuk memenuhi semua kebutuhan aplikasi web Anda. Blazor WebAssembly masih dalam pratinjau, tetapi diharapkan akan dirilis pada Mei tahun depan. Di masa depan, kami berharap untuk terus mengembangkan Blazor untuk mendukung PWA, aplikasi hybrid, dan aplikasi asli. Sekarang kami harap Anda mencoba Blazor Server dengan menginstal
.NET Core 3.0 !