Web Teknologi 2Minggu …4… Page 1 MINGGU Ke Empat Pemrograman Visual 2 Pokok Bahasan: Mengelola Status Pemakai Tujuan Instruksional Khusus: Mahasiswa akan dapat menjelaskan dan mengelola status pemakai Referensi: Microsoft ASP.NET Step by Step G.Andrew Duthie, Bab 6 Dasar pemrograman database web dengan ASP, Abdul Kadir, Bab 16, 17
Web Teknologi 2Minggu …4… Page 2 Agenda Perkenalan tentang status Menggunakan status aplikasi Menggunakan status sesi Mengaktifkan status sesi Mengubah penyimpanan status Menggunakan cookie client side untuk penyimpanan status Status, skabilitas dan kontrol server ASP.NET
Web Teknologi 2Minggu …4… Page 3 Perkenalan tentang status Apa itu status? –Aplikasi-aplikasi yang penting pasti menggunakan bagian- bagian dari data, atau variabel yang perlu dikelola melalui serangkaian permintaan atau juga dapat dipakai bersama diantara banyak pengguna aplikasi, data seperti ini disebut sebagai status. –Dalam aplikasi yang hanya dipakai oleh perorangan sangatlah mudah untuk menentukan status aplikasinya, kita dapat mengalokasikan ruang dalam memori pada mesin client. Tetapi dalam aplikasi Web agak sulit dalam mengelola pengguna dan status aplikasi.
Web Teknologi 2Minggu …4… Page 4 Perkenalan tentang status (lanjt …) Mengapa mengelola dalam aplikasi Web agak sulit? –Penyebab utamanya adalah Hypertext Transfer Protocol (HTTP), karena protokol yang dipakai untuk mengirim dan menerima permintaan lewat browser Web, tidak memiliki status di dalamnya. –Artinya, dalam HTTP tidak disediakan cara bagi web server untuk mengidentifikasi serangkaian permintaan sebagai datang dari pengguna yang sama. –Dalam ASP klasik kelemahan ini diatasi dengan objek intrinsik session, akan tetapi koleksi session masih memiliki sejumlah kelemahan juga.
Web Teknologi 2Minggu …4… Page 5 Menggunakan status aplikasi Apa itu status aplikasi? –Semua data yang akan dipakai bersama-sama di antara banyak pengguna aplikasi. –Berikut adalah sintaks untuk mengakses koleksi pasangan nilai kunci yang bisa dipakai oleh pengembang untuk menyimpan nilai dan obyek instance. Application(“MyApplicationVar”) = “MyValue” MyLocalVar = Application(“MyApplicationVar”)
Web Teknologi 2Minggu …4… Page 6 Menggunakan status aplikasi (lanjt …) Hal yang baru dalam ASP.NET ? –Memiliki kemampuan untuk menambahkan item ke koleksi application dengan metode add yang diekspos oleh obyek application anda dapat menggunakan metode remove (diekspos oleh koleksi application.contents dalam ASP klasik) untuk menghapus item dari koleksi application. Application.Add(“MyApplicationVar”,“MyValue”) Application.Remove(“MyOtherApplicationVar”)
Web Teknologi 2Minggu …4… Page 7 Menggunakan status aplikasi (lanjt …) Properti dan metode obyek aplikasi –Properti AllKeys, menghasilkan koleksi semua kunci yang dipakai untuk mengakses nilai-nilai koleksi application. –Properti Count, menghasilkan sejumlah objek yang disimpan dalam koleksi application. –Metode Get, Menghasilkan item dari koleksi application dengan kunci atau dengan indeks. –Metode Set, Meng-update item dalam koleksi application dengan kunci atau dengan indeks. –Metode GetKey, Menghasilkan kunci untuk item berdasarkan indeks yang diberikan. –Metode ToString, Menghasilkan string yang mencerminkan item dalam koleksi application. Berguna saat sebuah string lebih diperlukan ketimbang referensi obyek.
Web Teknologi 2Minggu …4… Page 8 Menggunakan status aplikasi (lanjt …) Membuat sinkronisasi akses ke status aplikasi –Tantangan dalam mengelola informasi status yang dipakai bersama- sama di antara berbagai pengguna adalah memastikan bahwa tidak ada dua pengguna bisa melakukan update informasi secara bersamaan, karena dapat mengakibatkan data menjadi corrupt. –Pada ASP klasik, obyek application pada ASP.NET menyediakan metode Lock dan Unlock yang bisa dipakai pengembang untuk memastikan bahwa hanya seorang pengguna saja yang kapan saja bisa meng-update informasi status aplikasi. Application.Lock() - > Gunakanlah sebelum memodifikasi data yang disimpan dalam koleksi application dan memanggil application. Application.Unlock() -> Gunakanlah setelah melakukan modifikasi selesai.
Web Teknologi 2Minggu …4… Page 9 Menggunakan status aplikasi (lanjt …) Batas-batas status aplikasi –Ketahanan, status aplikasi berlangsung hanya selama aplikasi Web jalan. Apabila aplikasi Web atau server Web dimatikan atau crash, semua informasi status yang disimpan pada tingkat aplikasi akan hancur. Solusi dari masalah ini adalah kita harus menyimpan informasi ini kedalam database. –Web Farm, status aplikasi tidak dipakai bersama di antara banyak server dalam Web farm, jika anda perlu menyimpan nilai-nilai yang harus ada untuk semua pengguna maka dalam kasus ini status aplikasi bukanlah solusi yang tepat. –Memori, tiap server hanya memiliki jumlah memori fisik yang terbatas. Kebanyakan memakai status aplikasi akan mengakibatkan informasi harus dikirim ke memori virtual. Ini bisa mengurangi kinerja secara signifikan.
Web Teknologi 2Minggu …4… Page 10 Menggunakan status sesi Pengenalan sesi –Sebuah sesi dapat digunakan untuk membentuk interaksi antara sebuah klien dengan web server dalam selang waktu tertentu, dari saat pemakai login hingga ia melakukan logout.
Web Teknologi 2Minggu …4… Page 11 Menggunakan status sesi (lanjt …) Pada ASP jika ingin membentuk hubungan dalam waktu yang lama maka gunakan fasilitas sesi (session), berbeda dengan cookie (yang menyimpan data pada klien), session (menyimpan data pada server). Setiap kali suatu sesi dibentuk akan terdapat referensi yang menunjuk ke sesi bersangkutan. Referensi ini dikenal dengan pengenal sesi (Session ID) dan disimpan pada klien sebagai cookie. Klien Variabel-variable sesi per klien
Web Teknologi 2Minggu …4… Page 12 Menggunakan status sesi (lanjt …) Pada ASP klasik, kesulitan ini ditemukan pada obyek intrinsik session. Setiap pengguna mempunyai instance sesinya masing-masing, diidentifikasi oleh ID sesi, yang bisa dipakai untuk menyimpan informasi status per pengguna. ID sesi, nilai unik yang dihasilkan untuk jalannya aplikasi, kemudian disimpan dalam sebuah cookie pada mesin client. ID ini kemudian dikirim kembali ke server bersama setiap permintaan yang menyertainya, memungkinkan server mengidentifikasi sesi yang terkait dengan pengguna tersebut. –Web farm dalam ASP klasik, tidak dapat dibuat fleksibel diantara berbagai server dalam Web Farm, membatasi kegunaanya dalam situasi skalabilitas tinggi. –Ketahanan dalam ASP klasik, status sesi akan dihancurkan oleh server saat restart atau crash. –Kehandalan Cookie, ASP klasik tidak menawarkan solusi inheren untuk mendukung status sesi dengan browser yang tidak atau belum mendukung cookie.
Web Teknologi 2Minggu …4… Page 13 Menggunakan status sesi (lanjt …) ASP.NET memberikan penyelesaian atas keterbatasan pada ASP klasik, yaitu dengan cara menyimpan status per pengguna yang skalabel, bisa diandalkan, dan terdapat pada browser yang tidak mendukung cookie Obyek session pada ASP.NET ditampilkan sebagai properti kelas Page, yang diwarisi oleh halaman ASP.NET. Hal ini memungkinkan akses ke obyek session dengan memakai kata kunci session. Session(“MySessionVar”) = “MyValue” MyLocalVar = Session(“MySessionVar”)
Web Teknologi 2Minggu …4… Page 14 Menggunakan status sesi (lanjt …) Metode dan properti obyek session –Properti Keys, menghasilkan koleksi semua kunci yang bisa dipakai untuk mengakses nilai-nilai koleksi session. –Properti Count, Menghasilkan sejumlah obyek yang disimpan dalam koleksi session. –Properti SessionID, Menghasilkan sebuah string yang berisi ID sesi untuk sesi saat ini. –Properti Timeout, Menghasilkan sebuah nilai Int32 sebagai representasi seting session timeout saat ini. –Metode Abandon, Menghancurkan sesi pengguna saat ini. –Metode Clear, Menghapus semua item dari koleksi session. –Metode RemoveAt, Menghapus item tertentu dari koleksi session, berdasarkan indeks dalam koleksi. –Metode ToString, Menghasilkan string yang melambangkan item dalam koleksi session. Berguna saat nilai string lebih dibutuhkan ketimbang referensi obyek.
Web Teknologi 2Minggu …4… Page 15 Mengaktifkan status sesi (lanjt …) Berbeda dengan status aplikasi yang selalu ada pada aplikasi Web, status sesi harus diaktifkan sebelum anda dapat memakainya. Kabar baiknya adalah konfigurasi default file pada tingkat server (Machine.config) secara otomatis mengaktifkan status sesi, sehingga anda tidak perlu melakukan apa-apa untuk mengaktifkannya. Mengaktifkan status sesi dalam visual studio.NET, anda dapat mengubah setingnya dengan cara pilih entri EnableSessionState dalam window properties lalu pilih nilai yang diinginkan
Web Teknologi 2Minggu …4… Page 16 Mengaktifkan status sesi (lanjt …) Rekomendasi untuk status sesi –Kemudahan pemakaian status sesi membuatnya terlalu sering dipakai atau disalahgunakan. Contoh tentang kapan anda boleh atau tidak menyimpan informasi dalam status sesi, serta alternatif untuk menyimpannya setelah slide ini. Batas-batas status sesi –Keterbatasan dalam ASP.NET adalah dalam hal memori. Seperti pada status aplikasi, status sesi juga dibatasi oleh memori yang ada pada server web. Setelah memori fisik server web habis, informasi akan disimpan dalam memori virtual yang lebih lambat.
Web Teknologi 2Minggu …4… Page 17 Mengaktifkan status sesi (lanjt …) Tabel informasi dalam status sesi
Web Teknologi 2Minggu …4… Page 18 Mengubah Penyimpanan Status Konfigurasi penyimpanan status –In-Process (InProc), ini adalah seting default, pada dasarnya sama persis dengan ASP klasik. –Out-of-Process (StateServer), seting ini menyatakan bahwa status sesi akan disimpan oleh sebuah server yang menjalankan layanan NT status ASP.NET. –SQL Server (SQLServer), seting ini menyatakan bahwa status esi akan disimpan dalam database SQL server. SQL server yang akan dihubungi dinyatakan oleh sebuah tipe referensi. –Cookieless Sessions, seting ini memungkinkan anda mengelola status sesi bahkan untuk pengguna yang browsernya tidak dapat menangani cookie.
Web Teknologi 2Minggu …4… Page 19 Mengubah Penyimpanan Status (lanjt…) Langkah-langkah menyimpan status sesi diluar proses: –Buka file konfigurasi Web.Config untuk aplikasi anda dan cari bagian konfigurasi SessionState. –Ubah atribut modul dari “InProc” Menjadi “StateServer”
Web Teknologi 2Minggu …4… Page 20 Mengubah Penyimpanan Status (lanjt…) –Ubah atribut StateConnectionString sehingga mencerminkan nama server (atau alamat IP) dari server status serta port yang dimonitor oleh layanan status ASP.NET (secara default, ini adalah 42424). –Bagian konfigurasi SessionState yang memakai layanan status ASP.NET pada mesin lokal akan terlihat seperti kode berikut: –Lakukan snap-in Service Microsoft Management Console (MMC) dengan mengklik Start, Programs, Administrative Tools, Services. –Buka layanan status ASP.NET pada server yang diinginkan dari snap- in service MMC
Web Teknologi 2Minggu …4… Page 21 Mengubah Penyimpanan Status (lanjt…) Langkah-langkah menyimpan status dalam SQL Server: –Buatlah database status sesi SQL server dengan menjalankan batch InstallSqlState.sql (lokasinya berada dalam direktori instal.NET Framework, secara default %windir%\Microsoft.Net\Framework\%Version%) pada SQL Server yang akan dipakai. –Buka file konfigurasi web.Config untuk aplikasi anda danc ari bagian konfigurasi SessionState. –Ubah attribut mode dari “Inproc” imenjadi “SQL Server” –Lakukan modifikasi pada atribut SqlConnectionString sehingga mencerminkan alamat IP pada SQL Server yang diinginkan serta ID pengguna dan password yang dipakai untuk mengakses SQL Server itu.
Web Teknologi 2Minggu …4… Page 22 Status, Skalabilitas dan Kontrol Server ASP.NET Beberapa faktor yang mempengaruhi skalabilitas aplikasi yang timbul dari buruknya keputusan pada pengelolaan status aplikasi: –Gagal mematikan status sesi saat tidak dipakai. –Salah pakai Application.Lock(). –Menyimpan referensi ke satu (atau ruang) obyek larik. –Status sesi dalam proses. –Terlalu banyak memakai penyimpanan sesi atau aplikasi. Jenis lain status yang bisa dikelola oleh ASP.NET adalah status kontrol server dimana bisa mengelola status sendiri dengan mekanisme yang disebut ViewState. ViewState dikelola berdasarkan halaman per-halaman berupa field form tersembunyi yang mengandung semua status informasi untuk semua elemen form pada halaman itu.
Web Teknologi 2Minggu …4… Page 23 Cookie Pengenalan cookie –Biasa digunakan dalam situs web untuk menangani berbagai hal: Menyimpan nama pemakai, sehingga ketika pemakai mengunjungi situs Web itu kembali, pemakai bisa segera disapa. Cookie memungkinkan tampilan halaman Web yang bisa diatur sendiri oleh pemakai. Cookie juga dapat digunakan untuk menciptakan suatu sesi yang memungkinkan seseorang dapat masuk kehalaman-halaman lain tanpa perlu melakukan login kembali. Apakah cookie berbahaya? Bagaimana proses cookie berlangsung?
Web Teknologi 2Minggu …4… Page 24 Cookie (lanjt…) Memakai sesi cookieless –Buka file konfigurasi Web.config untuk aplikasi anda dan cari bagian konfigurasi SessionState. –Ubah atribut cookieless dari “false” menjadi “true”. Memformat URL untuk sesi cookieless –Panggil metode ApplyAppPathModifier pada obyek intrinsik response dan menyalurkan ke path virtual. Dim myAbsoluteURL As String myAbsoluteURL = Response.ApplyAppPathModifier(“foo.aspx”)
Web Teknologi 2Minggu …4… Page 25 Cookie (lanjt…) Menggunakkan cookie client-side untuk penyimpanan status –Langkah menyimpan cookie sementara: Buatlah sebuah instance dari kelas HttpCookie. Dim MyCookie As New HttpCookie (“MyCookieName”) Atur properti value pada cookie dengan nilai yang diinginkan MyCookie.value=“MyValue” Tambahkan cookie kedalam koleksi Cookies dari obyek Response Response.Cookies.Add(MyCookie)
Web Teknologi 2Minggu …4… Page 26 Questions & Answers
Web Teknologi 2Minggu …4… Page 27 Thank You