Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
MessagePack egy kompakt bináris szerializálási formátum, amely kisebb üzenetméretet eredményez a JSON-hoz és az XML-hez képest. A nyílt forráskód MessagePack for C#-kódtár nagy teljesítményű, és beépített szupergyors LZ4-tömörítést biztosít még kisebb adatmérethez. Ez akkor működik a legjobban, ha az adattípusok vagy a tár saját attribútumaival DataContractSerializer vannak széljegyzetekkel elfűzve. Konfigurálható AOT-környezetek, nem nyilvános típusok és tagok, valamint írásvédett típusok és tagok támogatására.
A C#-hoz készült MessagePack néhány viselkedése és funkciója figyelemre méltó lesz a migrálás BinaryFormattersorán, különösen akkor, ha a szerializált típusok API-jait nem lehet módosítani, vagy minimalizálni kell.
Alapértelmezés szerint csak a nyilvános típusok szerializálhatók. A privát és belső szerkezetek és osztályok csak akkor szerializálhatók, ha
StandardResolverAllowPrivate.Optionsargumentumként ésMessagePackSerializer.Serializemetódusként szolgálnakMessagePackSerializer.Deserialize.A MessagePack megköveteli, hogy minden szerializálható típushoz hozzá kell fűzni az
[MessagePackObject]attribútumot. Ezt elkerülheti a ContractlessStandardResolver használatával, de a jövőben problémákat okozhat a verziószámozással kapcsolatban.Minden szerializálható nem statikus mezőt és tulajdonságot hozzá kell fűzni az
[Key]attribútumhoz. Ha az attribútummal jegyzeteli a[MessagePackObject(keyAsPropertyName: true)]típust, a tagok nem igényelnek explicit megjegyzéseket. Ilyen esetben a nyilvános tagok figyelmen kívül hagyásához használja az[IgnoreMember]attribútumot.A privát tagok szerializálásához használja a StandardResolverAllowPrivate parancsot.
System.Runtime.SerializationSzéljegyzetek használhatók a MessagePack-széljegyzetek helyett:[DataContract][MessagePackObject][DataMember]helyette[Key]és[IgnoreDataMember]helyett.[IgnoreMember]Ezek a széljegyzetek akkor lehetnek hasznosak, ha el szeretné kerülni a MessagePack-függőséget a szerializálható típusokat definiáló kódtárban.Támogatja az olvasható/nem módosítható típusokat és tagokat. A szerializáló megpróbálja használni a nyilvános konstruktort a legjobban egyeztetett argumentumlistával. A konstruktort attribútum használatával
[SerializationConstructor]explicit módon lehet megadni.Serialization tetszőleges típusok használata egyszerű egyéni formázókon keresztül támogatott. Ez eltávolítja az attribútumokra és az adott konstruktor- vagy tagmintákra vonatkozó összes követelményt.
A szerializáló támogatja a .NET alaposztálykódtárak által leggyakrabban használt beépített típusokat és gyűjteményeket. A teljes listát a hivatalos dokumentumokban találja. Olyan bővítménypontokkal rendelkezik, amelyek lehetővé teszik a testreszabást.
Figyelmeztetés
A MessagePack API-kkal lehetővé teszi az adatok típuskorlátozások nélküli deszerializálását. A MessagePack biztonsági megjegyzései alapján ezeket az API-kat el kell kerülni.
Figyelmeztetés
Egyes MessagePack API-k viselkedése módosítható statikus statikus elemeken keresztül testreszabható, ami azt jelenti, hogy a kód sikeres vagy sikertelen lehet attól függően, hogy az ugyanabban a folyamatban lévő többi kód, a AssemblyLoadContext vagy az AppDomain mit tehet. A kód rugalmasságát a MessagePackAnalyzer csomagra való hivatkozással és az MsgPack001 és MsgPack002 elemzők engedélyezésével is megőrizheti, amelyek megváltoztatható viselkedéssel hívják fel az API-k bármilyen használatát.