中国最大的 web 开发资源网站及技术社区 ,
Implementasi ASP
Sesi ASP asli hanya dapat menyimpan data sesi dalam memori. Untuk menyimpan data sesi ke SQL Server, objek Custom Microsoft® Visual Basic® 6.0 COM ditulis untuk mengelola status sesi alih -alih menggunakan objek sesi asli. Objek COM ini akan dipakai di awal setiap permintaan web dan memuat ulang data sesi dari SQL Server. Ketika skrip ASP selesai, objek ini akan diakhiri dan status sesi akan bertahan kembali ke SQL Server.
Tujuan utama dari objek Sesi Visual Basic 6 COM adalah untuk menyediakan akses ke objek intrinsik Server Informasi Internet Microsoft. Objek Sesi Visual Basic 6.0 COM menggunakan kelas MySession dari Majelis Sesi untuk memegang status sesi, dan kelas sesi session dari Sesionutility untuk memuat dan menyimpan data sesi dengan SQL Server. Kelas mysesession dan sessionPersistence diekspos sebagai objek COM menggunakan utilitas regasm.exe. Utilitas Regasm.exe dapat mendaftar dan membuat jenis pustaka untuk klien COM untuk mengkonsumsi kelas kerangka kerja.
Informasi keadaan sesi dimuat ulang selama pembangunan objek. Konstruktor (class_initialize) pertama -tama akan mengambil cookie sesi, waktu tunggu sesi (sessionTimeout), dan string koneksi basis data (sessionDSN) dari objek aplikasi, dan membuat instance kelas mySession untuk menyimpan data sesi. Kemudian konstruktor akan mencoba memuat ulang data sesi dari SQL Server dengan cookie yang diberikan. Jika SQL Server tidak memiliki informasi sesi, atau sesi telah kedaluwarsa, cookie baru akan dikeluarkan. Jika SQL Sever memang kembali dengan data status sesi, status sesi akan disimpan dalam objek MySession.
private sub class_initialize ()
pada kesalahan goto errhandler:
const method_name as string = class_initialize
Setel mysessionPersistence = SesionPersistence baru
Set MyObjectContext = getObjectContext ()
mysessiesId = readSessionId ()
mydsnstring = getConnectionDSn ()
mytimeout = getSessionTimeOut ()
myisNewSession = false
Hubungi initcontents
Keluar Sub
Errhandler:
err.raise err.number, method_name &: & err.source, err.description
akhir sub
Sub InitContents Private ()
pada kesalahan goto errhandler:
const method_name as string = initcontents
Jika mysessiesId = lalu
atur mycontentsentity = mysesesi baru
mysesessionId = mysessionPersistence.generateKey
MyisNewSession = Benar
kalau tidak
atur mycontentsentity =
MysessionPersistence.LoadSession (mysessionid, mydsnstring, mytimeout)
akhiri jika
Keluar Sub
Errhandler:
err.raise err.number, method_name &: & err.source, err.description
akhir sub
Ketika instance objek keluar dari ruang lingkup dalam skrip, destructor (class_terminate) akan dieksekusi. Destructor akan bertahan dengan data sesi menggunakan metode sessionPersistence.savesession (). Jika ini adalah sesi baru, destruktor juga akan mengirim cookie baru kembali ke browser.
Private Sub Class_Terminate ()
pada kesalahan goto errhandler:
const method_name as string = class_terminate
Hubungi setDataForSessionId
Keluar Sub
Errhandler:
err.raise err.number, method_name &: & err.source, err.description
akhir sub
sub -setDataForSessionId private ()
pada kesalahan goto errhandler:
const method_name as string = setDataForSessionId
Hubungi MySessionPersistence.Savesession (Mysesessionid,
mydsnstring, mycontentsentity, myisnewsession)
Jika MyisNewSession maka hubungi WritesessionID (Mysesessionid)
atur mycontentsity = tidak ada
atur myobjectContext = tidak ada
Setel mysessionPersistence = tidak ada
Keluar Sub
Errhandler:
err.raise err.number, method_name &: & err.source, err.description
akhir sub
Anda dapat mengunduh kode sumber proyek ASP.NET sessionutility, Com Sesion Manager, dan kode demo dengan mengklik tautan di bagian atas artikel.
program demo
Program demo dirancang untuk menambah dan menampilkan angka. Terlepas dari halaman mana yang dimuat, nomor tersebut akan terus bertambah karena nilai angka disimpan di SQL Server dan dibagi antara ASP klasik dan ASP.NET.
Langkah -langkah untuk Menyiapkan Program Demo
Buat database baru yang disebut sessionDemoDB.
Buat tabel SessState (osql.exe –e –d sessionDemodb –i session.sql).
Buat direktori virtual baru yang disebut demo.
Matikan sesi ASP di bawah tab Konfigurasi ASP.
Salin web.config, testpage.aspx, global.asa, testpage.asp, dan globalinclude.asp ke direktori virtual.
Perbarui pengaturan string DSN di global.asa dan web.config. Pengaturan batas waktu sesi adalah opsional. Standarnya adalah 20 menit.
Instal sessionutility.dll ke cache perakitan global (gacutil /i sessionutility.dll).
mengekspos sessionutility.dll sebagai objek COM menggunakan regasm.exe (Regasm.exe sessionutility.dll /tlb:Sessionility.tlb).
Salin sessionManager.dll ke direktori lokal dan gunakan regsvr32.exe untuk mendaftarkannya (REGSVR32 sessionManager.dll).
Berikan akun IUSR_ <CheT Machine_name> untuk membaca dan menjalankan akses ke sessionmgr.dll.
Langkah untuk menjalankan program demo
Mulai Microsoft® Internet Explorer.
Muat testpage.asp untuk ASP klasik. Nomor 1 akan muncul di halaman web.
Klik Refresh di Internet Explorer untuk memuat ulang halaman. Jumlahnya harus bertambah.
Ubah URL ke testPage.aspx untuk ASP.NET. Jumlahnya harus terus bertambah.
Proses yang sama dapat diulangi dengan memulai halaman testpage.aspx terlebih dahulu.
menggabungkan objek COM dalam aplikasi ASP yang ada
Praktik umum dalam mengembangkan aplikasi ASP adalah memasukkan file di awal setiap skrip untuk berbagi kode dan konstanta umum. Cara terbaik untuk menggabungkan objek sesi kustom adalah dengan menambahkan kode instantiasi dalam file certai common. Langkah terakhir adalah hanya untuk mengganti semua referensi ke objek sesi dengan nama variabel sesi khusus.
Keterbatasan/Peningkatan
Solusi ini tidak akan mendukung aplikasi ASP yang ada yang menyimpan objek COM di objek sesi. Dalam hal ini, marshaler khusus diperlukan untuk membuat serialisasi/deserialisasi negara bagian untuk menggunakan objek sesi khusus. Selain itu, solusi ini tidak mendukung penyimpanan array jenis string. Dengan beberapa upaya tambahan, fitur ini dapat diimplementasikan dengan menggunakan fungsi gabungan Microsoft® Visual Basic® 6.0 untuk menggabungkan semua elemen array menjadi satu string sebelum menyimpannya ke objek sesi. Reverse dapat dilakukan dengan menggunakan fungsi visual basic 6.0 split untuk membagi string kembali ke elemen array individual. Di sisi .NET Framework, metode gabungan dan split adalah anggota kelas string.
kesimpulan
ASP.NET mewakili paradigma dan arsitektur pemrograman baru, dan menawarkan banyak keunggulan dibandingkan ASP klasik. Meskipun porting dari ASP ke ASP.NET bukanlah proses yang sederhana, model pemrograman yang lebih baik dan peningkatan kinerja ASP.NET akan membuat proses konversi bermanfaat. Dengan pengecualian menyimpan objek COM di objek sesi, pendekatan yang dijelaskan dalam artikel ini menawarkan solusi yang akan membuat proses migrasi lebih sederhana.
tentang penulis
Billy Yuen bekerja di California Utara di Microsoft Technology Center Silicon Valley. Pusat ini berfokus pada pengembangan solusi Microsoft .NET Framework. Dia dapat dihubungi di [email yang dilindungi]