Postupy: Vylepšení doby spouštění klientských aplikací WCF pomocí třídy XmlSerializer

Služby a klientské aplikace, které používají datové typy serializovatelné pomocí XmlSerializer kódu generování a kompilace serializace pro tyto datové typy za běhu, což může vést k pomalému spuštění výkonu.

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 potřebné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 sestavení kompilované 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 sestavení kompilované 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 na XmlSerializerAssemblyAttribute kontraktu služby, který používá XmlSerializerFormatAttribute. AssemblyName Nastavte nebo CodeBase vlastnosti tak, aby odkazovaly na kompilované serializace sestavení.

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

Generování kódu serializace XmlSerializer v sadě Visual Studio

  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 v projektu klientské aplikace v části serviceReference ->reference.svcmap. Všimněte si, že pokud chcete zobrazit tyto soubory, musíte zobrazit všechny soubory v Průzkumník řešení.

  3. Sestavte klientskou aplikaci.

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

    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.

Příklad

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é