Árnyékmásoló szerelvények

Megjegyzés:

Ez a cikk a .NET-keretrendszerre vonatkozik. Ez nem vonatkozik a .NET újabb implementációira, beleértve a .NET 6-os és újabb verzióit.

Az árnyékmásolás lehetővé teszi az alkalmazástartományban használt szerelvények frissítését az alkalmazástartomány eltávolítása nélkül. Ez különösen olyan alkalmazások esetében hasznos, amelyeknek folyamatosan elérhetőnek kell lenniük, például ASP.NET webhelyek esetében.

Fontos

Az árnyékmásolás nem támogatott a Windows 8.x Áruházbeli alkalmazásokban.

A közös nyelvi futtatókörnyezet zárol egy szerelvényfájlt a szerelvény betöltésekor, így a fájl nem frissíthető a szerelvény kiürítéséig. Egy szerelvényt csak úgy távolíthat el egy alkalmazástartományból, ha eltávolítja az alkalmazástartományt, ezért normál körülmények között a szerelvény nem frissíthető a lemezen, amíg az azt használó összes alkalmazástartományt ki nem ürítik.

Ha egy alkalmazástartomány árnyékmásolat-fájlokra van konfigurálva, a rendszer az alkalmazás elérési útján lévő szerelvényeket egy másik helyre másolja, és onnan tölti be. A másolat zárolva van, de az eredeti szerelvényfájl feloldva van, és frissíthető.

Fontos

A csak árnyékmásolatként másolható szerelvények azok, amelyek az alkalmazáskönyvtárban vagy annak alkönyvtáraiban vannak tárolva, és amelyeket a ApplicationBase és PrivateBinPath tulajdonságok határoznak meg, amikor az alkalmazási tartomány konfigurálva van. A globális összeállítási gyorsítótárban tárolt szerelvények nincsenek árnyékként másolva.

Ez a cikk a következő szakaszokat tartalmazza:

Árnyékmásolás engedélyezése és használata

A AppDomainSetup osztály tulajdonságainak felhasználásával az alkalmazási tartomány az árnyékmásolásra az alábbiak szerint konfigurálható:

  • Az árnyékmásolás engedélyezéséhez állítsa a ShadowCopyFiles tulajdonságot a sztringértékre "true".

    Alapértelmezés szerint ez a beállítás azt eredményezi, hogy az alkalmazás útvonalán lévő összes szerelvény át lesz másolva a letöltési tárba, mielőtt betöltődnének. Ez ugyanaz a gyorsítótár, amelyet a közös nyelvi futtatókörnyezet tart fenn a más számítógépekről letöltött fájlok tárolásához, és a közös nyelvi futtatókörnyezet automatikusan törli a fájlokat, ha már nincs rájuk szükség.

  • Az CachePath és ApplicationName tulajdonságok használatával opcionálisan beállíthatja az árnyékmásolt fájlok egyéni tárolási helyét.

    Az elérési út alapját úgy alakítjuk ki, hogy a ApplicationName tulajdonságot a CachePath tulajdonság alkönyvtáraként összefűzzük. Az összeállításokat árnyékmásolatban az elérési út alkönyvtáraiba helyezik, nem az alapútvonalhoz.

    Megjegyzés:

    Ha a ApplicationName tulajdonság nincs beállítva, a rendszer figyelmen kívül hagyja a CachePath tulajdonságot, és a letöltési gyorsítótárat használja. Nincs kivétel.

    Ha egyéni helyet ad meg, önnek kell megtisztítaniuk a könyvtárakat és a másolt fájlokat, ha már nincs rájuk szükség. A rendszer nem törli őket automatikusan.

    Néhány oka lehet annak, hogy érdemes egyéni helyet beállítani az árnyékmásolatú fájlokhoz. Ha az alkalmazás nagy számú példányt hoz létre, érdemes lehet egyéni helyet beállítani az árnyékmásolatú fájlokhoz. A letöltési gyorsítótár mérete, nem élettartam szerint van korlátozva, ezért lehetséges, hogy a közös nyelvi futtatókörnyezet megpróbál törölni egy még használatban lévő fájlt. Az egyéni hely beállításának másik oka, hogy az alkalmazást futtató felhasználók nem rendelkeznek írási hozzáféréssel ahhoz a könyvtárhelyhez, amelyet a közös nyelvi futtatókörnyezet a letöltési gyorsítótárhoz használ.

  • Igény szerint korlátozhatja az árnyékmásolt összeállításokat a ShadowCopyDirectories tulajdonság használatával.

    Ha engedélyezi az árnyékmásolást egy alkalmazástartományban, az alapértelmezett beállítás az, hogy az alkalmazás elérési útjának összes szerelvényét – azaz a ApplicationBase és PrivateBinPath tulajdonságok által megadott könyvtárakban – másolja. A másolást a kijelölt könyvtárakra korlátozhatja, ha létrehoz egy sztringet, amely csak az árnyékmásolatolni kívánt könyvtárakat tartalmazza, és hozzárendeli a sztringet a ShadowCopyDirectories tulajdonsághoz. Válassza el a könyvtárakat pontosvesszőkkel. Csak azok a szerelvények készülnek árnyékmásolatként, amelyek a kijelölt könyvtárakban találhatók.

    Megjegyzés:

    Ha nem rendel egy karakterláncot a ShadowCopyDirectories tulajdonsághoz, vagy ha ezt a tulajdonságot null értékre állítja, akkor a ApplicationBase és PrivateBinPath tulajdonságok által meghatározott könyvtárakban található összes szerelvényt árnyékmásolatra másolja.

    Fontos

    A címtár elérési útjai nem tartalmazhatnak pontosvesszőket, mert a pontosvessző az elválasztó karakter. Pontosvesszőkhöz nincs feloldó karakter.

Indítási teljesítmény

Amikor elindul egy árnyékmásolást használó alkalmazástartomány, a rendszer késlelteti az alkalmazáskönyvtárban lévő szerelvények másolását az árnyékmásolat-könyvtárba, vagy ellenőrzi, hogy már ezen a helyen vannak-e. A .NET-keretrendszer 4. verziója előtt a rendszer az összes szerelvényt átmásolta egy ideiglenes könyvtárba. Minden egyes szerelvény meg lett nyitva a szerelvény nevének ellenőrzéséhez, és az erős név ellenőrzése megtörtént. Minden egyes szerelvényt ellenőriztek, hogy van-e újabb frissítés, mint az árnyékmásolat könyvtárában lévő változatnál. Ha igen, az árnyékmásolat könyvtárba lett másolva. Végül az ideiglenes másolatok elvetve lettek.

A .NET-keretrendszer 4-től kezdődően az alapértelmezett indítási viselkedés az, hogy közvetlenül összehasonlítja az alkalmazáskönyvtárban lévő egyes szerelvények fájldátumát és idejét az árnyékmásolat-könyvtárban található másolat fájldátumával és időpontjával. Ha az összeállítás frissült, a rendszer ugyanazt az eljárást használja, mint a .NET-keretrendszer korábbi verzióiban; ellenkező esetben az árnyékmásolat-könyvtárban lévő másolat betöltődik.

Az eredményül kapott teljesítménynövekedés az olyan alkalmazások esetében a legnagyobb, amelyekben a szerelvények nem változnak gyakran, és a módosítások általában a szerelvények egy kis részhalmazában fordulnak elő. Ha egy alkalmazás szerelvények többsége gyakran változik, az új alapértelmezett viselkedés teljesítményregressziót okozhat. A .NET-keretrendszer korábbi verzióinak indítási viselkedését úgy állíthatja vissza, hogy hozzáadja az <shadowCopyVerifyByTimestamp> elemet a konfigurációs fájlhoz a következővel enabled="false": .

Elavult módszerek

Az AppDomain osztály számos metódussal rendelkezik, például SetShadowCopyFiles az ClearShadowCopyPathárnyékmásolatok alkalmazástartományon történő szabályozására, de ezek elavultnak lettek megjelölve a .NET-keretrendszer 2.0-s verziójában. Az alkalmazástartomány árnyékmásolathoz való konfigurálásának ajánlott módja az AppDomainSetup osztály tulajdonságainak használata.

Lásd még