Sdílet prostřednictvím


Typy podporované serializátorem kontraktu dat

Windows Communication Foundation (WCF) používá DataContractSerializer jako svůj výchozí serializační modul k převodu dat do XML a k převodu XML zpět na data. Je DataContractSerializer navržen pro serializaci datových typů kontraktů . Podporuje však mnoho dalších typů, které lze považovat za implicitní kontrakt dat. Následuje úplný seznam typů, které lze serializovat:

Omezení používání určitých typů v režimu částečné důvěryhodnosti

Následuje seznam omezení při použití určitých typů ve scénářích režimu částečné důvěryhodnosti:

  • Chcete-li serializovat nebo deserializovat typ, který implementuje ISerializable v částečně důvěryhodném kódu pomocí DataContractSerializer požadavků SerializationFormatter a UnmanagedCode oprávnění.

  • Při spuštění kódu WCF v režimu částečné důvěryhodnosti není serializace a deserializace readonly polí (a publicprivate) podporována. Důvodem je to, že vygenerovaná il je neověřitelná a proto vyžaduje zvýšená oprávnění.

  • Obě DataContractSerializer možnosti jsou XmlSerializer podporovány v prostředí s částečnou důvěryhodností. Použití je DataContractSerializer však podmíněno následujícími podmínkami:

    • Všechny serializovatelné [DataContract] typy musí být veřejné.

    • Všechna serializovatelná [DataMember] pole nebo vlastnosti typu [DataContract] musí být veřejná a pro čtení a zápis. Serializace a deserializace readonly polí není podporována při spuštění WCF v částečně důvěryhodné aplikaci.

    • [Serializable]/ISerializable] Programovací model není podporován v prostředí částečné důvěryhodnosti.

    • Známé typy musí být zadány v konfiguraci na úrovni kódu nebo počítače (Machine.config). Známé typy nelze zadat v konfiguraci na úrovni aplikace z bezpečnostních důvodů.

  • Typy, které implementují IObjectReference výjimku v částečně důvěryhodném prostředí, protože GetRealObject metoda vyžaduje oprávnění [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]zabezpečení .

Další poznámky k serializaci

Následující pravidla platí také pro typy podporované serializátorem kontraktů dat:

  • Generické typy jsou plně podporovány serializátorem kontraktů dat.

  • Typy hodnot s možnou hodnotou null jsou plně podporovány serializátorem datového kontraktu.

  • Typy rozhraní jsou považovány za Object typy kolekcí nebo v případě rozhraní kolekce.

  • Podporují se struktury i třídy.

  • Nepodporuje DataContractSerializer programovací model používaný webovými službami XmlSerializer a ASP.NET. Zejména nepodporuje atributy jako XmlElementAttribute a XmlAttributeAttribute. Chcete-li povolit podporu pro tento programovací model, wcf musí být přepnut, aby používal XmlSerializer místo DataContractSerializer.

  • Typ DBNull se zpracovává zvláštním způsobem. Jedná se o jeden typ a při deserializaci deserializátor respektuje jednotonové omezení a odkazuje všechny DBNull odkazy na instanci singleton. Protože DBNull je serializovatelný typ, vyžaduje SerializationFormatter oprávnění.

Viz také