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
- Zestaw .NET Core 2.1 SDK lub nowszy
- Twój ulubiony edytor kodu
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:
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); }
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>
Dodaj odwołanie do
System.ServiceModel.Http
pakietu, uruchamiając następujące polecenie:dotnet add package System.ServiceModel.Http
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); }
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>
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.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.