Megosztás a következőn keresztül:


Hogyan befolyásolja az adatok szerializálása egy alkalmazásfrissítést?

Egy folyamatban lévő alkalmazásfrissítésben a frissítés a csomópontok egy részhalmazára, egyszerre egy frissítési tartományra lesz alkalmazva. A folyamat során egyes frissítési tartományok az alkalmazás újabb verzióján találhatók, egyes frissítési tartományok pedig az alkalmazás régebbi verzióján találhatók. A bevezetés során az alkalmazás új verziójának képesnek kell lennie az adatok régi verziójának olvasására, és az alkalmazás régi verziójának képesnek kell lennie az adatok új verziójának olvasására. Ha az adatformátum nem továbbítható és visszamenőleges kompatibilis, előfordulhat, hogy a frissítés sikertelen vagy rosszabb, az adatok elveszhetnek vagy megsérülhetnek. Ez a cikk ismerteti az adatformátumot, és ajánlott eljárásokat kínál annak biztosításához, hogy az adatok továbbítása és visszamenőleges kompatibilitása biztosított legyen.

Mi teszi ki az adatformátumot?

Az Azure Service Fabricben a megőrzött és replikált adatok a C#-osztályokból származnak. A Reliable Collectionst használó alkalmazások esetében ez az adat a megbízható szótárak és üzenetsorok objektumai. A Reliable Actorst használó alkalmazások esetében ez a háttérállapot a szereplő számára. Ezeknek a C#-osztályoknak szerializálhatónak kell lenniük a megőrzéséhez és replikálásához. Ezért az adatformátumot a szerializált mezők és tulajdonságok határozzák meg, valamint azok szerializálásának módját. Például egy IReliableDictionary<int, MyClass> adatban szerializált int és szerializált MyClass.

Adatformátum-módosítást eredményező kódmódosítások

Mivel az adatformátumot C#-osztályok határozzák meg, az osztályok módosítása adatformátum-változást okozhat. Ügyelni kell arra, hogy egy gördülő frissítés kezelni tudja az adatformátum-módosítást. Példák az adatformátum módosítására:

  • Mezők vagy tulajdonságok hozzáadása vagy eltávolítása
  • Mezők vagy tulajdonságok átnevezése
  • A mezők vagy tulajdonságok típusainak módosítása
  • Az osztálynév vagy a névtér módosítása

Adatszerződés alapértelmezett szerializálóként

A szerializáló feladata általában az adatok olvasása és deszerializálása az aktuális verzióba, még akkor is, ha az adatok régebbi vagy újabb verzióban találhatóak. Az alapértelmezett szerializáló az adatszerződés szerializálója, amely jól definiált verziószámozási szabályokkal rendelkezik. A Megbízható gyűjtemények lehetővé teszik a szerializáló felülbírálása, de a Reliable Actors jelenleg nem. Az adatszerializáló fontos szerepet játszik a működés közbeni frissítések engedélyezésében. A Data Contract szerializáló a Service Fabric-alkalmazásokhoz ajánlott szerializáló.

Az adatformátum hatása egy folyamatban lévő frissítésre

Egy gördülő frissítés során két fő forgatókönyv létezik, amikor a szerializáló az adatok egy régebbi vagy újabb verzióját tapasztalhatja:

  1. A csomópont frissítése és a biztonsági mentés megkezdése után az új szerializáló betölti azokat az adatokat, amelyeket a régi verzió megőrizett a lemezen.
  2. A működés közbeni frissítés során a fürt a kód régi és új verzióinak kombinációját fogja tartalmazni. Mivel a replikák különböző frissítési tartományokba helyezhetők, és a replikák adatokat küldenek egymásnak, előfordulhat, hogy az adatok új és/vagy régi verzióját a szerializáló új és/vagy régi verziója észleli.

Megjegyzés

Az "új verzió" és a "régi verzió" itt a kód futó verziójára hivatkozik. Az "új szerializáló" az alkalmazás új verziójában futó szerializáló kódra utal. Az "új adatok" az alkalmazás új verziójából származó szerializált C#-osztályra utalnak.

A kód és az adatformátum két verziójának előre és hátra kompatibilisnek kell lennie. Ha nem kompatibilisek, a működés közbeni frissítés meghiúsulhat, vagy adatvesztés történhet. A működés közbeni frissítés meghiúsulhat, mert a kód vagy szerializáló kivételeket vagy hibát okozhat, amikor a másik verzióval találkozik. Az adatok elveszhetnek, ha például hozzáadtak egy új tulajdonságot, de a régi szerializáló elveti azokat a deszerializálás során.

Az Adatszerződés az ajánlott megoldás az adatok kompatibilitásának biztosítására. A mezők hozzáadására, eltávolítására és módosítására vonatkozó, jól definiált verziószámozási szabályokkal rendelkezik. Emellett támogatja az ismeretlen mezők kezelését, a szerializálási és deszerializálási folyamathoz való csatlakoztatást, valamint az osztályöröklés kezelését. További információ: Adatszerződés használata.

Következő lépések

Az alkalmazás Visual Studio használatával történő frissítése végigvezeti a Visual Studióval végzett alkalmazásfrissítésen.

Az alkalmazás PowerShell-lel történő frissítése végigvezeti a PowerShell használatával végzett alkalmazásfrissítésen.

A frissítési paraméterek használatával szabályozhatja az alkalmazás frissítési módját.

A speciális témakörökre hivatkozva megtudhatja, hogyan használhatja a speciális funkciókat az alkalmazás frissítése során.

Az alkalmazásfrissítések gyakori problémáinak megoldásához kövesse az alkalmazásfrissítések hibaelhárítása című témakör lépéseit.