次の方法で共有


方法: XmlSerializer を使用して WCF クライアント アプリケーションの起動時間を短縮する

XmlSerializerを使用してシリアル化可能なデータ型を使用するサービスおよびクライアント アプリケーションは、実行時にそれらのデータ型のシリアル化コードを生成およびコンパイルします。そのため、起動パフォーマンスが低下する可能性があります。

事前に生成されたシリアル化コードは、サービスではなく、クライアント アプリケーションでのみ使用できます。

ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe) は、アプリケーションのコンパイル済みアセンブリから必要なシリアル化コードを生成することで、これらのアプリケーションの起動パフォーマンスを向上させることができます。 Svcutil.exe は、 XmlSerializerを使用してシリアル化できるコンパイル済みアプリケーション アセンブリのサービス コントラクトで使用されるすべてのデータ型のシリアル化コードを生成します。 XmlSerializerを使用するサービス コントラクトと操作コントラクトは、XmlSerializerFormatAttributeでマークされます。

XmlSerializer シリアル化コードを生成するには

  1. サービスまたはクライアント コードを 1 つ以上のアセンブリにコンパイルします。

  2. SDK コマンド プロンプトを開きます。

  3. コマンド プロンプトで、次の形式で Svcutil.exe ツールを起動します。

    svcutil.exe /t:xmlSerializer  <assemblyPath>*
    

    assemblyPath引数は、サービス コントラクト型を含むアセンブリへのパスを指定します。 Svcutil.exe は、 XmlSerializerを使用してシリアル化できるコンパイル済みアプリケーション アセンブリのサービス コントラクトで使用されるすべてのデータ型のシリアル化コードを生成します。

    Svcutil.exe は C# シリアル化コードのみを生成できます。 入力アセンブリごとに 1 つのソース コード ファイルが生成されます。 /language スイッチを使用して、生成されたコードの言語を変更することはできません。

    依存アセンブリへのパスを指定するには、 /reference オプションを使用します。

  4. 次のいずれかのオプションを使用して、生成されたシリアル化コードをアプリケーションで使用できるようにします。

    1. 生成されたシリアル化コードを、[元のアセンブリ].XmlSerializers.dll という名前の別のアセンブリにコンパイルします (たとえば、MyApp.XmlSerializers.dll)。 アプリケーションでアセンブリを読み込める必要があります。このアセンブリは、元のアセンブリと同じキーで署名する必要があります。 元のアセンブリを再コンパイルする場合は、シリアル化アセンブリを再生成する必要があります。

    2. 生成されたシリアル化コードを別のアセンブリにコンパイルし、XmlSerializerAssemblyAttributeを使用するサービス コントラクトでXmlSerializerFormatAttributeを使用します。 コンパイル済みのシリアル化アセンブリを指す AssemblyName または CodeBase プロパティを設定します。

    3. 生成されたシリアル化コードをアプリケーション アセンブリにコンパイルし、XmlSerializerAssemblyAttributeを使用するサービス コントラクトにXmlSerializerFormatAttributeを追加します。 AssemblyNameまたはCodeBaseプロパティは設定しないでください。 既定のシリアル化アセンブリは、現在のアセンブリと見なされます。

Visual Studio で XmlSerializer シリアル化コードを生成するには

  1. Visual Studio で WCF サービスとクライアント プロジェクトを作成します。 次に、クライアント プロジェクトにサービス参照を追加します。

  2. reference.cs ファイルのXmlSerializerFormatAttributeをクライアント アプリ プロジェクトのserviceReference - >にあるサービス コントラクトに追加します。 これらのファイルを表示するには、 ソリューション エクスプローラー ですべてのファイルを表示する必要があることに注意してください。

  3. クライアント アプリをビルドします。

  4. ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe) を使用して、コマンドを使用して事前に生成されたシリアライザー .cs ファイルを作成します。

    svcutil.exe /t:xmlSerializer  <assemblyPath>*
    

    assemblyPath 引数は、WCF クライアント アセンブリへのパスを指定します。

    例:

    svcutil.exe /t:xmlSerializer wcfclient.exe
    

    WCFClient.XmlSerializers.dll.cs ファイルが生成されます。

  5. 事前に生成されたシリアル化アセンブリをコンパイルします。

    前の手順の例に基づいて、コンパイル コマンドは次のようになります。

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

    生成された WCFClient.XmlSerializers.dll がクライアント アプリと同じディレクトリにあることを確認します。この場合は WCFClient.exe

  6. 通常どおりにクライアント アプリを実行します。 事前に生成されたシリアル化アセンブリが使用されます。

Example

次のコマンドは、アセンブリ内のサービス コントラクトで使用される XmlSerializer 型のシリアル化型を生成します。

svcutil /t:xmlserializer myContractLibrary.exe

こちらも参照ください