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
- Sada .NET Core SDK 2.1 nebo novější
- Váš oblíbený editor kódu
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:
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); }
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>
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
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); }
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>
Sestavte aplikaci spuštěním
dotnet build
pří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í.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.