Udostępnij za pośrednictwem


Korzystanie z narzędzia dotnet-svcutil.xmlserializer na platformie .NET Core

dotnet-svcutil.xmlserializer Pakiet NuGet może wstępnie wygenerować zestaw serializacji dla projektów platformy .NET Core. Wstępnie generuje kod serializacji języka C# dla typów w aplikacji klienckiej, które są używane przez kontrakt usługi WCF i które mogą być serializowane przez xmlSerializer. Poprawia to wydajność uruchamiania serializacji XML podczas serializacji lub deserializacji obiektów tych typów.

Wymagania wstępne

Możesz użyć polecenia dotnet --info , aby sprawdzić, które wersje zestawu .NET SDK i środowiska uruchomieniowego zostały już zainstalowane.

Wprowadzenie

Aby użyć dotnet-svcutil.xmlserializer w aplikacji konsolowej platformy .NET Core:

  1. Utwórz usługę WCF o nazwie "MyWCFService" przy użyciu szablonu domyślnego "Aplikacja usługi WCF" w programie .NET Framework. Dodaj [XmlSerializerFormat] atrybut w metodzie usługi w następujący sposób:

     [ServiceContract]
     public interface IService1
     {
         [XmlSerializerFormat]
         [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")]
         string GetData(int value);
     }
    
  2. Utwórz aplikację konsolową .NET Core jako aplikację kliencką WCF przeznaczoną dla platformy .NET Core 2.1 lub nowszej. Na przykład utwórz aplikację o nazwie "MyWCFClient" za pomocą następującego polecenia:

    dotnet new console --name MyWCFClient
    

    Aby upewnić się, że projekt jest przeznaczony dla platformy .NET Core 2.1 lub nowszej TargetFramework , sprawdź element XML w pliku projektu:

    <TargetFramework>netcoreapp2.1</TargetFramework>
    
  3. Dodaj odwołanie do System.ServiceModel.Http pakietu, uruchamiając następujące polecenie:

    dotnet add package System.ServiceModel.Http
    
  4. Dodaj kod klienta programu 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. Dodaj odwołanie do dotnet-svcutil.xmlserializer pakietu, uruchamiając następujące polecenie:

    dotnet add package dotnet-svcutil.xmlserializer
    

    Uruchomienie polecenia powinno dodać wpis do pliku projektu podobny do następującego:

    <ItemGroup>
      <DotNetCliToolReference Include="dotnet-svcutil.xmlserializer" Version="1.0.0" />
    </ItemGroup>
    
  6. Skompiluj aplikację, uruchamiając polecenie dotnet build. Jeśli wszystko powiedzie się, w folderze wyjściowym zostanie wygenerowany zestaw o nazwie MyWCFClient.XmlSerializers.dll . Jeśli narzędzie nie może wygenerować zestawu, w danych wyjściowych kompilacji zostaną wyświetlone ostrzeżenia.

  7. Uruchom usługę WCF, na przykład uruchomioną http://localhost:2561/Service1.svc w przeglądarce. Następnie uruchom aplikację kliencką i automatycznie załaduje i użyje wstępnie wygenerowanych serializatorów w czasie wykonywania.