อะไรคือความแตกต่างระหว่าง SessionState และ ViewState?


คำตอบ:


143

สถานะเซสชันมีข้อมูลที่เกี่ยวข้องกับเซสชันเฉพาะ (โดยไคลเอนต์ / เบราว์เซอร์ / เครื่องเฉพาะ) กับเซิร์ฟเวอร์ เป็นวิธีติดตามสิ่งที่ผู้ใช้กำลังทำบนไซต์ .. ในหลาย ๆ หน้า ... ท่ามกลางความไร้รัฐของเว็บ เช่นเนื้อหาในตะกร้าสินค้าของผู้ใช้เป็นข้อมูลเซสชัน สามารถใช้คุกกี้สำหรับสถานะเซสชันได้ ในทางกลับกัน
View Stateเป็นข้อมูลเฉพาะสำหรับหน้าเว็บเฉพาะ จะถูกเก็บไว้ในช่องที่ซ่อนไว้เพื่อให้ผู้ใช้มองไม่เห็น มันถูกใช้เพื่อรักษาภาพลวงตาของผู้ใช้ว่าเพจจะจดจำสิ่งที่เขาทำในครั้งสุดท้าย - อย่าให้หน้าที่สะอาดทุกครั้งที่เขาโพสต์กลับ ตรวจสอบหน้านี้มานาน


96

สถานะเซสชันถูกบันทึกบนเซิร์ฟเวอร์ ViewState จะถูกบันทึกไว้ในเพจ

โดยปกติสถานะเซสชันจะถูกล้างหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่งจากผู้ใช้ (ไม่มีการร้องขอใด ๆ ที่มีรหัสเซสชันในคุกกี้คำขอ)

สถานะการดูถูกโพสต์ในโพสต์ที่ตามมาในฟิลด์ที่ซ่อนอยู่


30
+1 ใช่ - จุดสำคัญที่ ViewState เดินทางขึ้นและลงระหว่างไคลเอนต์และเซิร์ฟเวอร์ แต่ SessionState ยังคงอยู่บนเซิร์ฟเวอร์
Gordon Mackie JoanMiro

1
นี่น่าจะเป็นคำตอบอย่างเป็นทางการ
Fandango68

33

sessionState

  • สามารถคงอยู่ในหน่วยความจำซึ่งทำให้เป็นโซลูชันที่รวดเร็ว ซึ่งหมายความว่าไม่สามารถแชร์สถานะใน Web Farm / Web Garden ได้
  • สามารถคงอยู่ในฐานข้อมูลซึ่งมีประโยชน์สำหรับ Web Farms / Web Gardens
  • จะถูกล้างเมื่อเซสชันตาย - โดยปกติหลังจากไม่มีการใช้งาน 20 นาที

ViewState

  • ถูกส่งไปมาระหว่างเซิร์ฟเวอร์และไคลเอนต์โดยใช้แบนด์วิดท์
  • ไม่มีวันหมดอายุ.
  • มีประโยชน์ใน Web Farm / Web Garden

14

การใช้งาน: หากคุณต้องการจัดเก็บข้อมูลที่ต้องการเข้าถึงบนหน้าเว็บต่างๆคุณสามารถใช้ SessionState

หากคุณต้องการจัดเก็บข้อมูลที่คุณต้องการเข้าถึงจากเพจเดียวกันคุณสามารถใช้ Viewstate

ที่เก็บข้อมูล Viewstate ถูกจัดเก็บไว้ในเพจนั้นเอง (ในข้อความที่เข้ารหัส) ในขณะที่ Sessionstate ถูกเก็บไว้ในเซิร์ฟเวอร์

SessionState จะล้างในเงื่อนไขต่อไปนี้

  1. เคลียร์โดยโปรแกรมเมอร์
  2. เคลียร์โดยผู้ใช้
  3. หมดเวลา

5
ViewStates ไม่ได้เข้ารหัส พวกเขามองไปทางนั้น แต่สามารถถอดรหัสได้อย่างง่ายดาย
Vandel212

5

เซสชันส่วนใหญ่ใช้ในการจัดเก็บข้อมูลเฉพาะของผู้ใช้ [ข้อมูลเฉพาะเซสชัน] ในกรณีของเซสชันคุณสามารถใช้ค่าสำหรับทั้งเซสชันได้จนกว่าเซสชันจะหมดอายุหรือผู้ใช้ละทิ้งเซสชัน Viewstate คือประเภทของข้อมูลที่มีขอบเขตเฉพาะในหน้าที่ใช้ข้อมูลนั้น คุณสามารถมีค่าวิวสเตทที่เข้าถึงได้ในหน้าอื่น ๆ เว้นแต่คุณจะโอนค่าเหล่านั้นไปยังหน้าที่ต้องการ นอกจากนี้ในกรณีของ viewstate ข้อมูลการควบคุมฝั่งเซิร์ฟเวอร์ทั้งหมดจะถูกโอนไปยังเซิร์ฟเวอร์เป็นคู่ค่าคีย์ใน __Viewstate และถ่ายโอนกลับและแสดงผลไปยังตัวควบคุมที่เหมาะสมในไคลเอนต์เมื่อเกิดการโพสต์แบ็ค

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.