Pada artikel kali ini kita akan membahas beberapa metode transfer data antar halaman ASP.NET. Semoga dapat membantu semua orang memahami dengan benar kegunaan dan kenyamanan transfer data antar halaman ASP.NET.
0. Pendahuluan
Halaman web tidak memiliki kewarganegaraan. Server menganggap setiap permintaan berasal dari pengguna yang berbeda. Oleh karena itu, status variabel tidak akan dipertahankan antara beberapa permintaan berturut-turut untuk halaman yang sama atau saat halaman tersebut melompat. Saat merancang dan mengembangkan sistem Web dengan ASP.NET, masalah penting yang dihadapi adalah bagaimana memastikan bahwa data dikirimkan dengan benar, aman dan efisien antar halaman. Asp.net menyediakan berbagai teknologi seperti manajemen negara untuk memecahkan masalah pelestarian dan transmisi. Mengenai masalah data, mari kita jelajahi berbagai metode untuk menyelesaikan masalah ini di bawah .NET dan masing-masing situasi yang berlaku.
1. Berbagai metode dan analisis transfer data antar halaman ASP.NET
1.1 Menggunakan metode Querystring
QueryString juga disebut string kueri. Metode ini menambahkan data yang akan ditransfer ke akhir alamat halaman web (URL) dan mentransfernya. Misalnya untuk melompat dari halaman A.aspx ke halaman B.aspx, Anda dapat menggunakan metode Request.Redirect("B.aspx? Parameter name = parameter value") atau Anda dapat menggunakan hyperlink:, setelah halaman melompat , itu akan tersedia di halaman target. Ruquest["nama parameter"] untuk menerima parameter. Keuntungan menggunakan metode QuerySting adalah implementasinya yang sederhana dan tidak menggunakan sumber daya server; kelemahannya adalah nilai yang diteruskan akan ditampilkan di bilah alamat browser, dengan risiko dirusak, dan objek tidak dapat dirusak. diteruskan. String kueri hanya dapat digunakan jika permintaan halaman melalui URL memungkinkan.
1.2 Memanfaatkan bidang tersembunyi
Bidang tersembunyi tidak akan ditampilkan di browser pengguna. Umumnya, kontrol tersembunyi ditambahkan ke halaman. Saat berinteraksi dengan server, nilai ditetapkan ke kontrol tersembunyi dan dikirimkan ke halaman berikutnya. Domain tersembunyi dapat menjadi tempat penyimpanan informasi apa pun yang disimpan di halaman web yang relevan dengan halaman web tersebut. Saat menggunakan bidang tersembunyi untuk menyimpan nilai, gunakan: kontrol tersembunyi.nilai=nilai numerik. Saat mengambil nilai yang diterima, gunakan: variabel=kontrol tersembunyi.nilai. Keuntungan menggunakan kolom tersembunyi adalah mudah diterapkan. Bidang tersembunyi merupakan kontrol HTML standar dan tidak memerlukan logika pemrograman yang rumit. Bidang tersembunyi disimpan dan dibaca di halaman, tidak memerlukan sumber daya server apa pun, dan hampir semua browser dan perangkat klien mendukung formulir dengan bidang tersembunyi. Kerugiannya adalah struktur penyimpanannya sedikit dan hanya mendukung struktur data sederhana. Kapasitas penyimpanannya kecil karena disimpan di halaman itu sendiri, sehingga tidak dapat menyimpan nilai yang lebih besar, dan data dalam jumlah besar akan diblokir oleh firewall dan proxy.
1.3 Keadaan Tampilan
ViewState adalah bidang formulir tersembunyi yang dikelola oleh kerangka halaman ASP.NET. Ketika ASP.NET mengeksekusi halaman, nilai ViewState dan semua kontrol pada halaman dikumpulkan dan diformat menjadi string yang disandikan, dan kemudian ditetapkan ke properti Value dari bidang formulir tersembunyi. Saat menggunakan ViewState untuk mentransfer data, Anda dapat menggunakan: ViewState ["nama variabel"]=nilai numerik. Saat mengambil data, gunakan: variabel=ViewState["nama variabel"]. Keuntungan menggunakan ViewState adalah: nilai secara otomatis disimpan di antara beberapa permintaan untuk halaman yang sama, tidak diperlukan sumber daya sisi server, dan implementasinya sederhana. Nilai dalam status tampilan di-hash dan dikompresi, dan bersifat dikodekan untuk implementasi Unicode, dan keamanannya memerlukan Lebih tinggi daripada menggunakan bidang tersembunyi; kerugiannya adalah karena ViewState disimpan di halaman itu sendiri, jika nilai yang lebih besar disimpan, pengguna mungkin melambat saat menampilkan halaman dan mengirim halaman tersebut. . Meskipun status tampilan menyimpan data dalam format hash, data tersebut masih dapat dirusak.
1.4 Penggunaan cookie
Cookies dapat mentransfer sejumlah kecil informasi antar halaman dan dapat disimpan dalam file teks di klien atau di memori klien. Metode Cookie cocok untuk menyimpan informasi yang sering berubah dalam sejumlah kecil halaman, seperti menyimpan nama pengguna login untuk situs web yang login, memberikan kemudahan input pengguna, dan menyimpan pengaturan pribadi pengguna pada beberapa item yang ditentukan pengguna. Tersedia saat menggunakan cookie untuk mentransfer data: Response.Cookies["nama kunci"]=nilai kunci; untuk mengambil data: nama variabel=Permintaan.Cookie["nama kunci"]. Keuntungan menggunakan cookie adalah: Cookie disimpan di klien, tidak menggunakan sumber daya server, mudah diterapkan, dan dapat mengkonfigurasi waktu kedaluwarsa. Kekurangan: Jumlah data yang dapat disimpan relatif kecil. Karena cookie tidak didukung oleh semua browser dan mungkin dilarang atau dihapus oleh pengguna, cookie tidak dapat digunakan untuk menyimpan data penting. Selain itu, cookie disimpan dalam teks biasa sederhana, dan tidak pantas menyimpan data sensitif dan tidak terenkripsi di dalamnya.
1.5 Menggunakan variabel Aplikasi
Variabel aplikasi juga dapat digunakan untuk mentransfer nilai antar halaman. Variabel aplikasi bersifat global dan semua pengguna berbagi variabel Aplikasi, setelah ditentukan, ini akan mempengaruhi semua bagian program. Jika Anda ingin menggunakan nilai variabel tertentu di seluruh aplikasi, objek Aplikasi akan menjadi pilihan terbaik. Saat menyimpan data, tambahkan nilai ke variabel Aplikasi: Aplikasi["nama variabel"]=nilai numerik; gunakan untuk mengambil data: variabel=Aplikasi["nama variabel"]; secara eksplisit :Aplikasi["nama kuantitas"]=null.
Keunggulan Aplikasi: Mudah digunakan, cakupan global. Tersedia untuk semua halaman dalam aplikasi. Kekurangan: Jika proses sisi server yang menyimpan data rusak (seperti karena server crash, upgrade atau shutdown), maka data akan hilang, jadi Anda harus memiliki strategi yang terjamin saat menggunakan Aplikasi yang menempati memori sisi server , yang dapat mempengaruhi kinerja server dan skalabilitas aplikasi.
1.6 Menggunakan variabel Sesi
Objek sesi dapat digunakan untuk menyimpan informasi tentang percakapan tertentu yang perlu dipertahankan. Klien yang berbeda menghasilkan objek Sesi yang berbeda. Sesi digunakan untuk menyimpan informasi jangka pendek khusus untuk sesi individual. Penggunaan dan format Sesi sama dengan Aplikasi.
Keuntungan: Mudah diimplementasikan, memberikan keamanan dan daya tahan tinggi, dapat mengatasi restart IIS dan restart proses tambahan, dan dapat digunakan dalam banyak proses. Kerugiannya adalah memakan memori sisi server. Jadi jangan menyimpan banyak informasi. Penggunaan Sesi yang paling umum adalah untuk menyediakan fungsi identifikasi pengguna pada aplikasi Web bersama dengan Cookie. Sesi juga dapat digunakan di browser yang tidak mendukung Cookie. Namun, menggunakan Sesi tanpa cookie memerlukan penempatan pengidentifikasi sesi dalam string kueri, yang juga mengalami masalah keamanan yang dinyatakan di bagian string kueri pada artikel ini.
1.7 Menggunakan properti statis kelas
Metode ini menggunakan properti statis kelas untuk mentransfer nilai antara dua halaman. Tentukan kelas yang berisi atribut statis; tetapkan nilai yang akan ditransfer ke atribut statis; halaman target dapat memperoleh nilai yang akan ditransfer di halaman sumber melalui atribut statis.
Kelebihannya adalah dapat dengan mudah mengirimkan banyak data, namun kekurangannya adalah memerlukan pemrograman tambahan, menambah beban kerja pemrograman, dan memakan memori server.
1.8 Menggunakan Server.Transfer
Saat mentransfer aliran eksekusi dari file ASPX saat ini ke halaman ASPX lain di server yang sama melalui metode Server.Transfer, data formulir atau string kueri dapat dipertahankan. Metodenya adalah dengan mengatur parameter kedua dari metode tersebut ke True halaman pertama menggunakan Server.Transfer("nama halaman target.aspx", true); halaman target menggunakan: Ruquest.Form["Control Name"] atau Ruquest.QueryString["Control Name"] untuk mengambil data. Bisa juga digunakan di Asp.net2.0 seperti ini, kodenya sebagai berikut:
Halaman Sebelumnya hal1;
pg1=(Halaman Sebelumnya)Konteks.Handler;
Respon.Tulis(pg1.Nama);
Penjelasan: Kode ini digunakan untuk mengambil nilai yang diteruskan dari halaman target. Halaman Sebelumnya adalah nama kelas halaman asli, Nama adalah atribut yang ditentukan pada halaman asli, dan data yang perlu ditransfer disimpan di sini. atribut.
Dengan menggunakan metode ini, Anda perlu menulis beberapa kode untuk membuat beberapa properti sehingga Anda dapat mengaksesnya dari halaman lain. Anda dapat mengakses nilai sebagai properti objek di halaman lain. Metode ini sangat berguna dalam meneruskan nilai antar halaman. Metode ini tidak hanya sederhana, tetapi juga berorientasi objek.
1.9 Tembolok
Cache memiliki fungsi operasi data yang kuat. Cache menyimpan data dalam bentuk kumpulan pasangan nilai kunci. Kemampuan terminasi berbasis ketergantungannya memungkinkannya mengontrol secara tepat bagaimana data dalam cache diperbarui dan dihilangkan secara tepat waktu. Ia dapat melakukan manajemen kunci secara internal dan tidak perlu menggunakan metode Lock() dan Unlock() untuk manajemen serialisasi seperti objek Aplikasi. Kerugiannya adalah cara penggunaannya rumit, dan penggunaan yang tidak tepat akan menurunkan kinerja.
2. Metode transfer nilai yang dapat digunakan dalam situasi lompatan halaman yang berbeda
2.1 Skenario 1: Halaman sumber dapat melompat ke halaman target, dan halaman sumber meneruskan data ke halaman target.
Menggunakan string kueri adalah metode sederhana dan umum digunakan untuk mentransfer sejumlah kecil informasi dari satu halaman ke halaman lain dan tidak ada masalah keamanan; gunakan metode Server.Transfer untuk meneruskan data formulir atau string kueri ke halaman lain HttpContext halaman awal. Metode ini dapat digunakan ketika halaman target dan halaman sumber berada di server yang sama.
2.2 Kasus 2: Halaman meneruskan nilai ke halamannya sendiri
Artinya, dengan mempertahankan nilai di beberapa permintaan untuk halaman yang sama, properti ViewState menyediakan fungsionalitas dengan keamanan dasar. Bidang tersembunyi juga dapat digunakan untuk menyimpan sejumlah kecil informasi halaman yang diposting kembali ke halaman itu sendiri atau halaman lain, dan digunakan ketika masalah keamanan tidak dipertimbangkan.
2.3 Kasus 3: Halaman sumber meneruskan nilai ke halaman target, namun halaman sumber tidak dapat terhubung langsung ke halaman target.
Ada beberapa metode, dan metode mana yang digunakan bergantung pada situasi spesifik.
Aplikasi: Menyimpan informasi global yang digunakan oleh banyak pengguna dan jarang berubah, ketika keamanan tidak menjadi masalah. Jangan menyimpan informasi dalam jumlah besar. Sesi: Menyimpan informasi jangka pendek yang spesifik untuk sesi individual dan memerlukan keamanan tinggi. Jangan menyimpan informasi dalam jumlah besar dalam status sesi. Perhatikan bahwa objek status sesi dibuat dan dipelihara selama masa pakai setiap sesi dalam aplikasi. Dalam aplikasi yang mendukung banyak pengguna, hal ini dapat menghabiskan sumber daya server secara signifikan dan berdampak pada skalabilitas.
Cookies: Digunakan ketika Anda perlu menyimpan sejumlah kecil informasi di sisi klien dan tidak ada masalah keamanan. Atribut statis kelas memfasilitasi transmisi banyak data.
Cache: objek untuk satu pengguna, sekelompok pengguna, atau semua pengguna. Data dapat disimpan untuk beberapa permintaan dalam waktu lama dan efisien. Cara-cara di atas tidak hanya digunakan pada kasus ketiga, tetapi juga pada dua kasus sebelumnya. Gunakan saja sesedikit mungkin jika tidak diperlukan, jika tidak maka akan menyebabkan pemborosan sumber daya atau menambah kompleksitas program.