Sdílet prostřednictvím


Postupy: Zlepšení doby spuštění klientských aplikací WCF pomocí XmlSerializer

Služby a klientské aplikace, které používají datové typy serializovatelné pomocí XmlSerializer, generují a kompilují kód pro serializaci těchto datových typů při běhu programu, což může vést k pomalému výkonu při startu.

Poznámka:

Předgenerovaný kód serializace lze použít pouze v klientských aplikacích a ne ve službách.

Nástroj ServiceModel Metadata Utility (Svcutil.exe) může zlepšit výkon spouštění pro tyto aplikace generováním nezbytného serializačního kódu z kompilovaných sestavení pro aplikaci. Svcutil.exe generuje kód serializace pro všechny datové typy používané v kontraktech služeb v kompilovaném sestavení aplikace, které lze serializovat pomocí XmlSerializer. Servisní a provozní kontrakty, které používají, XmlSerializer jsou označeny značkou XmlSerializerFormatAttribute.

Generování kódu serializace XmlSerializer

  1. Zkompilujte službu nebo klientský kód do jednoho nebo více sestavení.

  2. Otevřete příkazový řádek sady SDK.

  3. Na příkazovém řádku spusťte nástroj Svcutil.exe pomocí následujícího formátu.

    svcutil.exe /t:xmlSerializer  <assemblyPath>*
    

    Argument assemblyPath určuje cestu k sestavení, které obsahuje typy kontraktů služeb. Svcutil.exe generuje kód serializace pro všechny datové typy používané v kontraktech služeb v kompilovaném sestavení aplikace, které lze serializovat pomocí XmlSerializer.

    Svcutil.exe může generovat pouze kód serializace jazyka C#. Pro každé vstupní sestavení se vygeneruje jeden soubor zdrojového kódu. Ke změně jazyka vygenerovaného kódu nelze použít přepínač /language .

    Chcete-li zadat cestu k závislým sestavením, použijte možnost /reference .

  4. Pomocí jedné z následujících možností zpřístupněte vygenerovaný kód serializace pro vaši aplikaci:

    1. Zkompilujte vygenerovaný serializační kód do samostatného sestavení s názvem [původní sestavení].XmlSerializers.dll (například MyApp.XmlSerializers.dll). Aplikace musí být schopna načíst sestavení, které musí být podepsáno stejným klíčem jako původní sestavení. Pokud znovu zkompilujete původní sestavení, je nutné znovu vygenerovat sestavení serializace.

    2. Zkompilujte vygenerovaný serializační kód do samostatného sestavení a použijte XmlSerializerAssemblyAttribute na služební kontrakt, který používá XmlSerializerFormatAttribute. Nastavte vlastnosti AssemblyName nebo CodeBase tak, aby odkazovaly na kompilované sestavení pro serializaci.

    3. Zkompilujte vygenerovaný serializační kód do sestavení aplikace a přidejte XmlSerializerAssemblyAttribute ke kontraktu služby, který používá XmlSerializerFormatAttribute. Nenastavujte AssemblyName ani CodeBase vlastnosti. Výchozí sestavení serializace se předpokládá jako aktuální sestavení.

Generování kódu pro serializaci pomocí XmlSerializer ve Visual Studiu

  1. Vytvořte v sadě Visual Studio službu WCF a klientské projekty. Potom přidejte odkaz na službu do klientského projektu.

  2. XmlSerializerFormatAttribute Přidejte do kontraktu služby v souboru reference.cs, který se nachází v projektu klientské aplikace, v sekci serviceReference – >reference.svcmap. Všimněte si, že pokud chcete zobrazit tyto soubory, musíte zobrazit všechny soubory v Průzkumníku řešení .

  3. Sestavte klientskou aplikaci.

  4. Pomocí nástroje ServiceModel Metadata Utility (Svcutil.exe) vytvořte předem vygenerovaný serializátor .cs soubor pomocí příkazu:

    svcutil.exe /t:xmlSerializer  <assemblyPath>*
    

    Argument assemblyPath určuje cestu k sestavení klienta WCF.

    Jako:

    svcutil.exe /t:xmlSerializer wcfclient.exe
    

    Vygeneruje se soubor WCFClient.XmlSerializers.dll.cs .

  5. Zkompilujte předgenerované sestavení serializace.

    Na základě příkladu v předchozím kroku by příkaz kompilace byl následující:

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

    Ujistěte se, že vygenerovaný WCFClient.XmlSerializers.dll je ve stejném adresáři jako klientská aplikace, což je v tomto případě WCFClient.exe .

  6. Spusťte klientskou aplikaci obvyklým způsobem. Použije se předgenerované sestavení serializace.

Example

Následující příkaz generuje typy serializace pro XmlSerializer typy, které všechny kontrakty služeb v sestavení používají.

svcutil /t:xmlserializer myContractLibrary.exe

Viz také