Terkadang aplikasi Web kita sangat cepat saat diuji secara lokal, namun saat diuji di LAN, akan ditemukan masalah kinerja; terkadang bahkan aplikasi dengan kecepatan normal di LAN akan ditemukan di pertanyaan WAN. Permasalahan tersebut umumnya disebabkan oleh kelalaian atau kesalahan pada aplikasi dan tidak melibatkan arsitektur sistem. Permasalahan tersebut dapat ditemukan dan diselesaikan melalui debugging dan pengujian di lingkungan nyata.
Apa yang kita bicarakan hari ini adalah meningkatkan kinerja aplikasi ASP.Net secara mendasar dengan meningkatkan arsitektur.
Mari kita uji dulu beberapa aplikasi sederhana ASP.Net.
Lingkungan pengujian: AthlonXP 3200+, DDR400 512M, WindowsXP SP2, SQL Server 2000 asli, tabel produk database Chinese Northwind (diimpor dari Access), sekitar 70 catatan.
Nomor seri pengujian | Jenis program | Metode pengujian | Hasil pengujian (Permintaan per detik) | SQLServer Sumber daya ditempati | ASP.Net Sumber daya yang ditempati |
1 | Layanan Web | mengisi DataSet dengan tabel produk dan mengembalikan jumlah catatan | 250 kali | 100% | - |
2 | Layanan Web | mengisi DataSet dengan tabel produk dan mengembalikan DataSet | 138 kali | 54% | 46% |
3 | Aplikasi Web | mengisi DataSet dengan tabel produk dan mengembalikan Bind DataGrid | 70 kali | 28% | 72% |
Pada pengujian pertama, layanan Web hanya membaca catatan dari database, mengisinya ke dalam DataSet, dan mengembalikan jumlah catatan (perhatikan bahwa ini tidak mengembalikan catatan). Diasumsikan bahwa sistem menggunakan sedikit sumber daya sumber daya sepenuhnya ditempati oleh SQL Server, dan kesimpulannya tidak jelas. Akan ada efek negatif.
Dalam pengujian kedua, ketika layanan Web mengembalikan DataSet, jumlah permintaan per detik berkurang hampir setengah dari sumber daya sistem yang digunakan oleh ASP.Net untuk membuat serial DataSet.
Pada pengujian ketiga, saat aplikasi Web mengikat DataSet ke DataGrid dan mengembalikan halaman, jumlah permintaan per detik berkurang hampir tiga perempatnya. Sumber daya sistem ini digunakan oleh ASP.Net untuk mengikat DataSet ke DataGrid dan kembalikan halaman tersebut.
Dari pengujian di atas, kita dapat melihat bahwa pengikatan dan serialisasi DataGrid akan menghabiskan banyak sumber daya sistem. Jika Anda ingin meningkatkan kinerja sistem, Anda perlu meningkatkan arsitekturnya.
1. Pisahkan operasi pada database dari halaman dan letakkan di lapisan persistensi independen.
Dengan cara ini, data ditampilkan sebagai tabel melalui DOM atau XSLT di sisi klien, menggantikan pekerjaan pengikatan DataGrid di sisi server, yang sangat mengurangi tekanan pada server. Dan klien memperoleh data dari lapisan persistensi melalui AJAX, yang akan meningkatkan pengalaman pengguna.
2. Pisahkan sepenuhnya halaman dari data agar cache dapat digunakan.
Beberapa halaman yang menerapkan AJAX masih akan membaca data awal, sehingga halaman tersebut tidak dapat di-cache. Halaman-halaman ini umumnya lebih kompleks dan menggunakan lebih banyak sumber daya daripada halaman biasa. Jika cache dapat digunakan, kinerja sistem akan lebih ditingkatkan.
Melalui dua poin di atas, kinerja ASP.Net bisa meningkat hampir dua kali lipat.
Anda dapat mengujinya sendiri, atau kunjungi sampel kami www.BizStruct.cn .