Delen via


Procedure: De opstarttijd van WCF-clienttoepassingen verbeteren met behulp van xmlSerializer

Services en clienttoepassingen die gebruikmaken van gegevenstypen die serialiseren met behulp van de XmlSerializer serialisatiecode genereren en compileren voor deze gegevenstypen tijdens runtime, wat kan leiden tot trage opstartprestaties.

Notitie

Vooraf gegenereerde serialisatiecode kan alleen worden gebruikt in clienttoepassingen en niet in services.

Het hulpprogramma hulpprogramma voor metagegevens van ServiceModel (Svcutil.exe) kan de opstartprestaties voor deze toepassingen verbeteren door de benodigde serialisatiecode te genereren van de gecompileerde assembly's voor de toepassing. Svcutil.exe genereert serialisatiecode voor alle gegevenstypen die worden gebruikt in servicecontracten in de gecompileerde toepassingsassembly die kan worden geserialiseerd met behulp van de XmlSerializer. Service- en bewerkingscontracten die gebruikmaken van de XmlSerializer contracten, worden gemarkeerd met de XmlSerializerFormatAttribute.

Serialisatiecode voor XmlSerializer genereren

  1. Compileer uw service- of clientcode in een of meer assembly's.

  2. Open een SDK-opdrachtprompt.

  3. Start bij de opdrachtprompt het hulpprogramma Svcutil.exe met behulp van de volgende indeling.

    svcutil.exe /t:xmlSerializer  <assemblyPath>*  
    

    Het assemblyPath argument geeft het pad op naar een assembly die servicecontracttypen bevat. Svcutil.exe genereert serialisatiecode voor alle gegevenstypen die worden gebruikt in servicecontracten in de gecompileerde toepassingsassembly die kan worden geserialiseerd met behulp van de XmlSerializer.

    Svcutil.exe kan alleen C#-serialisatiecode genereren. Er wordt één broncodebestand gegenereerd voor elke invoerassembly. U kunt de schakeloptie /language niet gebruiken om de taal van de gegenereerde code te wijzigen.

    Als u het pad naar afhankelijke assembly's wilt opgeven, gebruikt u de optie /reference .

  4. Maak de gegenereerde serialisatiecode beschikbaar voor uw toepassing met behulp van een van de volgende opties:

    1. Compileer de gegenereerde serialisatiecode in een afzonderlijke assembly met de naam [oorspronkelijke assembly]. XmlSerializers.dll (bijvoorbeeld MyApp.XmlSerializers.dll). Uw toepassing moet de assembly kunnen laden, die moet zijn ondertekend met dezelfde sleutel als de oorspronkelijke assembly. Als u de oorspronkelijke assembly opnieuw compileert, moet u de serialisatieassembly opnieuw genereren.

    2. Compileer de gegenereerde serialisatiecode in een afzonderlijke assembly en gebruik het XmlSerializerAssemblyAttribute on-the-servicecontract dat gebruikmaakt van het XmlSerializerFormatAttribute. Stel de AssemblyName of CodeBase eigenschappen in om te verwijzen naar de gecompileerde serialisatieassembly.

    3. Compileer de gegenereerde serialisatiecode in uw toepassingsassembly en voeg het XmlSerializerAssemblyAttribute toe aan het servicecontract dat gebruikmaakt van het XmlSerializerFormatAttribute. Stel de AssemblyName of CodeBase eigenschappen niet in. De standaardserialisatieassembly wordt verondersteld de huidige assembly te zijn.

XmlSerializer-serialisatiecode genereren in Visual Studio

  1. Maak de WCF-service en clientprojecten in Visual Studio. Voeg vervolgens een servicereferentie toe aan het clientproject.

  2. Voeg een XmlSerializerFormatAttribute toe aan het servicecontract in het reference.cs-bestand in het client-app-project onder serviceReference ->reference.svcmap. Houd er rekening mee dat u alle bestanden in Solution Explorer moet weergeven om deze bestanden te kunnen zien.

  3. Bouw de client-app.

  4. Gebruik het hulpprogramma Voor metagegevens van ServiceModel (Svcutil.exe) om een vooraf gegenereerd serializer -.cs-bestand te maken met behulp van de opdracht:

    svcutil.exe /t:xmlSerializer  <assemblyPath>*  
    

    Het argument assemblyPath geeft het pad naar de WCF-clientassembly op.

    Zoals:

    svcutil.exe /t:xmlSerializer wcfclient.exe  
    

    Het WCFClient.XmlSerializers.dll.cs-bestand wordt gegenereerd.

  5. Compileer de vooraf gegenereerde serialisatieassembly.

    Op basis van het voorbeeld in de vorige stap is de compilatieopdracht het volgende:

    csc /r:wcfclient.exe /out:WCFClient.XmlSerializers.dll /t:library WCFClient.XmlSerializers.dll.cs  
    

    Zorg ervoor dat de gegenereerde WCFClient.XmlSerializers.dll zich in dezelfde map bevindt als de client-app. Dit is in dit geval WCFClient.exe .

  6. Voer de client-app zoals gewoonlijk uit. De vooraf gegenereerde serialisatieassembly wordt gebruikt.

Opmerking

Met de volgende opdracht worden serialisatietypen gegenereerd voor XmlSerializer typen die servicecontracten in de assembly gebruiken.

svcutil /t:xmlserializer myContractLibrary.exe  

Zie ook