Sdílet prostřednictvím


Použití dotnet-svcutil.xmlserializer v .NET Core

Balíček dotnet-svcutil.xmlserializer NuGet může předem vygenerovat sestavení serializace pro projekty .NET Core. Předgeneruje kód serializace jazyka C# pro typy v klientské aplikaci, které jsou používány kontraktem služby WCF a které lze serializovat XmlSerializer. To zlepšuje výkon při spouštění serializace XML při serializaci nebo deserializaci objektů těchto typů.

Požadavky

Pomocí příkazu dotnet --info můžete zkontrolovat, které verze sady .NET SDK a modulu runtime už máte nainstalované.

Začínáme

dotnet-svcutil.xmlserializer Použití v konzolové aplikaci .NET Core:

  1. Vytvořte službu WCF s názvem MyWCFService pomocí výchozí šablony Wcf Service Application v rozhraní .NET Framework. Přidejte [XmlSerializerFormat] atribut pro metodu služby následujícím způsobem:

     [ServiceContract]
     public interface IService1
     {
         [XmlSerializerFormat]
         [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")]
         string GetData(int value);
     }
    
  2. Vytvořte konzolovou aplikaci .NET Core jako klientskou aplikaci WCF, která cílí na .NET Core 2.1 nebo novější verze. Vytvořte například aplikaci s názvem MyWCFClient pomocí následujícího příkazu:

    dotnet new console --name MyWCFClient
    

    Pokud chcete zajistit, aby váš projekt cílil na .NET Core 2.1 nebo novější, zkontrolujte TargetFramework element XML v souboru projektu:

    <TargetFramework>netcoreapp2.1</TargetFramework>
    
  3. Přidejte odkaz na System.ServiceModel.Http balíček spuštěním následujícího příkazu:

    dotnet add package System.ServiceModel.Http
    
  4. Přidejte kód klienta WCF:

    using System.ServiceModel;
    
        class Program
        {
            static void Main(string[] args)
            {
                var myBinding = new BasicHttpBinding();
                var myEndpoint = new EndpointAddress("http://localhost:2561/Service1.svc"); //Fill your service url here
                var myChannelFactory = new ChannelFactory<IService1>(myBinding, myEndpoint);
                IService1 client = myChannelFactory.CreateChannel();
                string s = client.GetData(1);
                ((ICommunicationObject)client).Close();
            }
        }
    
    [ServiceContract]
    public interface IService1
    {
        [XmlSerializerFormat]
        [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")]
        string GetData(int value);
    }
    
  5. Přidejte do dotnet-svcutil.xmlserializer balíčku odkaz spuštěním následujícího příkazu:

    dotnet add package dotnet-svcutil.xmlserializer
    

    Spuštěním příkazu by se měla do souboru projektu přidat položka podobná této:

    <ItemGroup>
      <DotNetCliToolReference Include="dotnet-svcutil.xmlserializer" Version="1.0.0" />
    </ItemGroup>
    
  6. Sestavte aplikaci spuštěním dotnet buildpříkazu . Pokud vše proběhne úspěšně, vygeneruje se ve výstupní složce sestavení s názvem MyWCFClient.XmlSerializers.dll . Pokud se nástroj nepodařilo vygenerovat sestavení, zobrazí se ve výstupu sestavení upozornění.

  7. Spusťte službu WCF například spuštěním http://localhost:2561/Service1.svc v prohlížeči. Pak spusťte klientskou aplikaci a automaticky se načte a použije předem generované serializátory za běhu.