Pekerjaan utama saya hari ini adalah membuat aplikasi HTML. Maksud saya secara internal menggunakan aplikasi tipe CRUD dengan banyak tampilan kotak yang dapat diedit, kotak teks, dropdown, dll. Kami saat ini menggunakan formulir web ASP.NET, yang menyelesaikan pekerjaan, tetapi kinerjanya sebagian besar suram, dan cukup sering Anda harus melompat melalui lingkaran untuk mendapatkan apa yang Anda butuhkan. Lingkaran yang digantung di langit-langit dan menyala.
Jadi saya bertanya-tanya apakah itu mungkin ide yang baik untuk memindahkan semua UI ke sisi JavaScript. Kembangkan serangkaian kontrol yang dapat digunakan kembali yang kuat yang dirancang khusus untuk kebutuhan kita, dan hanya pertukaran data dengan server. Ya, saya suka paradigma "kontrol" (alias "widget"), cukup cocok untuk aplikasi semacam itu. Jadi di sisi server kita masih memiliki tata letak dasar yang mirip dengan markup ASPX kita saat ini, tetapi itu kemudian akan dikirim ke klien hanya sekali, dan bagian Javascript akan mengurus semua pembaruan UI berikutnya.
Masalahnya adalah saya belum pernah melakukan ini sebelumnya, dan saya belum pernah melihat orang melakukan hal ini, jadi saya tidak tahu apa masalahnya. Secara khusus, saya khawatir tentang:
- Kinerja masih. Benchmarking menunjukkan bahwa saat ini penundaan utama ada di sisi klien, ketika browser mencoba merender ulang sebagian besar halaman setelah pembaruan AJAX. Bentuk web yang dihasilkan ASP.NET markup memberikan arti baru pada kata "web", dan kontrol Devexpress yang kaya menambahkan lapisan kompleksitas Javascript mereka sendiri di atas itu. Tetapi apakah akan lebih cepat untuk menghitung ulang semua perubahan yang diperlukan di sisi Javascript dan kemudian memperbarui hanya apa yang perlu diperbarui? Perhatikan bahwa saya sedang berbicara tentang formulir yang memiliki beberapa tampilan kotak yang dapat diedit, banyak kotak teks, banyak dropdown masing-masing dengan setengah juta item yang dapat disaring di dalamnya, dll.
- Kemudahan pengembangan . Akan ada lebih banyak Javascript sekarang, dan mungkin akan bercampur dengan markup HTML halaman. Itu atau semacam mesin pandangan baru harus diproduksi. Intellisense untuk Javascript juga jauh lebih buruk daripada kode C #, dan karena sifat dinamis Javascript tidak dapat diharapkan untuk mendapatkan jauh lebih baik. Praktik pengkodean dapat memperbaikinya sedikit, tetapi tidak banyak. Selain itu, sebagian besar pengembang kami terutama pengembang C # sehingga akan ada beberapa kurva pembelajaran dan kesalahan awal.
- Keamanan . Banyak pemeriksaan keamanan harus dilakukan dua kali (sisi server dan sisi UI), dan sisi server pemrosesan data harus memasukkan lebih banyak lagi. Saat ini, jika Anda mengatur kotak teks agar hanya-baca di sisi server, Anda dapat bergantung pada nilainya yang tidak berubah melalui pulang-pergi klien. Kerangka kerja ini sudah memiliki cukup kode untuk memastikannya (melalui enkripsi kondisi tampilan). Dengan pendekatan hanya data, semakin sulit, karena Anda harus memeriksa semuanya secara manual. Di sisi lain, mungkin lubang keamanan akan lebih mudah dikenali, karena Anda hanya akan memiliki data yang perlu dikhawatirkan.
Secara keseluruhan, apakah ini akan menyelesaikan masalah kita, atau memperburuknya? Adakah yang pernah mencoba ini, dan apa hasilnya? Apakah ada kerangka kerja di luar sana yang membantu dalam upaya semacam ini (selain jQuery dan persamaan moral)?
So on the server side we would still have a basic layout simliar to our current ASPX markup, but that then would get sent to the client only once, and the Javascript part would take care of all the subsequent UI updates.
Anda gambarkan persis apa ASP.NET adalah, yang memberitahu saya bahwa Anda mungkin tidak menggunakannya dengan benar. :) Dalam aplikasi ASP.NET Anda jika Anda menempatkan komponen di dalam panel pembaruan maka perpustakaan javascript ASP.NET akan melakukan postback asinkron ke sisi server dan hanya merender ulang komponen yang Anda tentukan.