다음을 통해 공유


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

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

비고

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

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

XmlSerializer 직렬화 코드를 생성하려면

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

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

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

    svcutil.exe /t:xmlSerializer  <assemblyPath>*
    

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

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

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

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

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

    2. 생성된 serialization 코드를 별도의 어셈블리로 컴파일하고, 서비스 계약에 XmlSerializerAssemblyAttribute를 사용하십시오. AssemblyName 또는 CodeBase 속성을 컴파일된 직렬화 어셈블리를 가리키도록 설정합니다.

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

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

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

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

  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 형식의 직렬화 형식을 생성합니다.

svcutil /t:xmlserializer myContractLibrary.exe

참고하십시오