Amélioration des sérialisation DataSet et de performances de l'accès à distance

Traductions disponibles Traductions disponibles
Numéro d'article: 829740 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Cet article explique Optimisation des performances des classes .NET Framework System.Data.DataSet supérieures et fournit une classe wrapper exemple sérialisation qui est optimisée pour plus efficacement sérialiser et désérialiser les classes DataSet supérieures.

Plus d'informations

Lorsque vous transmettez un objet System.Data.DataSet entre les processus, .NET Framework Remoting est utilisé pour sérialiser transport et permettant de désérialiser la classe DataSet . Si vous transmettez un DataSet classe dans un service Web .NET, en interne la classe Microsoft .NET Framework System.Xml.Serialization.XMLSerializer est utilisée pour sérialiser les données DataSet au client. Si vous transmettez un DataSet en à partir d'un objet managé est hébergé dans COM +, la classe BinaryFormatter est utilisée par .NET Framework Remoting. Indépendamment du mécanisme de communication à distance qui est utilisé par le .NET Framework, la classe DataSet convertit toujours les données internes au format XML lors de la sérialisation des données.

La classe DataSet qui est inclue avec Microsoft .NET Framework 1.0 et .NET Framework 1.1 fonctionne efficacement pour la sérialisation de petites quantités de données (des centaines de lignes) dans le DataSet via .NET Framework Remoting. Le mécanisme de sérialisation est inefficace avec un plus grand DataSet (des milliers de lignes) et génère des allocations de mémoire (court terme) temporaires volumineux. Ces allocations de mémoire réduisent l'évolutivité des applications.

note Une allocation de mémoire temporaire est une allocation de mémoire courte durée qui se produit lors du traitement de certaines sections de code. Par conséquent, lors de la sérialisation, lors de l'accès distant et lors de la désérialisation d'une classe DataSet , différents objets gérés sont affectées et deallocated en interne par le .NET Framework Remoting pour traiter la demande à distance. Affectation et libérer les objets gérés plus volumineuse et plus grandes place pression supplémentaire sur le système de gestion de mémoire .NET et réduit l'évolutivité globale. Par exemple, une application qui a plusieurs appels de méthodes exécution qui génèrent des allocations de mémoire temporaire grande pouvez exécuter de mémoire avant d'effectuer tous les appels de méthode.

Vous pouvez considérablement améliorer les performances sérialisation et accès distant pour agrandir les DataSets typés en utilisant un classes de wrapper type ou la sérialisation de substitution correctement conçue. Pour plus d'informations via un mécanisme de substitution ou un mécanisme de wrapper (ou les deux) avec la classe .NET Framework DataSet , reportez-vous au site de Web MSDN (Microsoft Developer Network) suivant :
http://msdn.microsoft.com/msdnmag/issues/02/12/cuttingedge
Cependant, cet article ne fournit pas un exemple complet de comment faire pour implémenter un type de substitution DataSet ou une classe wrapper de sérialisation.

Cet article contient une classe de wrapper de sérialisation exemple qui est optimisée pour plus efficacement sérialiser et désérialiser les agrandir DataSets typés . La classe réduit considérablement les allocations de mémoire temporaire et accès distant un DataSet standard. Grande réductions concernant les allocations de mémoire temporaire également améliorer les temps de bout en accès distant et améliorer l'évolutivité lorsque vous utilisez un plus grand DataSet .

L'échantillon offre une classe wrapper sérialisation nommé DataSetSurrogate . La classe DataSetSurrogate est utilisée comme une classe wrapper pour les DataSet que vous souhaitez à distance. Le composant serveur transmet le DataSet souhaité au constructeur DataSetSurrogate et puis transmet la classe DataSetSurrogate au client. Sur le côté client, la méthode DataSetSurrogate.ConvertToDataSet est utilisée pour extraire le DataSet à partir de la classe DataSetSurrogate .

La classe DataSetSurrogate est marquée Serializable et tous les champs de la classe DataSetSurrogate sont également des classes sérialisables. Par conséquent, lorsque distant l'objet DataSetSurrogate , l'infrastructure d'accès distant automatiquement sérialise et désérialise l'objet DataSetSurrogate et tous ses champs. L'avantage de sérialisation clé de la classe DataSetSurrogate via la classe DataSet est que la classe DataSetSurrogate sérialise les données dans un format binaire. Sérialisation à l'aide d'un format binaire est beaucoup plus efficace en mémoire et processeur que le format de sérialisation XML du DataSet existant.

note Pour optimiser l'avantage de performances de cette classe wrapper sérialisation, utilisez le.NET Framework System.Runtime.Serialization.Formatters.Binary.BinaryFormatter classe lorsque accès distant. Accès distant en utilisant la classe .NET Framework System.Runtime.Serialization.Formatters.Soap.SoapFormatter n'est pas aussi efficace lorsque vous utilisez la classe DataSetSurrogate .

Le fichier suivant est téléchargeable à partir du Centre de téléchargement Microsoft :
Réduire cette imageAgrandir cette image
Download
Download the SurrogateSample.exe package now. Pour plus d'informations sur la façon de télécharger des fichiers de support technique Microsoft, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
119591 Comment obtenir des fichiers de support technique Microsoft auprès des services en ligne
Microsoft a analysé ce fichier de virus. Microsoft utilisé les logiciels de détection de virus plus récente ne sont associé à la date à laquelle le fichier a été validé. Le fichier est stocké sur des serveurs sécurisés, pour empêcher toute modification non autorisée dans le fichier.

Accéder les fichiers d'exemple

Enregistrez le fichier SurrogateSample.exe sur le lecteur C sur votre ordinateur. À partir de là, vous pouvez extraire la structure de dossiers. Il existe un fichier Lisezmoi dans chaque dossier qui contient des instructions supplémentaires.

Propriétés

Numéro d'article: 829740 - Dernière mise à jour: mercredi 4 août 2004 - Version: 1.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Mots-clés : 
kbmt kbdownload kbinfo KB829740 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 829740
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com