Partager via


Comment : améliorer le temps de démarrage des applications clientes WCF à l'aide de XmlSerializer

Les applications clientes et de services qui utilisent des types de données sérialisables à l'aide de XmlSerializer génèrent et compilent le code de sérialisation de ces types de données lors de l'exécution, ce qui peut provoquer des performances de démarrage lentes.

Aa751883.note(fr-fr,VS.90).gifRemarque :
Le code de sérialisation prégénéré est réservé aux applications clientes, pas aux services.

ServiceModel Metadata Utility Tool (Svcutil.exe) peut améliorer les performances de démarrage de ces applications en générant le code de sérialisation nécessaire à partir des assemblys compilés pour l'application. Svcutil.exe génère le code de sérialisation de tous les types de données utilisés dans les contrats de service de l'assembly d'application compilé qui peut être sérialisé à l'aide de XmlSerializer. Les contrats de service et d'opération qui utilisent XmlSerializer sont marqués avec XmlSerializerFormatAttribute.

Pour générer du code de sérialisation XmlSerializer.

  1. Compilez votre code de service ou client dans un ou plusieurs assemblys.

  2. Ouvrez une invite de commandes du Kit de développement SDK.

  3. À l'invite de commandes, lancez l'outil Svcutil.exe à l'aide du format suivant.

    svcutil.exe /t:xmlSerializer  <assemblyPath>*
    

    L'argument assemblyPath spécifie le chemin d'accès à un assembly contenant des types de contrat de service. Svcutil.exe génère le code de sérialisation de tous les types de données utilisés dans les contrats de service de l'assembly d'application compilé qui peut être sérialisé à l'aide de XmlSerializer.

    Svcutil.exe peut uniquement générer du code de sérialisation C#. Un fichier de code source est généré pour chaque assembly d'entrée. Vous ne pouvez pas utiliser le commutateur /language pour modifier le langage du code généré.

    Pour spécifier le chemin d'accès aux assemblys dépendants, utilisez l'option /reference.

  4. Rendez le code de sérialisation généré disponible pour votre application en utilisant l'une des options suivantes :

    1. Compilez le code de sérialisation généré dans un assembly séparé portant le nom [assembly d'origine].XmlSerializers .dll (par exemple, MyApp.XmlSerializers.dll). Votre application doit être en mesure de charger l'assembly, qui doit être signé avec la même clé que l'assembly d'origine. Si vous recompilez l'assembly d'origine, vous devez régénérer l'assembly de sérialisation.
    2. Compilez le code de sérialisation généré dans un assembly distinct et utilisez XmlSerializerAssemblyAttribute sur le contrat de service qui utilise XmlSerializerFormatAttribute. Définissez les propriétés AssemblyName ou CodeBase pour pointer vers l'assembly de sérialisation compilé.
    3. Compilez le code de sérialisation généré dans votre assembly d'application et ajoutez XmlSerializerAssemblyAttribute au contrat de service qui utilise XmlSerializerFormatAttribute. Ne définissez pas les propriétés AssemblyName ou CodeBase. L'assembly de sérialisation par défaut est supposé être l'assembly actuel.

Exemple

La commande suivante génère des types de sérialisation pour les types XmlSerializer que les contrats de service de l'assembly utilisent.

svcutil /t:xmlserializer myContractLibrary.exe

Voir aussi

Autres ressources

ServiceModel Metadata Utility Tool (Svcutil.exe)