Använda dotnet-svcutil.xmlserializer på .NET Core
dotnet-svcutil.xmlserializer
NuGet-paketet kan förgenerera en serialiseringssammansättning för .NET Core-projekt. Den genererar C#-serialiseringskod för de typer i klientprogrammet som används av WCF-tjänstkontraktet och som kan serialiseras av XmlSerializer. Detta förbättrar startprestandan för XML-serialisering vid serialisering eller deserialisering av objekt av dessa typer.
Förutsättningar
- .NET Core 2.1 SDK eller senare
- Din favoritkodredigerare
Du kan använda kommandot dotnet --info
för att kontrollera vilka versioner av .NET SDK och körning som du redan har installerat.
Komma igång
Så här använder dotnet-svcutil.xmlserializer
du i ett .NET Core-konsolprogram:
Skapa en WCF-tjänst med namnet "MyWCFService" med standardmallen "WCF Service Application" i .NET Framework. Lägg till
[XmlSerializerFormat]
attribut för tjänstmetoden på följande sätt:[ServiceContract] public interface IService1 { [XmlSerializerFormat] [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")] string GetData(int value); }
Skapa ett .NET Core-konsolprogram som WCF-klientprogram som är avsett för .NET Core 2.1 eller senare versioner. Skapa till exempel en app med namnet "MyWCFClient" med följande kommando:
dotnet new console --name MyWCFClient
Kontrollera xml-elementet i projektfilen för att se till att projektet riktar sig mot .NET Core 2.1 eller senare
TargetFramework
:<TargetFramework>netcoreapp2.1</TargetFramework>
Lägg till en paketreferens till genom att
System.ServiceModel.Http
köra följande kommando:dotnet add package System.ServiceModel.Http
Lägg till WCF-klientkoden:
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); }
Lägg till en referens till paketet genom att
dotnet-svcutil.xmlserializer
köra följande kommando:dotnet add package dotnet-svcutil.xmlserializer
Om du kör kommandot bör du lägga till en post i projektfilen som liknar den här:
<ItemGroup> <DotNetCliToolReference Include="dotnet-svcutil.xmlserializer" Version="1.0.0" /> </ItemGroup>
Skapa programmet genom att köra
dotnet build
. Om allt lyckas genereras en sammansättning med namnet MyWCFClient.XmlSerializers.dll i utdatamappen. Om verktyget inte kunde generera sammansättningen visas varningar i kompileringsutdata.Starta WCF-tjänsten genom att till exempel köra
http://localhost:2561/Service1.svc
i webbläsaren. Starta sedan klientprogrammet så läses det in automatiskt och använder de förgenererade serialiserarna vid körning.