.NET Core에서 dotnet-svcutil.xmlserializer 사용
dotnet-svcutil.xmlserializer
NuGet 패키지는 .NET Core 프로젝트용 serialization 어셈블리를 미리 생성할 수 있습니다. WCF 서비스 계약에서 사용되고 XmlSerializer를 통해 직렬화할 수 있는 클라이언트 애플리케이션의 형식에 대해 C# serialization 코드를 미리 생성합니다. 이렇게 하면 해당 형식의 개체를 직렬화 또는 역직렬화할 때 XML serialization의 시작 성능이 향상됩니다.
필수 조건
- .NET Core 2.1 SDK 이상
- 선호하는 코드 편집기
dotnet --info
명령을 사용하여 이미 설치한 .NET SDK 및 런타임 버전을 확인할 수 있습니다.
시작하기
.NET Core 콘솔 애플리케이션에서 dotnet-svcutil.xmlserializer
를 사용하려면
.NET Framework에서 기본 템플릿 ‘WCF 서비스 애플리케이션’을 사용하여 ‘MyWCFService’라는 WCF 서비스를 만듭니다. 다음과 같이 서비스 메서드에
[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 2.1 이상 버전을 대상으로 하는 WCF 클라이언트 애플리케이션으로 .NET Core 콘솔 애플리케이션을 만듭니다. 예를 들어, 다음 명령으로 'MyWCFClient'라는 앱을 만듭니다.
dotnet new console --name MyWCFClient
프로젝트가 .NET Core 2.1 이상을 대상으로 하고 있는지 확인하려면 프로젝트 파일에서
TargetFramework
XML 요소를 검사합니다.<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이라는 어셈블리가 출력 폴더에 생성됩니다. 도구가 어셈블리 생성에 실패할 경우 빌드 출력에 경고가 표시됩니다.예를 들어 브라우저에서
http://localhost:2561/Service1.svc
를 실행하여 WCF 서비스를 시작합니다. 그런 다음, 클라이언트 애플리케이션을 시작하면 미리 생성된 직렬 변환기가 런타임 시 자동으로 로드되어 사용됩니다.
.NET