HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Webes alkalmazás adatainak zárolása


Példaprogram letöltése

10344 bájt

Tartozzon alkalmazásunkhoz mondjuk két adat. E két adat függjön össze egymással, vagyis ha az egyiket módosítjuk, akkor a másiknak is módosulnia kelljen az előző függvényében. Mivel a webes alkalmazásunkhoz bármelyik pillanatban érkezhet kérés, így előfordulhat a következő eset: az egyik kérés kiszolgálása közben, amikor még csak az egyik változónk módosult, érkezik egy másik kérés, mely szintén módosítani akarja a változókat. Így mire az első kérést kiszolgáló rész a második változóhoz érne, addigra már lehet, hogy az első változó tartalma teljesen más lenne, ami bizonyos esetekben hibához vezet.
Ennek elkerülése végett zárolnunk kell az alkalmazásunkat arra az időre, amíg e két változó értéke módosul, így nem fordulhat elő a fenti eset.

Mellékelt példa megnyitása előtt szükséges egy AppLock nevű virtuális könyvtár létrehozása, mely a mellékelt példa könyvtárára mutat. Ehhez nyissa meg a mellékelt mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
A mellékelt példa kipróbálásához a következő lépésekre van szükség:
  • Futtassa a programot
  • Indítson még egy böngészőt és abba szintén ezt az alkalmazást töltse be: http://localhost/AppLock/WebForm1.aspx
  • Változtasson értéket Change gomb segítségével az egyik böngészőben
  • Zárolja az alkalmazás adatait a Lock gomb segítségével
  • 8 másodpercen belül lépjen át a másik böngészőbe és nyomja meg a Reload gombot. Ez a böngésző nem tud mindaddig frissíteni, amíg a másik böngészőben futó kérés nem oldja fel a zárolást.
Zároláshoz az Application osztály Lock függvénye, míg a zár feloldásához az Unlock függvénye szolgál. Amikor olyan változókat módosítunk, mely alkalmazás szintűek, akkor célszerű zárolni, majd a módosítás után feloldani ezt a zárat. Így egy esetlegesen érkező új kérés nem férhet hozzá a változókhoz, amíg a feloldás nem történik meg. Ez azonban azzal jár, hogy addig e másik kérés nem is lesz kiszolgálva, így a lehető legrövidebb ideig tartsuk fent a lezárt állapotot.
      Application.Lock();
      try
      {
        Application["In"] = (int)Application["In"] + 1;
        Application["Out"] = (int)Application["Out"] - 1;
      }
      finally
      {
        Application.UnLock();
      }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 452. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |