Instrukcje: skracanie czasu uruchamiania aplikacji klienckich programu WCF za pomocą elementu XmlSerializer

Usługi i aplikacje klienckie korzystające z typów danych, które można serializuje przy użyciu generowania i kompilowania kodu serializacji dla tych typów danych w czasie wykonywania, co może spowodować spowolnienie XmlSerializer uruchamiania.

Uwaga

Wstępnie wygenerowany kod serializacji może być używany tylko w aplikacjach klienckich, a nie w usługach.

Narzędzie ServiceModel Metadata Utility Tool (Svcutil.exe) może zwiększyć wydajność uruchamiania dla tych aplikacji, generując niezbędny kod serializacji ze skompilowanych zestawów dla aplikacji. Svcutil.exe generuje kod serializacji dla wszystkich typów danych używanych w kontraktach usług w skompilowanym zestawie aplikacji, który może być serializowany przy użyciu XmlSerializer . Kontrakty usług i operacji, które używają funkcji XmlSerializer , są oznaczone za pomocą . XmlSerializerFormatAttribute

Aby wygenerować kod serializacji elementu XmlSerializer

  1. Skompiluj kod usługi lub klienta w co najmniej jeden zestaw.

  2. Otwórz wiersz polecenia zestawu SDK.

  3. W wierszu polecenia uruchom narzędzie Svcutil.exe w następującym formacie.

    svcutil.exe /t:xmlSerializer  <assemblyPath>*  
    

    Argument assemblyPath określa ścieżkę do zestawu, który zawiera typy kontraktów usług. Svcutil.exe generuje kod serializacji dla wszystkich typów danych używanych w kontraktach usług w skompilowanym zestawie aplikacji, który może być serializowany przy użyciu XmlSerializer .

    Svcutil.exe tylko wygenerować kod serializacji języka C#. Dla każdego zestawu wejściowego jest generowany jeden plik kodu źródłowego. Nie można użyć przełącznika /language, aby zmienić język wygenerowanego kodu.

    Aby określić ścieżkę do zestawów zależnych, użyj opcji /reference.

  4. Udostępnij wygenerowany kod serializacji aplikacji przy użyciu jednej z następujących opcji:

    1. Skompiluj wygenerowany kod serializacji do oddzielnego zestawu o nazwie [oryginalny zestaw ].XmlSerializers.dll (na przykład MyApp.XmlSerializers.dll). Aplikacja musi mieć możliwość załadowania zestawu, który musi być podpisany przy użyciu tego samego klucza co oryginalny zestaw. W przypadku ponownego skompilowania oryginalnego zestawu należy ponownie wygenerować zestaw serializacji.

    2. Skompiluj wygenerowany kod serializacji do oddzielnego zestawu i użyj w XmlSerializerAssemblyAttribute kontrakcie usługi, który używa XmlSerializerFormatAttribute . Ustaw właściwości AssemblyName lub CodeBase , aby wskazać skompilowany zestaw serializacji.

    3. Skompiluj wygenerowany kod serializacji do zestawu aplikacji i dodaj do kontraktu usługi , XmlSerializerAssemblyAttribute który używa . XmlSerializerFormatAttribute Nie ustawiaj właściwości AssemblyName CodeBase ani . Domyślny zestaw serializacji zakłada się, że jest bieżącym zestawem.

Aby wygenerować kod serializacji elementu XmlSerializer w Visual Studio

  1. Tworzenie projektów klienta i usługi WCF w programie Visual Studio. Następnie dodaj odwołanie do usługi do projektu klienta.

  2. Dodaj element do kontraktu usługi w pliku reference.cs w projekcie aplikacji klienckiej XmlSerializerFormatAttribute w obszarze serviceReference -> reference.svcmap. Należy pamiętać, że aby wyświetlić te pliki, należy Eksplorator rozwiązań wyświetlić wszystkie pliki w programie .

  3. Skompilowanie aplikacji klienckiej.

  4. Użyj narzędzia ServiceModel Metadata Utility Tool (Svcutil.exe), aby utworzyć wstępnie wygenerowany plik cs serializatora za pomocą polecenia :

    svcutil.exe /t:xmlSerializer  <assemblyPath>*  
    

    Argument assemblyPath określa ścieżkę do zestawu klienta WCF.

    Przykładowe metody:

    svcutil.exe /t:xmlSerializer wcfclient.exe  
    

    Zostanie WCFClient.XmlSerializers.dll plikWCFClient.XmlSerializers.dll.cs.

  5. Skompiluj wstępnie wygenerowany zestaw serializacji.

    Na podstawie przykładu z poprzedniego kroku polecenie compile będzie następujące:

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

    Upewnij się, że WCFClient.XmlSerializers.dll znajduje się w tym samym katalogu co aplikacja klienca, coWCFClient.exe w tym przypadku.

  6. Uruchom aplikację kliencyjną w zwykły sposób. Zostanie użyty wstępnie wygenerowany zestaw serializacji.

Przykład

Następujące polecenie generuje typy serializacji dla typów, których XmlSerializer używają wszystkie kontrakty usług w zestawie.

svcutil /t:xmlserializer myContractLibrary.exe  

Zobacz też