Saya dan tim saya telah menerima dana untuk mulai mengembangkan aplikasi web tingkat Perusahaan (tidak akan menjelaskan secara rinci tentang apa yang dilakukannya). Aplikasi akan memiliki banyak halaman web terpisah tetapi dua dari halaman tersebut lebih fokus dan sangat berat - berat seperti banyak interaksi pengguna, modals yang menampilkan data massal, koneksi websocket, chat, dll.
Saya telah ditugaskan ke Kepala Arsitek dalam proyek tersebut, jadi saya melakukan beberapa penelitian tentang kerangka kerja web terbaru. Untuk bagian belakang, kami telah melakukan beberapa pengujian dan telah memutuskan untuk menggunakan platform Azure SQL. Sejauh ini, saya menyukai peningkatan yang telah dilakukan, dan sedang dilakukan, pada ASP.NET dengan Core 2.0. Khususnya mesin Razor, di atas versi ASP.NET MVC sebelumnya.
Saya ingin mendapatkan beberapa pendapat ahli tentang Razor vs. Angular / React "baru" dan sejenisnya. Saya lebih peduli dengan kinerja. Bagaimana Core 2.0 Razor mendukung kerangka kerja rendering sisi klien? Apakah perbedaannya dapat diabaikan? Aplikasi kami menargetkan 1.000.000 pengguna potensial (kira-kira 100.000 secara bersamaan).
Terima kasih sebelumnya!
Jawaban:
Kami akhirnya menggunakan front-end Angular dan backend ASP.NET Core API, menggunakan Azure SQL. Kami menguji Core Razor dan, meskipun lebih baik daripada Razor lama, Angular pada akhirnya jauh lebih cepat bagi kami. Sejauh pengalaman pengguna berjalan, Angular (atau React) jauh lebih unggul dalam hal kinerja. Aspek pengikatan model dari Angular yang kami temukan menjadi keuntungan besar dari rendering sisi server. Menggunakan Razor (atau rendering sisi server secara umum) memang, bagaimanapun, memberikan integritas keseluruhan yang lebih baik sejauh data berjalan dan itu membuat transisi data yang lebih baik dari front-end ke back-end. Ada keterputusan yang sebenarnya antara kerangka kerja front-end dan API. Semua data yang diteruskan ke server harus dimasukkan ke objek yang diketik - ini berarti Anda harus mengelola dua set model POCO terpisah. Ini dapat menyebabkan masalah jika objek server dan objek front-end tidak sejajar. Saat ini, Entity Framework Core belum matang sehingga kami memiliki masalah dengan memperbarui objek, mengajukan kueri objek, termasuk objek turunan, dll.
Secara keseluruhan, pengaturan ini telah berhasil dengan baik bagi kami sejauh ini! Saya membayangkan React akan menjadi pengganti yang mirip dengan Angular jika Anda lebih nyaman dengannya. Saya harus belajar Angular, yang merupakan transisi yang sangat mudah, dan saya menyukainya sekarang!
sumber
Dengan menggunakan Angular / React with API di sisi server:
Tetapi dengan menggunakan Angular / React, Anda harus khawatir tentang klien:
sumber
Saya tidak memiliki tolok ukur. Tapi, saya memiliki beberapa proyek yang menjalankan JQuery, Razor, .NET MVC (C #), AJAX. Bukan untuk skala yang Anda tangani.
Saran .. Pastikan untuk memikirkan semuanya dan ikuti praktik terbaik. Untuk menjaga hal-hal tetap dapat dipelihara, pastikan untuk memecah pengontrol, tampilan, model menjadi grup yang lebih kecil dan bermakna. Ketika saya mulai, saya membuat kesalahan dengan memasukkan semuanya ke dalam satu pengontrol Home, dan banyak tampilan di folder bersama. Pada awalnya baik-baik saja, tetapi ketika fitur creep dimulai, itu menjadi berantakan dan sulit untuk kembali dan mendesain ulang.
Saya juga menggunakan Linq2SQL. Saya membuat kesalahan dengan membuat model untuk semuanya dan kemudian menyadari bahwa saya bisa mengembalikan hasil yang ditetapkan dari kueri saya sebagai model. duh.
Jika Anda menggunakan .NET MVC dan mengkhawatirkan kinerja, berikut adalah hal-hal yang saya temui:
JANGAN mengembalikan tampilan parsial yang membuat blok HTML besar! Pastikan untuk meminimalkan semuanya. Singkirkan semua ruang putih. Gunakan nama ID yang lebih kecil. Luangkan waktu untuk membuat html yang seringan mungkin. Kembalikan JSON dan minta klien melakukan beberapa pekerjaan.
Berhati-hatilah dengan cara Anda mengembangkan CSS. Jangan menggunakan banyak gaya sebaris, luangkan waktu untuk memasukkannya ke dalam file CSS yang nantinya dapat Anda perkecil.
Hal yang sama berlaku untuk JS sisi klien Anda. Sangat menggoda untuk meletakkan JS di dalam tampilan parsial. Jaga semuanya tetap teratur.
Rendering di IE sangat buruk. Apalagi jika gambarnya banyak. Pastikan untuk mengompres gambar sebanyak mungkin, tanpa kehilangan kualitas tentunya.
sumber