Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Пакет dotnet-svcutil.xmlserializer NuGet может предварительно создать сборку сериализации для проектов .NET Core. Он предварительно создает код сериализации C# для типов в клиентском приложении, которые используются контрактом службы WCF и могут быть сериализованы XmlSerializer. Это повышает производительность запуска сериализации XML при сериализации или десериализации объектов этих типов.
Предпосылки
- Пакет SDK для .NET Core 2.1 или более поздней версии
- Ваш любимый редактор кода
С помощью команды dotnet --info можно проверить, какие версии пакета SDK для .NET и среды выполнения уже установлены.
Начало работы
Чтобы использовать dotnet-svcutil.xmlserializer в консольном приложении .NET Core, выполните следующее:
Создайте службу WCF с именем MyWCFService с помощью шаблона по умолчанию "Приложение службы WCF" в .NET Framework. Добавьте
[XmlSerializerFormat]атрибут в метод службы, как показано ниже:[ServiceContract] public interface IService1 { [XmlSerializerFormat] [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")] string GetData(int value); }Создайте консольное приложение .NET Core в качестве клиентского приложения WCF, предназначенного для .NET Core 2.1 или более поздних версий. Например, создайте приложение с именем MyWCFClient с помощью следующей команды:
dotnet new console --name MyWCFClientЧтобы убедиться, что проект предназначен для .NET Core 2.1 или более поздней версии, проверьте
TargetFrameworkXML-элемент в файле проекта:<TargetFramework>netcoreapp2.1</TargetFramework>Добавьте ссылку на
System.ServiceModel.Httpпакет, выполнив следующую команду:dotnet add package System.ServiceModel.HttpДобавьте код клиента 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); }Добавьте ссылку на
dotnet-svcutil.xmlserializerпакет, выполнив следующую команду:dotnet add package dotnet-svcutil.xmlserializerВыполнение команды должно добавить запись в файл проекта следующим образом:
<ItemGroup> <DotNetCliToolReference Include="dotnet-svcutil.xmlserializer" Version="1.0.0" /> </ItemGroup>Постройте приложение, запустив
dotnet build. Если все успешно, сборка с именем MyWCFClient.XmlSerializers.dll создается в выходной папке. Если средство не удалось создать сборку, вы увидите предупреждения в выходных данных сборки.Запустите службу WCF, например, выполнив
http://localhost:2561/Service1.svcв браузере. Затем запустите клиентское приложение, и он автоматически загружает и использует предварительно созданные сериализаторы во время выполнения.