Teilen über


Vorgehensweise: Verbessern der Startzeit von WCF-Clientanwendungen mithilfe des XmlSerializers

Dienste und Clientanwendungen, die Datentypen verwenden, die mit XmlSerializer serialisierbar sind, generieren und kompilieren den Serialisierungscode für diese Datentypen zur Laufzeit, was zu einer verzögerten Startleistung führen kann.

Hinweis

Vorab generierter Serialisierungscode kann nur in Clientanwendungen und nicht in Diensten verwendet werden.

Das ServiceModel Metadata Utility Tool (Svcutil.exe) kann die Startleistung für diese Anwendungen verbessern, indem der erforderliche Serialisierungscode aus den kompilierten Assemblys für die Anwendung generiert wird. Svcutil.exe generiert Serialisierungscode für alle Datentypen, die in Dienstverträgen der kompilierten Anwendungsassembly verwendet werden und mit dem XmlSerializer serialisiert werden können. Service- und Betriebsverträge, die XmlSerializer nutzen, sind mit XmlSerializerFormatAttribute markiert.

So generieren Sie XmlSerializer-Serialisierungscode

  1. Kompilieren Sie Ihren Dienst oder Clientcode in einer oder mehreren Assemblys.

  2. Öffnen Sie eine SDK-Eingabeaufforderung.

  3. Starten Sie an der Eingabeaufforderung das "Svcutil.exe"-Tool mit dem folgenden Format.

    svcutil.exe /t:xmlSerializer  <assemblyPath>*
    

    Das assemblyPath Argument gibt den Pfad zu einer Assembly an, die Dienstvertragstypen enthält. Svcutil.exe generiert Serialisierungscode für alle Datentypen, die in den Dienstverträgen der kompilierten Anwendungsassembly verwendet werden und mithilfe von XmlSerializer serialisiert werden können.

    Svcutil.exe kann nur C#-Serialisierungscode generieren. Für jede Eingabeassembly wird eine Quellcodedatei generiert. Sie können die Option "/language " nicht verwenden, um die Sprache des generierten Codes zu ändern.

    Verwenden Sie die Option "/reference ", um den Pfad zu abhängigen Assemblys anzugeben.

  4. Stellen Sie den generierten Serialisierungscode ihrer Anwendung mithilfe einer der folgenden Optionen zur Verfügung:

    1. Kompilieren Sie den generierten Serialisierungscode in eine separate Assembly mit dem Namen [original assembly].XmlSerializers.dll (z. B. MyApp.XmlSerializers.dll). Ihre Anwendung muss in der Lage sein, die Assembly zu laden, die mit demselben Schlüssel wie die ursprüngliche Assembly signiert werden muss. Wenn Sie die ursprüngliche Assembly neu kompilieren, müssen Sie die Serialisierungsassembly neu generieren.

    2. Kompilieren Sie den generierten Serialisierungscode in einer separaten Assembly, und verwenden Sie den XmlSerializerAssemblyAttribute Dienstvertrag, der den XmlSerializerFormatAttribute. Legen Sie die Eigenschaften AssemblyName oder CodeBase so fest, dass sie auf die kompilierte Serialisierungsassembly zeigen.

    3. Kompilieren Sie den generierten Serialisierungscode in Ihre Anwendungsassembly, und fügen Sie das XmlSerializerAssemblyAttribute zu dem Dienstvertrag hinzu, der das XmlSerializerFormatAttribute verwendet. Setzen Sie die Eigenschaften AssemblyName oder CodeBase nicht fest. Die Standard-Serialisierungsassembly wird als aktuelle Assembly angenommen.

So generieren Sie XmlSerializer-Serialisierungscode in Visual Studio

  1. Erstellen Sie die WCF-Dienst- und Clientprojekte in Visual Studio. Fügen Sie dann einen Dienstverweis zum Clientprojekt hinzu.

  2. Fügen Sie ein XmlSerializerFormatAttribute dem Dienstvertrag in der Datei reference.cs im Client-App-Projekt unter serviceReference ->reference.svcmap hinzu. Beachten Sie, dass Sie alle Dateien im Projektmappen-Explorer anzeigen müssen, um diese Dateien anzuzeigen.

  3. Erstellen Sie die Client-App.

  4. Verwenden Sie das ServiceModel Metadata Utility Tool (Svcutil.exe), um mithilfe des Befehls einen vorab generierten Serialisierer .cs Datei zu erstellen:

    svcutil.exe /t:xmlSerializer  <assemblyPath>*
    

    Das AssemblyPath-Argument gibt den Pfad zur WCF-Clientassembly an.

    Zum Beispiel:

    svcutil.exe /t:xmlSerializer wcfclient.exe
    

    Die WCFClient.XmlSerializers.dll.cs Datei wird generiert.

  5. Kompilieren Sie die vorgenerierte Serialisierungsassembly.

    Basierend auf dem Beispiel im vorherigen Schritt lautet der Kompilierungsbefehl wie folgt:

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

    Stellen Sie sicher, dass sich die generierte WCFClient.XmlSerializers.dll im selben Verzeichnis wie die Client-App befindet, die in diesem Fall WCFClient.exe ist.

  6. Führen Sie die Client-App wie gewohnt aus. Die vorgenerierte Assemblierung für Serialisierung wird verwendet.

Example

Der folgende Befehl generiert Serialisierungstypen für XmlSerializer Typen, die alle Dienstverträge in der Assembly verwenden.

svcutil /t:xmlserializer myContractLibrary.exe

Siehe auch