Manajemen Sesi ASP.NET [Contoh]
⚡ Ringkasan Cerdas
Manajemen Sesi ASP.NET memungkinkan aplikasi HTTP tanpa status untuk mengingat data pengguna di seluruh permintaan. Dokumen ini menjelaskan ViewState, objek Session untuk menyimpan pasangan kunci-nilai, contoh kerja, mode status sesi, konfigurasi waktu habis (timeout), dan keuntungan dari status sesi.
Manajemen Sesi ASP.NET
Protokol HTTP tempat semua aplikasi web bekerja adalah protokol tanpa kewarganegaraan. Yang dimaksud dengan stateless adalah bahwa informasi tidak disimpan dari satu permintaan ke permintaan lainnya.
Misalnya, jika Anda memiliki halaman login yang memiliki 2 kotak teks, satu untuk nama dan satu lagi untuk kata sandi. Saat Anda mengklik tombol Login pada halaman tersebut, aplikasi perlu memastikan bahwa nama pengguna dan kata sandi diteruskan ke halaman berikutnya.
Di ASP.Net, hal ini dilakukan dengan berbagai cara. Cara pertama adalah melalui konsep yang disebut ViewState. Di sinilah ASP.Net secara otomatis menyimpan isi dari semua kontrol. ASP.Net juga memastikan bahwa isi tersebut diteruskan ke halaman berikutnya. Hal ini dilakukan melalui properti yang disebut ViewState.
Tidaklah ideal bagi pengembang untuk mengubah apa pun dalam kondisi tampilan. Hal ini karena harus ditangani oleh ASP.Net saja.
Objek Sesi ASP.NET
Cara lainnya adalah dengan menggunakan objek yang disebut “Objek Sesi.” Objek Session tersedia sepanjang siklus hidup aplikasi. Anda dapat menyimpan sejumlah pasangan kunci-nilai di objek Sesi. Jadi di halaman mana pun, Anda bisa menyimpan nilai di objek Session melalui baris kode di bawah ini.
Session["Key"] = value
Ini menyimpan nilai dalam objek Session, dan bagian 'key' digunakan untuk memberi nama pada nilai tersebut. Hal ini memungkinkan nilai tersebut untuk diambil di kemudian hari. Untuk mengambil nilai, Anda cukup mengeluarkan pernyataan di bawah ini.
Session["Key"]
Contoh objek Sesi ASP.NET
Dalam contoh kita, kita akan menggunakan objek Session untuk menyimpan nama yang dimasukkan di kolom teks nama pada halaman. Kemudian kita akan mengambil nilai tersebut dan menampilkannya di halaman sesuai kebutuhan. Mari tambahkan kode di bawah ini ke file Demo.aspx.cs.
protected void btnSubmit_Click(object sender, EventArgs e) { Session["Name"] = txtName.Text; Response.Write(Session["Name"]); lblName.Visible = false; txtName.Visible = false; lstLocation.Visible = false; chkC.Visible = false; chkASP.Visible = false; rdMale.Visible = false; rdFemale.Visible = false; btnSubmit.Visible = false; }
Code Penjelasan:-
- Baris kode pertama mengambil nilai dari kontrol kotak teks Nama dan menyimpannya dalam objek Sesi. Dengan menentukan kode Session[“Name”], kita memberi nama properti tersebut dengan nama “Nama”. Dengan menentukan nama untuk properti tersebut, akan lebih mudah untuk mengambilnya di kemudian hari.
- Baris kode berikutnya mengambil nilai yang disimpan dari objek Session. Ia kemudian menulis nilai ini melalui metode 'Response.Write' kembali ke klien.
- Terakhir, kita membuat semua kontrol pada formulir menjadi tidak terlihat. Jika kita tidak melakukan ini, semua kontrol beserta nilai respons kita akan ditampilkan bersamaan.
Setelah Anda melakukan perubahan di atas, Anda akan melihat hasil sebagai berikut.
Keluaran:
Dari output, Anda dapat melihat bahwa nilai Sesi dari nama telah diambil dan ditampilkan di browser.
Mode Status Sesi ASP.NET
ASP.NET dapat menyimpan data sesi di beberapa tempat, yang disebut mode status sesi. Mode yang Anda pilih memengaruhi kinerja, skalabilitas, dan apakah data tetap ada setelah aplikasi dimulai ulang. Tabel di bawah ini membandingkannya:
| mode | Di mana status disimpan | Terbaik untuk |
|---|---|---|
| InProc | Di memori server web (default) | Aplikasi server tunggal; tercepat, tetapi akan hilang saat restart. |
| Server Negara | Proses Layanan Status ASP.NET terpisah | Farm web; tetap berfungsi setelah aplikasi dimulai ulang. |
| Server SQL | Basis data SQL Server | Pusat data web yang membutuhkan status yang tahan lama dan dapat diskalakan. |
| Kustom | Penyedia khusus yang Anda implementasikan | Toko khusus seperti Redis |
| Off | Status sesi dinonaktifkan | Aplikasi yang tidak memerlukan sesi |
InProc adalah default dan yang tercepat, tetapi untuk penerapan load balancing, StateServer atau SQLServer menjaga sesi tetap tersedia di beberapa server.
Cara Mengonfigurasi Batas Waktu Sesi di ASP.NET
Sesi tidak berlangsung selamanya; sesi akan berakhir setelah periode tidak aktif. Anda dapat mengatur batas waktu ini di file web.config menggunakan elemen sessionState, di mana nilai batas waktu dalam menit:
<configuration> <system.web> <sessionState mode="InProc" timeout="20" /> </system.web> </configuration>
Anda juga dapat mengaturnya dalam kode dengan Session.Timeout = 30;. Batas waktu default adalah 20 menit. Memilih batas waktu yang lebih pendek akan membebaskan memori server lebih cepat dan meningkatkan keamanan, sementara batas waktu yang lebih lama akan membuat pengguna tetap masuk lebih lama.
Keuntungan dan Kerugian dari Sistem Sidang Parlemen
Session state memang praktis, tetapi ada beberapa kekurangan yang perlu dipertimbangkan sebelum terlalu bergantung padanya.
Keuntungan:
- Mudah digunakan untuk menyimpan data per pengguna, seperti data toko.ping keranjang belanja atau detail login.
- Dapat menyimpan objek kompleks, bukan hanya string.
- Data disimpan di server, sehingga lebih aman daripada penyimpanan di sisi klien.
kekurangan:
- Mode InProc mengonsumsi memori server dan tidak dapat diskalakan di seluruh web farm.
- Data sesi akan hilang ketika sesi berakhir atau aplikasi dimulai ulang (dalam mode InProc).
- Menyimpan data dalam jumlah besar per pengguna dapat menurunkan performa saat beban kerja tinggi.



