Π Π°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ΅Π°Π½ΡΠΎΠΌ
Π ASP.NET ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΡΠΈΠΏΠ° HttpApplicationState. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (ΠΈ Π²ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡ), Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ASP.NET. ΠΡΠΈ ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ·Π»Π°, Π½ΠΎ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡ Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅Π°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠ°ΡΠ°ΡΡΠ΅ΠΉΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ²Π°ΡΠΎΠ² Π² ΠΊΠΎΡΠ·ΠΈΠ½Π΅ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ). ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅Π°Π½ΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° HttpSessionState. ΠΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Web-ΠΏΡΠΈΠ»ΠΎ-ΠΆΠ΅Π½ΠΈΠΈ ASP.NET ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Π·Π½Π°ΡΠΈΡ ΡΡΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½ΠΎΠ²ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (ID) ΡΠ΅Π°Π½ΡΠ°, Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΡΠ΅ΠΊΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅ 20 ΠΌΠΈΠ½ΡΡ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠ»ΠΈ Π½Π° Π²Π°ΡΠ΅ΠΌ ΡΠ·Π»Π΅ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΡΡ 20000 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ 20000 ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² HttpSessionState, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½ ΡΠ²ΠΎΠΉ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ΅Π°Π½ΡΠ°. Π‘Ρ Π΅ΠΌΠ° Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Web-ΡΠ΅Π°Π½ΡΠ°ΠΌΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠΈΡ. 24.3.
Π ΠΈΡ. 24.3. ΠΠ·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΅Π³ΠΎ ΡΠ΅Π°Π½ΡΠΎΠ²
ΠΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ASP Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅Π°Π½ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Application ΠΈ Session). Π ASP.NET ΡΠΈΠΏΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ ΠΎΡ Page. ΠΊΠ°ΠΊ ΠΈ ΡΠΈΠΏ HttpApplication, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ (Ρ.Π΅. Application ΠΈ Session), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΠΈΠΏΠ°ΠΌ HttpApplicationState ΠΈ HttpSessionState.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π°Π½Π½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π’ΠΈΠΏ HttpApplicationState ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ΅Π°Π½ΡΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ASP.NET. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π²ΡΠ΅ΠΌΠΈ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠΈΠΉ ΡΠΈΠΏ DataSet, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΡΠ°Π½ΠΈΡ, ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΡ , Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΠΈΠΏΠ° HttpApplicationState ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΡΡ Π² ΡΠ°Π±Π». 24.3.
Π’Π°Π±Π»ΠΈΡΠ° 24.3. Π§Π»Π΅Π½Ρ ΡΠΈΠΏΠ° HttpApplicationState
Π§Π»Π΅Π½Ρ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ AllKeys Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅Π΅ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΏΠΎΠ² System.String, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ Π²ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠΈΠΏΠ° HttpApplicationState Count Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΠΈΠΏΠ΅ HttpApplicationState Add() ΠΠ΅ΡΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΡΡ "ΠΈΠΌΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅" Π² ΡΠΈΠΏ HttpApplicationState. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅Π΄ΠΊΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡΠ΄Π°Π΅ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΎΡΡ ΠΊΠ»Π°ΡΡΠ° HttpApplicationState Clear() ΠΠ΅ΡΠΎΠ΄, ΡΠ΄Π°Π»ΡΡΡΠΈΠΉ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΡΠΈΠΏΠ° HttpApplicationState. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄Ρ RemoveAll() Lock() Unlock() ΠΡΠΈ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°Π±ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅Π΅Π½ΡΠ΅ΡΠ°Π±Π΅Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ RemoveAll() Remove() RemoveAt() ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΄Π°Π»ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° HttpApplicationState (ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ RemoveAt(), Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΎΡΠ°)ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»Π΅Π½ΠΎΠ²-Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΡΠ΅ΠΌ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠ΅Π°Π½ΡΠ°ΠΌ, Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Ρ ΠΈΠΌΠ΅Π½ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ Application_Start() ΡΠΈΠΏΠ°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡ HttpApplication, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
void Application_Start(Object sender, EventArgs e) {
// Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Application["SalesPersonOfTheMonth"] = "Chucky";
Application["CurrentCarOnSale"] = "Colt";
Application["MostPopularColorOnLot"] = "ΡΠ΅ΡΠ½ΡΠΉ";
}
Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Ρ.Π΅. ΠΏΠΎΠΊΠ° Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡΠΎ Π²ΡΡΡΠ½ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΈΡΡΠ΅ΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ) Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π½Π° Π»ΡΠ±ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅) ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎ ΡΠ΅Π»ΡΠΊΡ ΠΌΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π² ΠΏΠΎΠ»Π΅ Label ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Π΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΡΠΎ ΡΠΊΠΈΠ΄ΠΊΠΎΠΉ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ.
protected void btnShowCarDiscunt_Click(object Sender, EventArgs e) {
// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ System.Object ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ
// Π² System.String!
lblCurrCarOnSale.Text = (string)Application["CurrentCarOnSale"];
}
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ViewState, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ ΡΠΈΠΏΠΎΠΌ HttpApplicationState, Π² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΈΠΏ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΈΠΏ HttpApplicationState ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ·Π»Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠΈΠΏΡ (ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π»ΡΠ±ΡΠ΅ ΡΠΈΠΏΡ .NET).
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ASP.NET Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ AppState. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠΈ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ CarLotlInfo.
public class CarLotInfo {
public CarLotInfo(string s, string c, string m) {
salesPersonOfTheMonth = s;
currentCarOnSale = c;
mostPopularColorOnLot = m;
}
// ΠΡΠΊΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π΄ΠΎΡΡΡΠΏΠ°.
public string salesPersonOfTheMonth;
public string currentCarOnSale;
public string mostPopularColorOnLot;
}
Π‘ ΡΡΠΈΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ Application_Start() ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π½ΠΈΠΆΠ΅:
protected void Application_Start(Object sender, EventArgs e)
// Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
// Π² ΡΠ΅ΠΊΡΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Application["CarSiteInfo"] = new CarLotInfo("Chucky", "Colt" "ΡΠ΅ΡΠ½ΡΠΉ");
}
Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΠΊΡΡΡΡΡ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°Π½Π½ΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ°.
protected void btnShowAppVariables_Click(object sender, EventArgs e) {
CarLotInfo appVars = ((CarLotInfo)Application["CarSiteInfo"]);
string appState = string.Format("βΉliβΊΠΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠ°Ρ ΠΌΠ°ΡΠΈΠ½Π°: [0]βΉ/liβΊ", appVars.currentCarOnSale);
appState += string.Format("βΉliβΊΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΠ²Π΅Ρ: {0}βΉ/liβΊ", appVars.mostPopularColorOnLot);
appState += string.Format ("βΉliβΊΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΠΏΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΄Π°Π²Π΅Ρ: {0}βΉ/liβΊ", appVars.salesPersonOfTheMonth);
lblAppVariables.Text = appState;
}
ΠΡΠΊΡΡΠ² ΡΠ΅ΠΉΡΠ°Ρ ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅, ΡΡΠΎ Π² ΠΏΠΎΠ»Π΅ ΡΠΈΠΏΠ° Label ΡΡΡΠ°Π½ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΡΡΠΎΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π Ρ ΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΠΈΠΏΠ° HttpApplicationState Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π»ΡΠ±ΡΠ΅ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Remove(). Π§ΡΠΎΠ±Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ RemoveAll().
private void CleanAppData() {
// Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ.
Application.Remove("SomeItemIDontNeed");
// Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Application.RemoveAll();
}
Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²Π°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ Button, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠΌΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄Π°ΡΠ»ΠΈΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄Π°Π²ΡΠ°. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ Click Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ.
protected void btnSetNewSP_Click(object sender, EventArgs e) {
// Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠ΄Π°Π²ΡΠ°.
((CarLotInfo)Application["CarSiteInfo"]).salesPersonOfTheMonth = txtNewSP.Text;
}
ΠΠ°ΠΏΡΡΡΠΈΠ² ΡΡΠΎ Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°. Π ΡΠΎΠΌΡ ΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ΅Π°Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Web-Π±ΡΠ°ΡΠ·Π΅ΡΠ°, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΄Π°Π²ΡΠ° ΠΎΠ΄Π½ΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΏΠΎΡΠ»Π΅ Π²ΡΠΎΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠΎΠΆΠ΅ ΠΎΡΠΎΠ±ΡΠ°Π·ΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π² ΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅, Π΅ΡΡΡ ΡΠΈΡΠΊ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π½ΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ° ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ). ΠΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΠΎΠΉΡΠΈ Π΄Π»ΠΈΠ½Π½ΡΠΌ ΠΏΡΡΠ΅ΠΌ ΠΈ Π²ΡΡΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ· ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ System.Threading, Π½ΠΎ ΡΠΈΠΏ HttpApplicationState ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π°, Lock() ΠΈ Unlock(), ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ.