Delen via


XAML-services

In dit onderwerp worden de mogelijkheden beschreven van een technologieset die bekend staat als .NET XAML Services. De meeste services en API's die worden beschreven, bevinden zich in de assembly-System.Xaml. Services omvatten lezers en schrijvers, schemaklassen en schemaondersteuning, factory's, het toewijzen van klassen, intrinsieke ondersteuning voor XAML-talen en andere XAML-taalfuncties.

Over deze documentatie

Conceptuele documentatie voor .NET XAML Services gaat ervan uit dat u eerdere ervaring hebt met de XAML-taal en hoe deze van toepassing kan zijn op een specifiek framework, bijvoorbeeld Windows Presentation Foundation (WPF) of Windows Workflow Foundation, of een specifiek gebied voor technologiefuncties, bijvoorbeeld de buildaanpassingsfuncties in Microsoft.Build.Framework.XamlTypes. In deze documentatie worden de basisprincipes van XAML niet uitgelegd als opmaaktaal, XAML-syntaxisterminologie of ander inleidende materiaal. In plaats daarvan richt deze documentatie zich specifiek op het gebruik van .NET XAML-services die zijn ingeschakeld in de System.Xaml-assemblybibliotheek. De meeste van deze API's zijn bedoeld voor scenario's met XAML-taalintegratie en uitbreidbaarheid. Dit kan een van de volgende scenario's omvatten:

  • De mogelijkheden van de basis-XAML-lezers of XAML-schrijvers uitbreiden (de XAML-knooppuntstroom rechtstreeks verwerken; uw eigen XAML-lezer of XAML-schrijver afleiden).

  • Het definiëren van aangepaste XAML-typen die geen specifieke frameworkafhankelijkheden hebben en de typen toewijzen om hun XAML-typesysteemkenmerken over te brengen naar .NET XAML-services.

  • XAML-lezers of XAML-schrijvers hosten als onderdeel van een toepassing, zoals een visuele ontwerper of interactieve editor voor XAML-markeringsbronnen.

  • XAML-waardeconversieprogramma's schrijven (markeringsextensies; typeconversieprogramma's voor aangepaste typen).

  • Een aangepaste XAML-schemacontext definiëren (met behulp van alternatieve assemblylaadtechnieken voor back-uptypebronnen; met behulp van opzoektechnieken van bekende typen in plaats van altijd assembly's weer te geven; met behulp van geladen assemblyconcepten die niet gebruikmaken van de COMMON Language Runtime (CLR) AppDomain en het bijbehorende beveiligingsmodel).

  • Het basissysteem van het XAML-type uitbreiden.

  • Het gebruik van de Lookup- of Invoker technieken om het XAML-typesysteem te beïnvloeden en hoe typebackings worden geëvalueerd.

Als u op zoek bent naar inleidende materiaal op XAML als taal, kunt u proberen XAML-overzicht (WPF .NET). In dit onderwerp wordt XAML besproken voor een doelgroep die nieuw is voor Windows Presentation Foundation (WPF) en ook voor het gebruik van XAML-opmaak en XAML-taalfuncties. Een ander nuttig document is het inleidende materiaal in de XAML-taalspecificatie.

.NET XAML-services en -System.Xaml in de .NET-architectuur

.NET XAML Services en de System.Xaml assembly definiëren veel van wat er nodig is voor het ondersteunen van XAML-taalfuncties. Dit omvat basisklassen voor XAML-lezers en XAML-schrijvers. De belangrijkste functie die is toegevoegd aan .NET XAML Services die niet aanwezig was in een van de frameworkspecifieke XAML-implementaties, is een typesysteemweergave voor XAML. De typesysteemweergave presenteert XAML op een objectgeoriënteerde manier die zich richt op XAML-mogelijkheden zonder afhankelijkheden te nemen van specifieke mogelijkheden van frameworks.

Het XAML-typesysteem wordt niet beperkt door het opmaakformulier of de runtimespecifieke kenmerken van de XAML-oorsprong; noch wordt het beperkt door een specifiek systeem van het type backing. Het XAML-typesysteem bevat objectweergaven voor typen, leden, XAML-schemacontexten, concepten op XML-niveau en andere XAML-taalconcepten of XAML-intrinsieke elementen. Door het XAML-typesysteem te gebruiken of uit te breiden, is het mogelijk om af te leiden van klassen zoals XAML-lezers en XAML-schrijvers, en de functionaliteit van XAML-representaties uit te breiden naar specifieke functies die zijn ingeschakeld door een framework, een technologie of een toepassing die XAML verbruikt of verzendt. Het concept van een XAML-schemacontext maakt praktische schrijfbewerkingen voor objectgrafieken mogelijk op basis van de combinatie van een XAML-objectschrijver-implementatie, het backingtypesysteem van een technologie zoals gecommuniceerd via assembly-informatie in de context en de XAML-knooppuntbron. Voor meer informatie over het XAML-schemaconcept. zie Standaard XAML-schemacontext en WPF XAML-schemacontext.

XAML-knooppuntstreams, XAML-lezers en XAML-schrijvers

Om inzicht te krijgen in de rol die .NET XAML Services speelt in de relatie tussen de XAML-taal en specifieke technologieën die gebruikmaken van XAML als taal, is het handig om inzicht te krijgen in het concept van een XAML-knooppuntstroom en hoe dat concept de API en terminologie vormt. De XAML-knooppuntstroom is een conceptueel tussenliggende tussen een XAML-taalweergave en de objectgrafiek die de XAML vertegenwoordigt of definieert.

  • Een XAML-lezer is een entiteit die XAML in een bepaalde vorm verwerkt en een XAML-knooppuntstroom produceert. In de API wordt een XAML-lezer vertegenwoordigd door de basisklasse XamlReader.

  • Een XAML Writer is een entiteit die een XAML-knooppuntstroom verwerkt en iets anders produceert. In de API wordt een XAML-schrijver vertegenwoordigd door de basisklasse XamlWriter.

    De twee meest voorkomende scenario's met betrekking tot XAML zijn het laden van XAML om een objectgrafiek te instantiëren en een objectgrafiek op te slaan vanuit een toepassing of hulpprogramma en een XAML-weergave te produceren (meestal in opmaakformulier dat is opgeslagen als tekstbestand). Het laden van XAML en het maken van een objectgrafiek wordt vaak in deze documentatie aangeduid als het laadpad. Het opslaan of serialiseren van een bestaande objectgrafiek naar XAML wordt vaak in deze documentatie aangeduid als het pad voor opslaan.

    Het meest voorkomende type laadpad kan als volgt worden beschreven:

  • Begin met een XAML-weergave, in UTF-gecodeerde XML-indeling en opgeslagen als tekstbestand.

  • Laad die XAML in XamlXmlReader. XamlXmlReader is een XamlReader subklasse.

  • Het resultaat is een XAML-knooppuntstroom. U hebt toegang tot afzonderlijke knooppunten van de XAML-knooppuntstroom met behulp van XamlXmlReader / XamlReader-API. De meest voorkomende bewerking hier is om door de XAML-knooppuntstroom te gaan en elk knooppunt te verwerken met behulp van een metafoor voor de huidige record.

  • Geef de resulterende knooppunten van de XAML-knooppuntstroom door aan een XamlObjectWriter-API. XamlObjectWriter is een XamlWriter subklasse.

  • De XamlObjectWriter schrijft een objectgrafiek, één object tegelijk, in overeenstemming met de voortgang van de bronstroom van het XAML-knooppunt. Het schrijven van objecten wordt uitgevoerd met behulp van een XAML-schemacontext en een implementatie die toegang heeft tot de assembly's en typen van een systeem en framework voor backingtypen.

  • Roep Result aan het einde van de XAML-knooppuntstroom aan om het hoofdobject van de objectgrafiek te verkrijgen.

    Het meest voorkomende type opslagpad kan als volgt worden beschreven:

  • Begin met de objectgrafiek van een volledige uitvoeringstijd van een toepassing, de inhoud en status van een runtime of een kleiner segment van de objectweergave van een algemene toepassing tijdens runtime.

  • Laad de objecten vanuit een logisch beginobject, zoals een hoofdmap van een toepassing of documenthoofdmap, in XamlObjectReader. XamlObjectReader is een XamlReader subklasse.

  • Het resultaat is een XAML-knooppuntstroom. U hebt toegang tot afzonderlijke knooppunten van de XAML-knooppuntstroom met behulp van XamlObjectReader en XamlReader-API. De meest voorkomende bewerking hier is om door de XAML-knooppuntstroom te gaan en elk knooppunt te verwerken met behulp van een metafoor voor de huidige record.

  • Geef de resulterende knooppunten van de XAML-knooppuntstroom door aan een XamlXmlWriter-API. XamlXmlWriter is een XamlWriter subklasse.

  • De XamlXmlWriter schrijft XAML in een XML UTF-codering. U kunt dit opslaan als tekstbestand, als een stroom of in andere formulieren.

  • Roep Flush aan om de uiteindelijke uitvoer te verkrijgen.

Zie Understanding XAML Node Stream Structures and Conceptsvoor meer informatie over XAML-knooppuntstroomconcepten.

De klasse XamlServices

Het is niet altijd nodig om een XAML-knooppuntstroom af te handelen. Als u een eenvoudig laadpad of een basispad voor opslaan wilt, kunt u API's gebruiken in de XamlServices-klasse.

  • Verschillende handtekeningen van Load een laadpad implementeren. U kunt een bestand of stream laden of een XmlReader, TextReader of XamlReader die uw XAML-invoer verpakken door te laden met de API's van die lezer.

  • Verschillende handtekeningen van Save een objectgrafiek opslaan en uitvoer produceren als een stroom, bestand of XmlWriter/TextWriter exemplaar.

  • Transform converteert XAML door een laadpad en een opslagpad als één bewerking te koppelen. Een andere schemacontext of een ander type systeem voor backing kan worden gebruikt voor XamlReader en XamlWriter, wat invloed heeft op de manier waarop de resulterende XAML wordt getransformeerd.

Zie XAMLServices Class en Basic XAML Reading or Writingvoor meer informatie over het gebruik van XamlServices.

XAML-typesysteem

Het XAML-typesysteem biedt de API's die nodig zijn om te werken met een bepaald afzonderlijk knooppunt van een XAML-knooppuntstroom.

XamlType is de weergave voor een object: wat u verwerkt tussen een beginobjectknooppunt en een eindobjectknooppunt.

XamlMember is de weergave voor een lid van een object: wat u verwerkt tussen een beginlidknooppunt en het eindlidknooppunt.

API's zoals GetAllMembers en GetMember en DeclaringType rapporteren de relaties tussen een XamlType en XamlMember.

Het standaardgedrag van het XAML-typesysteem zoals geïmplementeerd door .NET XAML Services is gebaseerd op de Common Language Runtime (CLR) en statische analyse van CLR-typen in assembly's met behulp van weerspiegeling. Daarom kan voor een specifiek CLR-type de standaard implementatie van het XAML-typesysteem het XAML-schema van dat type en de bijbehorende leden beschikbaar maken en rapporteren in termen van het XAML-typesysteem. In het standaard XAML-typesysteem wordt het concept van de toewijzing van typen toegewezen aan CLR-overname, en de concepten van exemplaren, waardetypen, enzovoort, ook toegewezen aan het ondersteunende gedrag en de functies van de CLR.

Naslaginformatie voor XAML-taalfuncties

Ter ondersteuning van XAML biedt .NET XAML Services specifieke implementatie van XAML-taalconcepten zoals gedefinieerd voor de XAML-taal XAML-naamruimte. Deze worden beschreven als specifieke referentiepagina's. De taalfuncties worden beschreven vanuit het perspectief van hoe deze taalfuncties zich gedragen wanneer ze worden verwerkt door een XAML-lezer of XAML-schrijver die is gedefinieerd door .NET XAML Services. Zie XAML-naamruimte (x:) taalfunctiesvoor meer informatie.