Mise en cache des donnéesCaching Data

Vous pouvez mettre en cache les objets de données dans une personnalisation au niveau du document afin que les données soient accessibles en mode hors connexion ou sans ouvrir Microsoft Office Word ou Microsoft Office Excel.You can cache data objects in a document-level customization so that the data can be accessed offline, or without opening Microsoft Office Word or Microsoft Office Excel. Pour mettre en cache un objet, l’objet doit avoir un type de données qui répond à certaines exigences.To cache an object, the object must have a data type that meets certain requirements. Nombreux types de données courants dans le .NET Framework répondent à ces exigences, y compris String, DataSet, et DataTable.Many common data types in the .NET Framework meet these requirements, including String, DataSet, and DataTable.

S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets de niveau document pour Excel et Word.Applies to: The information in this topic applies to document-level projects for Excel and Word. Pour plus d’informations, consultez Fonctionnalités disponibles par type d’application et de projet Office.For more information, see Features Available by Office Application and Project Type.

Il existe deux façons d’ajouter un objet au cache de données :There are two ways to add an object to the data cache:

Configuration requise pour les objets de données doit être mis en cacheRequirements for Data Objects to be Cached

Pour mettre en cache un objet de données dans votre solution, l’objet doit respecter ces conditions :To cache a data object in your solution, the object must meet these requirements:

  • Être d’un champ public de lecture/écriture ou une propriété d’un élément hôte, tel que le ThisDocument ou ThisWorkbook classes.Be a read/write public field or property of a host item, such as the ThisDocument or ThisWorkbook classes.

  • Ne pas être un indexeur ou autre propriété paramétrée.Not be an indexer or other parameterized property.

    En outre, l’objet de données doit être sérialisable par le XmlSerializer (classe), ce qui signifie que le type de l’objet doit avoir les caractéristiques :In addition, the data object must be serializable by the XmlSerializer class, which means the type of the object must have these characteristics:

  • Être un type public.Be a public type.

  • Posséder un constructeur public sans paramètres.Have a public constructor with no parameters.

  • Pas d’exécuter du code qui requiert des privilèges de sécurité supplémentaires.Not execute code that requires additional security privileges.

  • Exposent uniquement en lecture/écriture des propriétés publiques (les autres propriétés seront ignorées).Expose only read/write public properties (other properties will be ignored).

  • Exposez pas des tableaux multidimensionnels (tableaux imbriqués sont acceptés).Not expose multi-dimensional arrays (nested arrays are accepted).

  • Ne pas retourner d’interfaces des propriétés et champs.Not return interfaces from properties and fields.

  • Implémente pas IDictionary si une collection.Not implement IDictionary if a collection.

    Lorsque vous mettez en cache un objet de données, le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime sérialise l’objet dans une chaîne XML qui est stockée dans un partie XML personnalisée dans le document.When you cache a data object, the Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime serializes the object into an XML string that is stored in a custom XML part in the document. Pour plus d'informations, consultez Custom XML Parts Overview.For more information, see Custom XML Parts Overview.

Limites de taille des données mises en cacheCached Data Size Limits

Il existe certaines limites relatives à la quantité totale de données, que vous pouvez ajouter au cache de données dans un document et la taille des objets dans le cache de données.There are some limits to the total amount of data you can add to the data cache in a document, and to the size of any individual object in the data cache. Si vous dépassez ces limites, l’application risquent de se fermer inopinément lorsque les données sont enregistrées dans le cache de données.If you exceed these limits, the application might close unexpectedly when the data is saved to the data cache.

Pour éviter ces limites, suivez ces instructions :To avoid these limits, follow these guidelines:

  • N’ajoutez pas de n’importe quel objet supérieure à 10 Mo au cache de données.Do not add any object larger than 10 MB to the data cache.

  • N’ajoutez pas plus de 100 Mo de données total pour le cache de données dans un document unique.Do not add more than 100 MB of total data to the data cache in a single document.

    Il s’agit des valeurs approximatives.These are approximate values. Les limites exactes dépendent de plusieurs facteurs, notamment la mémoire vive disponible et le nombre de processus en cours d’exécution.The exact limits depend on several factors, including the available RAM and the number of running processes.

Contrôler le comportement des objets mis en cacheControlling the Behavior of Cached Objects

Pour mieux contrôler le comportement d’un objet mis en cache, vous pouvez implémenter la ICachedType interface sur le type de l’objet mis en cache.To gain more control over the behavior of a cached object, you can implement the ICachedType interface on the type of the cached object. Par exemple, vous pouvez implémenter cette interface si vous souhaitez contrôler la façon dont l’utilisateur est averti lorsque l’objet a été modifiée.For example, you can implement this interface if you want to control how the user is notified when the object has been changed. Pour obtenir des exemples de code qui montrent comment implémenter ICachedType, consultez la ControlCollection classe dans l’exemple de contrôles dynamiques Excel et Word dynamique dans exemples de développement Office et des procédures pas à pas.For code examples that demonstrate how to implement ICachedType, see the ControlCollection class in the Excel Dynamic Controls Sample and Word Dynamic Controls Sample in Office Development Samples and Walkthroughs.

Rendre persistantes les modifications de données mises en cache dans les Documents protégés par mot de passePersisting Changes to Cached Data in Password-Protected Documents

Si vous mettez en cache des objets de données dans un document est protégé par un mot de passe, les modifications apportées aux données mises en cache ne sont pas enregistrées.If you cache data objects in a document that is protected with a password, changes to the cached data are not saved. Vous pouvez enregistrer les modifications aux données mises en cache en substituant deux méthodes.You can save changes to the cached data by overriding two methods. Substituer ces méthodes pour supprimer temporairement la protection lorsque le document est enregistré et réappliquez la protection une fois l’opération est terminée.Override these methods to temporarily remove the protection when the document is saved, and then reapply the protection after the save operation is complete.

Pour plus d’informations, consultez Comment : Cache des données dans un Document protégé.For more information, see How to: Cache Data in a Password-Protected Document.

Prévention des pertes de données lors de l’ajout de valeurs Null dans le Cache de donnéesPreventing Data Loss When Adding Null Values to the Data Cache

Lorsque vous ajoutez des objets au cache de données, tous les objets mis en cache doivent être initialisés à une non -null valeur avant que le document est enregistré puis fermé.When you add objects to the data cache, all of the cached objects must be initialized to a non-null value before the document is saved and closed. Si un objet mis en cache a un null valeur lorsque le document est enregistré puis fermé, le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime supprimera automatiquement tous les objets mis en cache à partir du cache de données.If any cached object has a null value when the document is saved and closed, the Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime will automatically remove all of the cached objects from the data cache.

Si vous ajoutez un objet avec un null valeur au cache de données à l’aide de la CachedAttribute attribut au moment du design, vous pouvez utiliser la ServerDocument classe pour initialiser les données mises en cache des objets avant l’ouverture du document.If you add an object with a null value to the data cache by using the CachedAttribute attribute at design time, you can use the ServerDocument class to initialize the cached data objects before the document is opened. Cela est utile si vous souhaitez initialiser les données mises en cache sur un serveur sans Word ou Excel, avant que le document est ouvert par un utilisateur final.This is useful if you want to initialize the cached data on a server without Word or Excel installed, before the document is opened by an end user. Pour plus d'informations, consultez Accès aux données des documents sur le serveur.For more information, see Accessing Data in Documents on the Server.

Voir aussiSee Also

Comment : mettre en Cache des données pour une utilisation hors connexion ou sur un serveur How to: Cache Data for Use Offline or on a Server
Comment : mettre en Cache par programmation une Source de données dans un Document Office How to: Programmatically Cache a Data Source in an Office Document
Comment : mettre en Cache les données dans un Document protégé par mot de passe How to: Cache Data in a Password-Protected Document
Procédure pas à pas : création d’une relation maître/détail à l’aide d’un groupe de données mis en cacheWalkthrough: Creating a Master Detail Relation Using a Cached Dataset