Delen via


Typen die worden ondersteund door de Serializer van het gegevenscontract

Windows Communication Foundation (WCF) maakt gebruik van de DataContractSerializer standaard serialisatie-engine om gegevens te converteren naar XML en XML te converteren naar gegevens. Het DataContractSerializer is ontworpen om gegevenscontracttypen te serialiseren. Het ondersteunt echter veel andere typen, die kunnen worden beschouwd als een impliciet gegevenscontract. Hier volgt een volledige lijst met typen die kunnen worden geserialiseerd:

Beperkingen van het gebruik van bepaalde typen in de modus Gedeeltelijke vertrouwensrelatie

Hier volgt een lijst met beperkingen bij het gebruik van bepaalde typen in scenario's met gedeeltelijke vertrouwensmodus:

  • Als u een type wilt serialiseren of deserialiseren dat in gedeeltelijk vertrouwde code wordt geïmplementeerd ISerializable met behulp van de DataContractSerializer vereiste en SerializationFormatterUnmanagedCode machtigingen.

  • Wanneer u WCF-code uitvoert in de modus Gedeeltelijke vertrouwen , wordt de serialisatie en deserialisatie van readonly velden (beide public en private) niet ondersteund. Dit komt doordat de gegenereerde IL niet kan worden geverifieerd en daarom verhoogde machtigingen vereist.

  • Zowel de DataContractSerializer als de XmlSerializer worden ondersteund in een gedeeltelijke vertrouwensomgeving. Het gebruik van de toepassing DataContractSerializer is echter onderhevig aan de volgende voorwaarden:

    • Alle serialiseerbare [DataContract] typen moeten openbaar zijn.

    • Alle serialiseerbare [DataMember] velden of eigenschappen in een [DataContract] type moeten openbaar en lezen/schrijven zijn. De serialisatie en deserialisatie van velden wordt niet ondersteund bij het uitvoeren van readonly WCF in een gedeeltelijk vertrouwde toepassing.

    • Het [Serializable]/ISerializable] programmeermodel wordt niet ondersteund in een gedeeltelijke vertrouwensomgeving.

    • Bekende typen moeten worden opgegeven in de configuratie op code- of machineniveau (Machine.config). Bekende typen kunnen om veiligheidsredenen niet worden opgegeven in de configuratie op toepassingsniveau.

  • Typen die een uitzondering implementeren IObjectReference in een gedeeltelijk vertrouwde omgeving, omdat voor de GetRealObject methode de beveiligingsmachtiging [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]is vereist.

Aanvullende notities over serialisatie

De volgende regels zijn ook van toepassing op typen die worden ondersteund door de Data Contract Serializer:

  • Algemene typen worden volledig ondersteund door de serializer van het gegevenscontract.

  • Typen null-waarden worden volledig ondersteund door de serialisatiefunctie van het gegevenscontract.

  • Interfacetypen worden behandeld als Object of, in het geval van verzamelingsinterfaces, als verzamelingstypen.

  • Zowel structuren als klassen worden ondersteund.

  • Het DataContractSerializer biedt geen ondersteuning voor het programmeermodel dat wordt gebruikt door de XmlSerializer en ASP.NET-webservices. Het biedt met name geen ondersteuning voor kenmerken zoals XmlElementAttribute en XmlAttributeAttribute. Als u ondersteuning voor dit programmeermodel wilt inschakelen, moet WCF worden overgeschakeld naar het gebruik in plaats van het XmlSerializerDataContractSerializer.

  • Het DBNull type wordt op een speciale manier behandeld. Het is een singletontype en bij deserialisatie respecteert de deserializer de singleton-beperking en verwijst alle DBNull verwijzingen naar het singleton-exemplaar. Omdat DBNull het een serialiseerbaar type is, is er toestemming vereist SerializationFormatter .

Zie ook