방법: XmlSerializer를 사용하여 WCF 클라이언트 애플리케이션의 시작 시간 향상

XmlSerializer를 사용하여 serialize할 수 있는 데이터 형식을 사용하는 서비스 및 클라이언트 애플리케이션은 런타임에 해당 데이터 형식에 대한 serialization 코드를 생성하고 컴파일합니다. 이로 인해 시작 시 성능이 저하될 수 있습니다.

참고 항목

미리 생성된 serialization 코드는 서비스가 아닌 클라이언트 애플리케이션에서만 사용할 수 있습니다.

ServiceModel 메타데이터 유틸리티 도구(Svcutil.exe)는 애플리케이션에 대해 컴파일된 어셈블리에서 필요한 serialization 코드를 생성하여 이러한 애플리케이션의 시작 성능을 개선시킬 수 있습니다. Svcutil.exe는 XmlSerializer를 사용하여 serialize될 수 있는 컴파일된 애플리케이션 어셈블리에서 서비스 계약에 사용하는 모든 데이터 형식에 대한 serialization 코드를 생성합니다. XmlSerializer를 사용하는 서비스 및 작업 계약은 XmlSerializerFormatAttribute와 함께 표시됩니다.

XmlSerializer serialization 코드를 생성하려면

  1. 서비스 또는 클라이언트 코드를 하나 이상의 어셈블리로 컴파일합니다.

  2. SDK 명령 프롬프트를 엽니다.

  3. 명령 프롬프트에서 다음 형식을 사용하여 Svcutil.exe 도구를 실행합니다.

    svcutil.exe /t:xmlSerializer  <assemblyPath>*  
    

    assemblyPath 인수는 서비스 계약 형식이 포함된 어셈블리의 경로를 지정합니다. Svcutil.exe는 XmlSerializer를 사용하여 serialize될 수 있는 컴파일된 애플리케이션 어셈블리에서 서비스 계약에 사용하는 모든 데이터 형식에 대한 serialization 코드를 생성합니다.

    Svcutil.exe는 C# serialization 코드만 생성할 수 있습니다. 각 입력 어셈블리에 대해서 하나의 소스 코드 파일이 생성됩니다. 생성된 코드의 언어를 /language 스위치를 사용해서 변경할 수 없습니다.

    종속 어셈블리의 경로를 지정하려면 /reference 옵션을 사용합니다.

  4. 다음 옵션 중 하나를 사용하여 생성된 serialization 코드를 애플리케이션에서 사용할 수 있도록 합니다.

    1. 생성된 serialization 코드를 이름이 [original assembly].XmlSerializers.dll(예: MyApp.XmlSerializers.dll)인 별도의 어셈블리로 컴파일합니다. 애플리케이션에서 어셈블리를 로드할 수 있어야 하며, 해당 어셈블리는 원본 어셈블리와 동일한 키로 서명되어야 합니다. 원본 어셈블리를 다시 컴파일하면 serialization 어셈블리도 다시 생성해야 합니다.

    2. 생성된 serialization 코드를 별도의 어셈블리로 컴파일하고 XmlSerializerAssemblyAttribute를 사용하는 서비스 계약에 XmlSerializerFormatAttribute를 사용합니다. 컴파일된 serialization 어셈블리를 가리키기 위해 AssemblyName 또는 CodeBase 속성을 설정합니다.

    3. 생성된 serialization 코드를 애플리케이션 어셈블리로 컴파일하고 XmlSerializerAssemblyAttribute를 사용하는 서비스 계약에 XmlSerializerFormatAttribute를 추가합니다. AssemblyName 또는 CodeBase 속성은 설정하지 마십시오. 기본 serialization 어셈블리가 현재 어셈블리로 간주됩니다.

Visual Studio에서 XmlSerializer serialization 코드를 생성하려면

  1. Visual Studio에서 WCF 서비스 및 클라이언트 프로젝트를 만듭니다. 그런 다음, 클라이언트 프로젝트에 서비스 참조를 추가합니다.

  2. serviceReference ->reference.svcmap 아래 클라이언트 앱 프로젝트의 reference.cs 파일에서 서비스 계약에 XmlSerializerFormatAttribute을(를) 추가합니다. 이러한 파일을 보려면 솔루션 탐색기에서 모든 파일을 표시해야 합니다.

  3. 클라이언트 앱을 빌드합니다.

  4. ServiceModel 메타데이터 유틸리티 도구(Svcutil.exe)에서 다음 명령을 사용하여 미리 생성된 serializer .cs 파일을 만듭니다.

    svcutil.exe /t:xmlSerializer  <assemblyPath>*  
    

    assemblyPath 인수는 WCF 클라이언트 어셈블리의 경로를 지정합니다.

    예:

    svcutil.exe /t:xmlSerializer wcfclient.exe  
    

    WCFClient.XmlSerializers.dll.cs 파일이 생성됩니다.

  5. 미리 생성된 serialization 어셈블리를 컴파일합니다.

    이전 단계의 예제에 따라 컴파일 명령은 다음과 같습니다.

    csc /r:wcfclient.exe /out:WCFClient.XmlSerializers.dll /t:library WCFClient.XmlSerializers.dll.cs  
    

    생성된 WCFClient.XmlSerializers.dll 클라이언트 앱과 동일한 디렉터리에 있는지 확인합니다. 이 경우 WCFClient.exe입니다.

  6. 평소와 같이 클라이언트 앱을 실행합니다. 미리 생성된 serialization 어셈블리가 사용됩니다.

예시

다음 명령은 어셈블리의 모든 서비스 계약이 사용하는 XmlSerializer 형식에 대해 serialization 형식을 생성합니다.

svcutil /t:xmlserializer myContractLibrary.exe  

참고 항목