כיצד לעבוד עם Sessions ב- ASP.Net

HTTP הוא פרוטוקול חסר מדינה. זה מרמז שבכל פעם שנשלחת בקשה חדשה מהלקוח לשרת, המידע על המצב של הבקשה הקודמת אבד. ישנן מספר דרכים לאחסן ולנהל את המצב ב- ASP.Net. אובייקט מושב הוא אחד מהם, והאחרים הם אובייקטים במטמון ויישום.

Caching משפר את ביצועי היישום על ידי מזעור צריכת המשאבים במערכת שלך. באפשרותך לאחסן נתונים או דפי אינטרנט שנמצאים בשימוש תכוף כדי לשפר את ביצועי היישום ותפוקתו ומדרגיותם על ידי הקטנת צריכת משאבי השרת.

ניתן להגדיר הפעלה כמפגש קישוריות בין השרת ללקוח - אובייקט ההפעלה מחזיק נתונים המתאימים להפעלה של משתמש. מושב הוא טכניקת ניהול מצב בצד השרת המשמשת לאחסון מידע ספציפי למשתמש בזיכרון לאחזור מאוחר יותר.

מצבי אחסון נתוני הפעלה

אובייקט ההפעלה נוצר ומנוהל בצד השרת. מצב אחסון מושב קובע היכן יש לאחסן את נתוני ההפעלה שלך. ניתן לאחסן מצב מושב באחד מהמצבים הבאים:

  1. בתהליך: מאוחסן באותו תהליך ASP.Net
  2. שרת מדינה: מאוחסן במערכת אחרת
  3. שרת SQL: מאוחסן במסד הנתונים של SQLServer
  4. מותאם אישית: זה מאפשר לך לאחסן נתוני הפעלות באמצעות ספק אחסון מותאם אישית

מצב ה- In-Proc של אחסון נתוני הפעלות הוא מצב ברירת המחדל והוא גם המהיר ביותר מבין כל מצבי האחסון הזמינים. במצב זה, נתוני ההפעלה נשמרים בזיכרון השרת - בתוך תהליך העובד של ASP.Net. עליך להשתמש במצב זה אם כמות הנתונים שצריכה להיות מאוחסנת בהפעלה קטנה ואם אינך זקוק לנתונים להתמיד. יש לציין שנתוני ההפעלה המאוחסנים במצב זה הם תנודיים, כלומר ברגע שהסיום מסתיים נתוני ההפעלה אבדו. לכן, הנתונים בפגישה זמינים כל עוד הפגישה חיה.

במצב שרת המדינה, נתוני ההפעלה נשמרים בתהליך נפרד - זה נקרא שירות המדינה ASP.Net. במילים אחרות, נתוני הפעלות במצב זה נשמרים מחוץ לתהליך העובד 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