วิธีทำงานกับเซสชันใน ASP.Net

HTTP เป็นโปรโตคอลไร้สัญชาติ นี่หมายความว่าทุกครั้งที่มีการส่งคำขอใหม่จากไคลเอนต์ไปยังเซิร์ฟเวอร์ข้อมูลสถานะของคำขอก่อนหน้านี้จะหายไป มีหลายวิธีในการจัดเก็บและจัดการสถานะใน ASP.Net วัตถุเซสชันเป็นหนึ่งในนั้นส่วนอื่น ๆ คือวัตถุแคชและแอปพลิเคชัน

การแคชช่วยเพิ่มประสิทธิภาพของแอปพลิเคชันโดยลดการใช้ทรัพยากรในระบบของคุณให้น้อยที่สุด คุณสามารถจัดเก็บข้อมูลที่ใช้บ่อยหรือเว็บเพจเพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชันและปริมาณงานและความสามารถในการปรับขนาดได้โดยลดการใช้ทรัพยากรของเซิร์ฟเวอร์

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

โหมดการจัดเก็บข้อมูลเซสชัน

วัตถุเซสชันถูกสร้างและจัดการที่ฝั่งเซิร์ฟเวอร์ โหมดการจัดเก็บเซสชันจะกำหนดตำแหน่งที่ควรจัดเก็บข้อมูลเซสชันของคุณ สถานะเซสชันสามารถเก็บไว้ในโหมดใดโหมดหนึ่งต่อไปนี้:

  1. ใน - กระบวนการ: เก็บไว้ในกระบวนการ ASP.Net เดียวกัน
  2. เซิร์ฟเวอร์สถานะ: เก็บไว้ในระบบอื่น
  3. SQL Server: เก็บไว้ในฐานข้อมูล SQLServer
  4. กำหนดเอง: ช่วยให้คุณสามารถจัดเก็บข้อมูลเซสชันโดยใช้ผู้ให้บริการจัดเก็บข้อมูลที่กำหนดเอง

โหมดจัดเก็บข้อมูลเซสชันในโหมด In-Proc เป็นโหมดเริ่มต้นและยังเป็นโหมดที่เร็วที่สุดในบรรดาโหมดจัดเก็บข้อมูลที่มีอยู่ทั้งหมด ในโหมดนี้ข้อมูลเซสชันจะถูกเก็บไว้ในหน่วยความจำของเซิร์ฟเวอร์ - ภายในกระบวนการของผู้ปฏิบัติงาน ASP.Net คุณควรใช้โหมดนี้หากปริมาณข้อมูลที่ต้องจัดเก็บในเซสชันน้อยลงและหากคุณไม่ต้องการให้ข้อมูลคงอยู่ ควรสังเกตว่าข้อมูลเซสชันที่จัดเก็บในโหมดนี้มีความผันผวนกล่าวคือทันทีที่สิ้นสุดเซสชันข้อมูลเซสชันจะหายไป ดังนั้นข้อมูลในเซสชันจึงพร้อมใช้งานตราบเท่าที่เซสชันยังมีชีวิตอยู่

ในโหมด State Server ข้อมูลเซสชันจะถูกเก็บไว้ในกระบวนการแยกต่างหากซึ่งเรียกว่า ASP.Net State Service กล่าวอีกนัยหนึ่งข้อมูลเซสชันในโหมดนี้จะถูกเก็บไว้นอกกระบวนการของผู้ปฏิบัติงาน ASP.Net หรือพูลแอปพลิเคชันใน IIS ไม่เหมือนกับโหมด In-Proc ข้อมูลเซสชันในโหมดเซิร์ฟเวอร์ของรัฐจะถูกเก็บรักษาไว้กล่าวคือจะไม่สูญหายไปหลังจากที่เว็บแอปพลิเคชันของคุณเริ่มต้นใหม่

ข้อมูลโค้ดต่อไปนี้แสดงให้เห็นว่าคุณสามารถกำหนดค่าสถานะเซสชันในแอปพลิเคชันของคุณเพื่อจัดเก็บในโหมดนี้ได้อย่างไร

 

   

      stateConnectionString="tcpip=Server:1234"

      cookieless="false"

      timeout="20"/>

 

The SQLServer mode of session data storage is used to persist session data of your application in the SQLServer database. Similar to the State Server mode of session data storage, the SQLServer mode also enables you to persist session data of your application across application restarts. Note that you should ensure that the ASP.Net session state database is created before using this mode. You can create this database using the Aspnet_regsql.exe command line utility.

The following code snippet shows how you can configure your application to store session data in a SQLServer database.

 

   

       sqlConnectionString="data source=server;user id=joydip;[email protected]"

       cookieless="false" timeout="20" />

 

Support for Session data compression

Microsoft's ASP.Net 4 introduced a new feature: session state compression. With ASP.Net 4 and onward, you can leverage this built-in feature to compress session data for storing out-of-process sessions. To take advantage of this feature, all you need to do is set the compressionEnabled attribute to "true" in the configuration file of your application. The following code snippet illustrates how this can be configured.

  mode="SQLServer"

  stateConnectionString="some connection string..."

  compressionEnabled="true"/>

Session state enables you to store user specific data in the memory and identify a particular request uniquely.  Session data is stored as key/value pairs in the SessionStateItemCollection and can be accessed using the HttpContext.Session property.

The following code examples show how you can store and retrieve session data.

HttpSessionState.Session["UserName"] = "John"; //stores session data

string str = HttpSessionState.Session["UserName"].ToString();

// Retrieves session data

HttpSessionState.Remove("Key to remove");

//Removes an object from the session state