Blazor Server di .NET Core 3.0 skenario dan kinerja

Sejak dirilisnya Blazor Server dengan .NET Core 3.0 bulan lalu, banyak orang berbagi kegembiraan dengan kami tentang kemampuan membangun UI web sisi-klien hanya dengan .NET dan C #. Pada saat yang sama, kami juga mendengar banyak pertanyaan tentang apa Blazor Server, bagaimana hubungannya dengan Blazor WebAssembly, dan skenario apa yang paling cocok untuk Blazor Server. Jika Anda memilih Blazor Server untuk kebutuhan UI web sisi klien Anda, atau menunggu Blazor WebAssembly? Posting ini berupaya menjawab pertanyaan-pertanyaan ini, dan untuk memberikan wawasan tentang kinerja Blazor Server pada skala dan bagaimana kami membayangkan Blazor berkembang di masa depan.

Apa itu Server Blazor?


Aplikasi Blazor Server meng-host komponen Blazor di server dan menangani interaksi UI melalui koneksi SignalR real-time. Ketika pengguna berinteraksi dengan aplikasi, peristiwa UI dikirim ke server melalui koneksi untuk ditangani oleh berbagai komponen yang membentuk aplikasi. Ketika komponen menangani acara UI, itu dibuat berdasarkan statusnya yang diperbarui. Blazor membandingkan output yang baru saja dirender dengan apa yang telah diberikan sebelumnya dan mengirim perubahan kembali ke browser dan menerapkannya ke DOM.



Karena aplikasi Blazor Server berjalan di .NET Core di server, mereka menikmati semua manfaat berjalan di .NET Core termasuk kinerja dan tooling runtime yang hebat. Aplikasi Blazor Server dapat memanfaatkan ekosistem pustaka .NET Standard sepenuhnya tanpa batasan browser apa pun.

Kapan saya harus menggunakan Blazor Server?


Blazor Server memungkinkan Anda untuk menambahkan UI interaktif yang kaya ke aplikasi .NET Anda hari ini tanpa harus menulis JavaScript. Jika Anda memerlukan interaktivitas aplikasi satu halaman di aplikasi .NET Anda, maka Blazor Server adalah solusi hebat.

Blazor Server dapat digunakan untuk menulis aplikasi yang sama sekali baru atau untuk melengkapi aplikasi MVC dan Razor Pages yang ada. Tidak perlu menulis ulang logika aplikasi yang ada. Blazor dirancang untuk bekerja sama dengan MVC dan Razor Pages, bukan menggantikannya. Anda dapat terus menggunakan MVC dan Razor Pages untuk kebutuhan rendering server Anda saat menggunakan Blazor untuk interaksi UI sisi klien.

Blazor Server berfungsi paling baik untuk skenario di mana Anda memiliki koneksi jaringan latensi rendah yang andal, yang biasanya dicapai ketika klien dan server secara geografis berada di benua yang sama. Aplikasi yang membutuhkan pembaruan instan kesetiaan yang sangat tinggi pada setiap kedutan mouse kecil, seperti game waktu nyata atau menggambar aplikasi, tidak cocok untuk Blazor Server. Karena aplikasi Blazor Server memerlukan koneksi jaringan yang aktif, skenario offline tidak didukung.

Blazor Server juga berguna ketika Anda ingin menurunkan pekerjaan dari klien ke server. Aplikasi Blazor Server hanya memerlukan unduhan kecil untuk membangun koneksi dengan server dan untuk memproses interaksi UI. Semua kerja keras menjalankan logika aplikasi dan merender UI kemudian dilakukan di server. Ini berarti aplikasi Blazor Server memuat dengan cepat bahkan saat fungsionalitas aplikasi bertambah. Karena sisi klien dari aplikasi Blazor Server sangat tipis, itu adalah solusi yang bagus untuk aplikasi yang perlu dijalankan pada perangkat berdaya rendah.

Menggunakan Blazor Server dalam skala


Blazor Server dapat mengubah skala dari lini internal kecil aplikasi bisnis ke aplikasi skala internet besar. Sementara .NET Core 3.0 masih dalam pratinjau, kami menguji Blazor Server untuk melihat seperti apa karakteristik skala dasarnya. Kami menempatkan aplikasi Blazor Server di bawah pemuatan dengan klien yang aktif dan memantau latensi interaksi pengguna. Dalam pengujian kami, contoh Standard_D1_v2 tunggal pada Azure (1 vCPU, memori 3,5 GB) dapat menangani lebih dari 5.000 pengguna secara bersamaan tanpa degradasi latensi.

Contoh Standard_D3_V2 (4 vCPU, memori 14GB) menangani lebih dari 20.000 klien secara bersamaan. Hambatan utama untuk menangani muatan lebih lanjut adalah memori yang tersedia. Apakah Anda akan melihat tingkat skala ini di aplikasi Anda sendiri? Sebagian besar tergantung pada berapa banyak memori tambahan yang dibutuhkan aplikasi Anda per pengguna. Tetapi untuk banyak aplikasi, kami percaya tingkat skala ini cukup masuk akal. Kami juga berencana untuk mengirim pembaruan tambahan tentang peningkatan skalabilitas Blazor Server di minggu-minggu mendatang. Jadi tunggu saja!

Apa itu Blazor WebAssembly?


Blazor adalah kerangka kerja UI yang dapat berjalan di lingkungan yang berbeda. Saat Anda membuat komponen UI menggunakan Blazor, Anda mendapatkan fleksibilitas untuk memilih bagaimana dan di mana mereka dihosting dan dijalankan. Selain menjalankan komponen UI di server dengan Blazor Server, Anda dapat menjalankan komponen yang sama pada klien dengan Blazor WebAssembly. Fleksibilitas ini berarti Anda dapat beradaptasi dengan kebutuhan pengguna dan menghindari risiko terikat pada model hosting aplikasi tertentu.

Aplikasi WebAssembly Blazor meng-host komponen di browser menggunakan runtime .NET berbasis WebAssembly. Komponen menangani acara UI dan menjalankan logika renderingnya langsung di browser. Aplikasi Blazor WebAssembly hanya menggunakan standar web terbuka untuk menjalankan .NET code client-side, tanpa perlu plugins browser atau transpilasi kode. Sama seperti dengan aplikasi Blazor Server, kerangka kerja Blazor menangani membandingkan output yang baru dirender dengan apa yang telah diberikan sebelumnya dan memperbarui DOM yang sesuai, tetapi dengan Blazor WebAssembly rendering UI ditangani sisi klien.



Kapan saya harus menggunakan Blazor WebAssembly?


Blazor WebAssembly masih dalam pratinjau dan belum siap untuk penggunaan produksi. Jika Anda mencari solusi siap produksi, maka Blazor Server adalah yang kami rekomendasikan.

Setelah Blazor WebAssembly dikirim (Mei 2020), Blazor akan mengaktifkan komponen Razor dan kode .NET di browser pada perangkat pengguna. Aplikasi Blazor WebAssembly membantu membongkar pekerjaan dari server ke klien. Aplikasi Blazor WebAssembly dapat memanfaatkan sumber daya komputasi, memori, dan penyimpanan perangkat klien, serta sumber daya lain yang disediakan melalui API browser standar.

Aplikasi Blazor WebAssembly tidak memerlukan penggunaan .NET di server dan dapat digunakan untuk membangun situs statis. Aplikasi Blazor WebAssembly hanyalah sekelompok file statis yang dapat di-host menggunakan solusi hosting situs statis, seperti halaman GitHub atau Azure Static Website Hosting. Ketika dikombinasikan dengan pekerja layanan, aplikasi Blazor WebAssembly dapat berfungsi sepenuhnya offline.

Ketika dikombinasikan dengan .NET di server, Blazor WebAssembly memungkinkan pengembangan web stack penuh. Anda dapat berbagi kode, memanfaatkan ekosistem .NET, dan menggunakan kembali keterampilan dan infrastruktur .NET yang ada.

Termasuk runtime .NET dengan aplikasi web Anda memang meningkatkan ukuran aplikasi, yang akan memengaruhi waktu buka. Meskipun ada berbagai teknik untuk mengurangi ini (prapenguraian di server, caching HTTP, tautan IL, dll.), Blazor WebAssembly mungkin bukan pilihan terbaik untuk aplikasi yang sangat sensitif untuk ukuran unduhan dan waktu muat.

Aplikasi Blazor WebAssembly juga membutuhkan browser yang mendukung WebAssembly. WebAssembly didukung oleh semua browser modern, termasuk browser mobile dan desktop. Namun, jika Anda perlu mendukung browser lama tanpa dukungan WebAssembly maka Blazor WebAssembly bukan untuk Anda.

Blazor WebAssembly dioptimalkan untuk skenario rendering UI, tetapi saat ini tidak bagus untuk menjalankan beban kerja intensif CPU. Aplikasi Blazor WebAssembly hari ini menggunakan interpreter .NET IL untuk mengeksekusi kode .NET Anda, 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 Anda ingin beralih ke model Blazor yang lain, melakukannya sangat mudah.

Apa yang selanjutnya untuk Blazor?


Setelah mengirim Blazor WebAssembly, kami berencana untuk memperluas Blazor untuk mendukung tidak hanya aplikasi web, tetapi juga Aplikasi Web Progresif (PWA), aplikasi hibrid, dan bahkan aplikasi yang sepenuhnya asli.

  • PWD Blazor: PWA adalah aplikasi web yang memanfaatkan standar web terbaru untuk memberikan pengalaman yang lebih mirip asli. PWA dapat mendukung skenario offline, pemberitahuan push, dan integrasi OS, seperti dukungan untuk menyematkan aplikasi ke layar beranda atau menu Mulai Windows.
  • Blazor Hybrid: Aplikasi hybrid adalah aplikasi asli yang menggunakan teknologi web untuk UI. Contohnya termasuk aplikasi Electron dan aplikasi seluler yang menyajikan tampilan web. Aplikasi Blazor Hybrid tidak berjalan di WebAssembly, melainkan menggunakan runtime .NET asli seperti .NET Core atau Xamarin. Anda dapat menemukan sampel percobaan untuk menggunakan Blazor dengan Electron di GitHub.
  • Blazor Native: Aplikasi Blazor saat ini membuat HTML, tetapi renderer dapat diganti menjadi render kontrol asli. Aplikasi Blazor Native berjalan secara native di perangkat dan menggunakan abstraksi UI umum untuk membuat kontrol asli untuk perangkat itu. Ini sangat mirip dengan bagaimana kerangka kerja seperti Xamarin Forms atau React Native bekerja hari ini.

Ketiga upaya ini semuanya masih eksperimental. Kami berharap memiliki pratinjau resmi dukungan untuk Blazor PWA dan aplikasi Blazor Hybrid menggunakan Electron dalam kerangka waktu .NET 5 (Nov 2020). Belum ada peta jalan untuk dukungan Blazor Native, tapi ini adalah area yang kami selidiki secara aktif.

Ringkasan


Dengan .NET Core 3.0, Anda dapat membangun UI sisi klien interaktif yang kaya hari ini dengan Blazor Server. Blazor Server adalah cara terbaik untuk menambahkan fungsionalitas sisi klien ke aplikasi web Anda yang ada dan yang baru menggunakan keterampilan dan aset .NET yang ada. Blazor Server dibuat untuk mengukur semua kebutuhan aplikasi web Anda. Blazor WebAssembly masih dalam pratinjau, tetapi diperkirakan akan dikirim pada bulan Mei tahun depan. Di masa mendatang kami berharap untuk terus mengembangkan Blazor untuk mendukung PWA, aplikasi hibrid, dan aplikasi asli. Untuk saat ini, kami harap Anda akan mencoba Blazor Server dengan menginstal .NET Core 3.0 !

Source: https://habr.com/ru/post/id473146/


All Articles