วัตถุเซสชันของเทคโนโลยี ASP (หน้าเซิร์ฟเวอร์ที่ใช้งานอยู่) ใช้เพื่อจัดเก็บข้อมูลส่วนตัวของผู้ใช้ในระหว่างการสนทนา ตัวแปรและวัตถุที่กำหนดไว้ในวัตถุเซสชันของผู้ใช้ปัจจุบันสามารถแชร์ระหว่างหน้าเว็บ แต่ไม่สามารถเข้าถึงได้โดยผู้ใช้รายอื่นในแอปพลิเคชัน ข้อมูลสถานะ
วัตถุเซสชันมีคุณสมบัติที่สำคัญมาก: การหมดเวลาซึ่งใช้ในการตั้งค่าเวลาที่วัตถุเซสชันจะไม่ทำงานก่อนที่ทรัพยากรเซสชันจะถูกปล่อยออกมา (ค่าเริ่มต้นคือ 20 นาที) เมื่อค่าเวลาที่กำหนดโดยคุณสมบัติการหมดเวลาหมดทรัพยากรเซสชันจะถูกปล่อยออกมา ทำลายวัตถุเซสชันผ่านแอตทริบิวต์การหมดเวลาหลีกเลี่ยงวัตถุเซสชันที่สร้างขึ้นในเซิร์ฟเวอร์โดยไม่มีข้อ จำกัด และปกป้องทรัพยากรเซิร์ฟเวอร์ อย่างไรก็ตามในการพัฒนาเครือข่ายที่เกิดขึ้นจริงมักพบว่ากระบวนการสมัครไม่สามารถทำให้เสร็จได้ตามปกติเนื่องจากความล้มเหลวของวัตถุเซสชันและการสูญเสียข้อมูลสถานะผู้ใช้
แม้ว่ากลยุทธ์ในการปล่อยทรัพยากรโดยใช้แอตทริบิวต์การหมดเวลามีวัตถุประสงค์เพื่อปกป้องเซิร์ฟเวอร์ แต่ความล้มเหลวที่คาดเดาไม่ได้ของวัตถุเซสชันได้กลายเป็นข้อเสียในการพัฒนาแอปพลิเคชัน ดังนั้นในการพัฒนาแอปพลิเคชันจริงปัญหาของความล้มเหลวของวัตถุเซสชันจะต้องแก้ไข
โซลูชั่นดั้งเดิม
โซลูชันที่มีอยู่ทั้งหมดนั้นใช้วิธีการฝั่งเซิร์ฟเวอร์เพื่อแก้ปัญหาความล้มเหลวของวัตถุเซสชัน วิธีการรักษาทั่วไปแบ่งออกเป็นสองประเภท: การรักษาก่อนความล้มเหลวและการรักษาหลังจากล้มเหลว
การประมวลผลก่อนความล้มเหลวหมายถึงการถ่ายโอนและการประมวลผลตัวแปรอื่น ๆ ก่อนที่วัตถุเซสชันจะหมดอายุเพื่อป้องกันปัญหาก่อนที่จะเกิดขึ้น วิธีแก้ปัญหาทั่วไปคือการตั้งค่าตัวจับเวลาในแอปพลิเคชันทริกเกอร์ตัวจับเวลา 5 นาทีก่อนที่วัตถุเซสชันจะล้มเหลวจากนั้นรีเซ็ตตัวแปรและวัตถุต่าง ๆ ของวัตถุเซสชัน วิธีนี้จะเพิ่มการโหลดเพิ่มเติมให้กับเซิร์ฟเวอร์เนื่องจากตัวจับเวลาจะต้องได้รับการบำรุงรักษาแบบเรียลไทม์บนฝั่งเซิร์ฟเวอร์และโปรแกรมจะต้องมั่นใจว่าจะใช้งานได้ตลอดทั้งเซสชัน
การประมวลผลหลังจากความล้มเหลวหมายถึงการแจ้งให้ผู้ใช้สามารถดำเนินการทันทีหลังจากวัตถุเซสชันหมดอายุ ทางออกทั่วไปคือการบันทึกจุดพักบนฝั่งเซิร์ฟเวอร์หลังจากวัตถุเซสชันล้มเหลวและแจ้งให้ผู้ใช้เข้าสู่ระบบอีกครั้งและดำเนินการต่อเพื่อทำงานให้เสร็จสมบูรณ์ วิธีนี้ใช้งานง่าย แต่มักจะถูกบ่นและถูกวิพากษ์วิจารณ์จากผู้ใช้ปลายทางเนื่องจากการกู้คืนจุดพักโดยอัตโนมัติที่ไม่สมบูรณ์และความซับซ้อนของกระบวนการ Login
ในการตอบสนองต่อข้อบกพร่องของโซลูชันสองประเภทข้างต้นในการฝึกการเขียนโปรแกรมผู้เขียนได้รวมคุณสมบัติของวัตถุคุกกี้และใช้วิธีการเข้าถึงตัวแปรระดับเซสชันร่วมกันในไคลเอนต์ซึ่งไม่เพียง แต่หลีกเลี่ยงความต้องการเซิร์ฟเวอร์เพิ่มเติม ทรัพยากร แต่ยังแก้ปัญหาปัญหาของจุดพักที่ไม่ได้รับการฟื้นฟูโดยอัตโนมัติและยังช่วยขจัดปัญหาการเข้าสู่ระบบอีกครั้ง
ทางออกใหม่
วัตถุคุกกี้เป็นแพ็คเก็ตข้อมูลขนาดเล็กที่เก็บข้อมูลเกี่ยวกับผู้ใช้ปัจจุบันซึ่งสามารถส่งผ่านระหว่างเบราว์เซอร์และเว็บเซิร์ฟเวอร์ ในเว็บแอปพลิเคชันคุกกี้มีกลไกสำหรับการติดตามและบันทึกตำแหน่งผู้ใช้แต่ละแห่ง หนึ่งในการใช้คุกกี้ที่พบบ่อยที่สุดคือการประหยัดเวลาและวันที่ของหน้าเว็บล่าสุดที่จะเข้าเยี่ยมชมในเว็บแอปพลิเคชันหรือ URL ที่จะเข้าชม
โดยปกติแล้ววัตถุคุกกี้จะถูกเก็บไว้ในไดเรกทอรีย่อยคุกกี้ในไดเรกทอรีระบบไคลเอนต์ Windows System เป็นไฟล์ ข้อมูลข้อมูลที่เก็บไว้ในวัตถุคุกกี้สามารถเก็บไว้ได้เป็นเวลานานดังนั้นตัวแปรระดับเซสชันสามารถสำรองได้ในวัตถุคุกกี้ วัตถุคุกกี้
วัตถุคุกกี้มีคุณสมบัติดังต่อไปนี้:
●หมดอายุ: ตั้งค่าวันที่เมื่อวัตถุคุกกี้หมดอายุ
●โดเมน: กำหนดการส่งผ่านของวัตถุคุกกี้ในฐานะสมาชิกที่กำหนดโดยแอตทริบิวต์โดเมนเท่านั้น
●เส้นทาง: กำหนดเส้นทางการส่งมอบของวัตถุคุกกี้
●ปลอดภัย: เพื่อชี้แจงว่าวัตถุคุกกี้ปลอดภัยหรือไม่
● Haskeys: ส่งคืนว่าวัตถุคุกกี้มีหลายค่าหรือไม่
หากคุณสมบัติหมดอายุของวัตถุคุกกี้ไม่ได้กำหนดไว้อย่างชัดเจนวัตถุคุกกี้จะหมดอายุในตอนท้ายของเซสชันผู้ใช้
อ่านและเขียนวัตถุผ่านการรวบรวมคำขอและการรวบรวมการตอบสนองใน ASP ไวยากรณ์สำหรับการเขียนตัวแปรไปยังวัตถุคุกกี้มีดังนี้:
response.cookies (คุกกี้) [(คีย์) | .attribute] = ค่า
โดยที่คุกกี้คือชื่อไฟล์คุกกี้คีย์หมายถึงองค์ประกอบพจนานุกรมแอตทริบิวต์เป็นลักษณะเฉพาะของคุกกี้และค่าคือค่าที่กำหนดให้กับคุกกี้ ตัวอย่างเช่นในการสร้างคุกกี้ที่เรียกว่า MyHobby และกำหนดค่าให้: บาสเก็ตบอลใช้ไวยากรณ์ต่อไปนี้:
< %response.cookies (myHobby) = บาสเก็ตบอล %>
วิธีการอ่านวัตถุคุกกี้บนเครื่องไคลเอนต์มีดังนี้:
request.cookies (คุกกี้) [(คีย์) | .attribute]
ในหมู่พวกเขาคุกกี้เป็นชื่อของคุกกี้ที่ร้องขอคีย์คือตัวห้อยของค่า subkey และแอตทริบิวต์จะใช้เพื่อระบุแอตทริบิวต์คุกกี้ ตัวอย่างเช่น: ในการดึงข้อมูลจากคุกกี้ที่เรียกว่า MyHobby และเขียนค่าลงในหน้าใช้ไวยากรณ์ต่อไปนี้:
< % request.cookies (myhobby) %>
ควรสังเกตว่าส่วนหัวหน้า HTTP ไม่สามารถเขียนลงในวัตถุคุกกี้ได้หลังจากที่หน้า HTTP ถูกส่งไปยังเบราว์เซอร์ที่ร้องขอ กล่าวอีกนัยหนึ่งข้อมูลคุกกี้ไม่สามารถส่งไปยังเบราว์เซอร์หลังจากตัวระบุ HTML ใด ๆ ถูกส่งไปยังเบราว์เซอร์
การใช้งานเฉพาะ
ต่อไปนี้คือการใช้งานห้องแชทที่ใช้เทคโนโลยี ASP เพื่อแนะนำวิธีจัดการกับปัญหาของความล้มเหลวของตัวแปรวัตถุเซสชัน
●ตัวแปรระดับเซสชันเริ่มต้นก่อนที่ผู้ใช้จะเข้าสู่ระบบ: ชื่อผู้ใช้ (ใช้เพื่อจัดเก็บชื่อผู้ใช้เข้าสู่ระบบ)
<%เซสชัน (ชื่อผู้ใช้) =%>
// เริ่มต้นวัตถุคุกกี้
< % response.cookies (ชื่อผู้ใช้) = %>
●เมื่อผู้ใช้เข้าสู่ระบบให้ตั้งค่าตัวแปรระดับเซสชันและสำรองข้อมูลไปยังวัตถุคุกกี้ไคลเอนต์
<%username = trim (request.for (ชื่อผู้ใช้))%>
< % เซสชัน (ชื่อผู้ใช้) = ชื่อผู้ใช้ %>
// สำรองตัวแปรระดับเซสชันไปยังวัตถุคุกกี้ไคลเอนต์
< % response.cookies (ชื่อผู้ใช้) = ชื่อผู้ใช้ %>
●เมื่อผู้ใช้พูดตัวแปรระดับเซสชันจะถูกอ่าน
< % username = เซสชัน (ชื่อผู้ใช้) %>
// หากตัวแปรหมดอายุให้ค้นหาวัตถุคุกกี้ไคลเอ็นต์
< % ถ้าชื่อผู้ใช้ = %>
< % username = request.cookies (ชื่อผู้ใช้) %>
< % ถ้าชื่อผู้ใช้ = %>
// หากผู้ใช้เข้าสู่ห้องแชทโดยไม่ต้องเข้าสู่ระบบค่าแอตทริบิวต์ของวัตถุคุกกี้จะว่างเปล่า ในเวลานี้ผู้ใช้จะได้รับแจ้งให้มีข้อผิดพลาดและหันไปที่หน้าเข้าสู่ระบบของผู้ใช้
< %response.redirect error.html %>
< % อื่น %>
// คืนค่าตัวแปรระดับเซสชันนี้จากวัตถุคุกกี้
< % เซสชัน (ชื่อผู้ใช้) = ชื่อผู้ใช้ %>
< % end ถ้า %>
< % end ถ้า %>
●เมื่อผู้ใช้ออกจากห้องแชทให้ล้างวัตถุระดับเซสชันและวัตถุคุกกี้
<%เซสชัน (ชื่อผู้ใช้) =%>
// ล้างค่าแอตทริบิวต์ของวัตถุคุกกี้เพื่อหลีกเลี่ยงผู้ใช้ที่เข้าสู่ห้องแชทโดยไม่ต้องเข้าสู่ระบบ
< % response.cookies (ชื่อผู้ใช้) = %>
รหัสด้านบนเรียกใช้และส่งผ่านในสภาพแวดล้อม Windows NT 4.0 + IIS 4.0 + IE 5.0
สรุป
วิธีการเข้าถึงตัวแปรระดับเซสชันในไคลเอนต์นั้นง่ายและใช้งานได้จริงและสามารถหลีกเลี่ยงปัญหาได้อย่างมีประสิทธิภาพเช่นการเข้าสู่ระบบโดยผู้ใช้