Cómo: Mejorar el tiempo de inicio de las aplicaciones cliente WCF mediante XmlSerializer
Los servicios y las aplicaciones cliente que utilizan tipos de datos que son serializables utilizando XmlSerializer generan y compilan el código de la serialización para esos tipos de datos en el tiempo de ejecución, lo que se puede traducir en un rendimiento de inicio lento.
Nota: |
---|
El código de serialización generado previamente solo puede usarse en aplicaciones cliente y no en servicios. |
Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe) puede mejorar el rendimiento de inicio de estas aplicaciones generando el código de serialización necesario a partir de los ensamblados compilados para la aplicación. Svcutil.exe genera el código de serialización para todos los tipos de datos utilizados en contratos de servicios en el ensamblado de aplicación de compilación que se puede serializar utilizando XmlSerializer. Los contratos de operación y servicio que utiliza el XmlSerializer se marcan con XmlSerializerFormatAttribute.
Para generar el código de serialización de XmlSerializer
Compile su servicio o código de cliente en uno o más ensamblados.
Abra un símbolo del sistema de SDK.
En el símbolo del sistema, inicie la herramienta Svcutil.exe mediante el formato siguiente.
svcutil.exe /t:xmlSerializer <assemblyPath>*
El argumento
assemblyPath
especifica la ruta de acceso a un ensamblado que contiene tipos de contrato de servicio. Svcutil.exe genera el código de serialización para todos los tipos de datos utilizados en contratos de servicios en el ensamblado de aplicación de compilación que se puede serializar utilizando XmlSerializer.Svcutil.exe solo puede generar código de serialización de C#. Un archivo de código fuente se genera para cada ensamblado de entrada. No puede utilizar el conmutador /language para cambiar el lenguaje del código generado.
Para especificar la ruta de acceso a ensamblados dependientes, utilice la opción /reference.
Haga que el código de serialización generado esté disponible para su aplicación utilizando una de las opciones siguientes:
Compile el código de la serialización generado en un ensamblado independiente con el nombre [original assembly] .XmlSerializers .dll (por ejemplo, MyApp.XmlSerializers.dll). Su aplicación debe poder cargar el ensamblado, que se debe firmar con la misma clave como el ensamblado original. Si vuelve a compilar el ensamblado original, debe volver a generar el ensamblado de serialización.
Compile el código de serialización generado en un ensamblado independiente y utilice XmlSerializerAssemblyAttribute en el contrato de servicios que utiliza XmlSerializerFormatAttribute. Establezca las propiedades AssemblyName o CodeBase para señalar al ensamblado de serialización compilado.
Compile el código de serialización generado en su ensamblado de aplicación y agregue el XmlSerializerAssemblyAttribute al contrato de servicios que utiliza el XmlSerializerFormatAttribute. No establezca las propiedades AssemblyName ni CodeBase. Se supone que el ensamblado de serialización predeterminado es el ensamblado actual.
Ejemplo
El siguiente comando genera los tipos de serialización para los tipos de XmlSerializer utilizados por cualquier contrato de servicios en el ensamblado.
svcutil /t:xmlserializer myContractLibrary.exe
Vea también
Conceptos
Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe)