Datos de caché

Puede almacenar en caché objetos de datos en una personalización de nivel de documento para que se pueda acceder a los datos sin conexión o sin abrir Microsoft Office Word o Microsoft Office Excel. Para almacenar en caché un objeto, el objeto debe tener un tipo de datos que cumpla ciertos requisitos. Muchos tipos de datos comunes de .NET Framework cumplen estos requisitos, como String, DataSety DataTable.

Se aplica a: la información de este tema se aplica a proyectos de nivel de documento para Excel y Word. Para obtener más información, consulte Características disponibles por aplicación de Office lication y tipo de proyecto.

Hay dos maneras de agregar un objeto a la caché de datos:

Requisitos para que los objetos de datos se almacenen en caché

Para almacenar en caché un objeto de datos en la solución, el objeto debe cumplir estos requisitos:

  • Ser un campo público de lectura y escritura o una propiedad de un elemento host, como las ThisDocument clases o ThisWorkbook .

  • No es un indexador ni otra propiedad parametrizada.

    Además, el objeto de datos debe ser serializable por la XmlSerializer clase , lo que significa que el tipo del objeto debe tener estas características:

  • Ser un tipo público.

  • Tener un constructor público sin parámetros.

  • No ejecute código que requiera privilegios de seguridad adicionales.

  • Exponga solo las propiedades públicas de lectura y escritura (se omitirán otras propiedades).

  • No exponer matrices multidimensionales (se aceptan matrices anidadas).

  • No devuelve interfaces de propiedades y campos.

  • No se implementa IDictionary si una colección.

    Al almacenar en caché un objeto de datos, el Visual Studio Tools para Office tiempo de ejecución serializa el objeto en una cadena XML almacenada en un elemento XML personalizado del documento. Para obtener más información, consulte Información general sobre elementos XML personalizados.

Límites de tamaño de datos almacenados en caché

Hay algunos límites en la cantidad total de datos que puede agregar a la caché de datos en un documento y al tamaño de cualquier objeto individual de la caché de datos. Si supera estos límites, la aplicación podría cerrarse inesperadamente cuando los datos se guardan en la caché de datos.

Para evitar estos límites, siga estas directrices:

  • No agregue ningún objeto superior a 10 MB a la caché de datos.

  • No agregue más de 100 MB de datos totales a la caché de datos en un único documento.

    Estos son valores aproximados. Los límites exactos dependen de varios factores, incluida la RAM disponible y el número de procesos en ejecución.

Controlar el comportamiento de los objetos almacenados en caché

Para obtener más control sobre el comportamiento de un objeto almacenado en caché, puede implementar la ICachedType interfaz en el tipo del objeto almacenado en caché. Por ejemplo, puede implementar esta interfaz si desea controlar cómo se notifica al usuario cuando se ha cambiado el objeto. Para obtener ejemplos de código que muestran cómo implementar ICachedType, vea la ControlCollection clase en el ejemplo de controles dinámicos de Excel y el ejemplo de controles dinámicos de Word en ejemplos de desarrollo de Office y tutoriales.

Conservar los cambios en los datos almacenados en caché en documentos protegidos con contraseña

Si almacena en caché objetos de datos en un documento protegido con una contraseña, no se guardan los cambios en los datos almacenados en caché. Puede guardar los cambios en los datos almacenados en caché reemplazando dos métodos. Invalide estos métodos para quitar temporalmente la protección cuando se guarda el documento y, a continuación, vuelva a aplicar la protección una vez completada la operación de guardado.

Para obtener más información, vea Cómo: Almacenar datos en caché en un documento protegido con contraseña.

Evitar la pérdida de datos al agregar valores NULL a la caché de datos

Al agregar objetos a la memoria caché de datos, todos los objetos almacenados en caché deben inicializarse en un valor que no sea NULL antes de guardar y cerrar el documento. Si algún objeto almacenado en caché tiene un valor NULL cuando se guarda y cierra el documento, el tiempo de ejecución de Visual Studio Tools para Office quitará automáticamente todos los objetos almacenados en caché de la memoria caché de datos.

Si agrega un objeto con un valor NULL a la memoria caché de datos mediante el CachedAttribute atributo en tiempo de diseño, puede usar la ServerDocument clase para inicializar los objetos de datos almacenados en caché antes de que se abra el documento. Esto resulta útil si desea inicializar los datos almacenados en caché en un servidor sin Word o Excel instalados, antes de que un usuario final abra el documento. Para obtener más información, consulte Acceso a datos en documentos en el servidor.