Melhorar a serialização de DataSet e Remoting desempenho

Traduções de Artigos Traduções de Artigos
Artigo: 829740 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Este artigo aborda a optimização do desempenho para classes de .NET Framework System.Data.DataSet maiores e fornece uma classe de wrapper de serialização de exemplo foi optimizada para serializar mais eficiente e anular a serialização classes DataSet maiores.

Mais Informação

Quando passar um objecto System.Data.DataSet entre processos, .NET Framework Remoting é utilizado para serializar, transporte e para anular a serialização da classe DataSet . Se passar um DataSet classe a partir de um .NET Web Service, internamente a classe do Microsoft .NET Framework System.Xml.Serialization.XMLSerializer é utilizada para serializar os dados de DataSet para o cliente. Se passar um DataSet de um objecto gerido hospedado no COM +, a classe BinaryFormatter é utilizada pelo .NET Framework Remoting. Independentemente do mecanismo de sistema de interacção remota que é utilizado pelo .NET Framework, a classe DataSet sempre converte dados internos XML quando os dados de serialização.

A classe de DataSet incluída com o Microsoft .NET Framework 1.0 e .NET Framework 1.1 funciona com eficácia para serialização pequenas quantidades de dados (centenas de linhas) no DataSet sobre .NET Framework Remoting. O mecanismo de serialização é ineficiente com um maior DataSet (milhares de linhas) e incorre em grande atribuições de memória (abreviado lived) transitório. Estas atribuições de memória reduzem escalabilidade da aplicação.

Nota Uma atribuição de memória temporária é uma atribuição de memória se verificou que ocorre durante o processamento de algumas secções de código. Por conseguinte, durante a serialização, durante o sistema de interacção remota durante a anulação da serialização de uma classe de DataSet , vários objectos geridos são atribuídos e desatribuídos internamente pelo .NET Framework Remoting para processar o pedido remoto. Atribuir e anular maiores ou mais objectos geridos coloca pressão adicional no sistema de gestão de memória de .NET e reduz a escalabilidade global. Por exemplo, uma aplicação que tenha muitos invocações de método em utilização que geram atribuições de memória temporária de grandes dimensões pode ficar sem memória antes de concluir todas as chamadas de método.

Poderá melhorar significativamente a serialização e sistema de interacção remota desempenho para maior DataSets utilizando uma classe de wrapper substituto correctamente concebido tipo ou serialização. Para obter mais informações sobre como utilizar um mecanismo de substituição ou um mecanismo de mensagens publicitárias (ou ambos) com a classe do .NET Framework DataSet , visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/msdnmag/issues/02/12/cuttingedge
No entanto, este artigo não fornece um exemplo de como implementar um tipo de substituição do DataSet ou uma classe de wrapper de serialização completo.

Este artigo contém uma classe de wrapper de serialização de exemplo foi optimizada para serializar mais eficaz e anular a serialização maior DataSets . A classe reduz significativamente atribuições de memória temporária versus remoto um DataSet normal. Grandes reduções em atribuições de memória temporária também melhoram o tempo de ponto-a-ponto do sistema de interacção remota e melhorar a escalabilidade quando utiliza um DataSet maior.

O exemplo fornece uma classe de wrapper de serialização chama DataSetSurrogate . A classe DataSetSurrogate é utilizada como uma classe de wrapper para qualquer DataSet que pretende remoto. O componente de servidor transmite o DataSet que pretende para o Construtor de DataSetSurrogate e, em seguida, passa a classe DataSetSurrogate ao cliente. No lado do cliente, o método DataSetSurrogate.ConvertToDataSet é utilizado para extrair o DataSet a classe DataSetSurrogate .

A classe DataSetSurrogate está marcado como Serializable e todos os campos na classe DataSetSurrogate também são classes serializáveis. Por conseguinte, quando remoto o objecto DataSetSurrogate , a infra-estrutura de sistema de interacção remota automaticamente serializes e deserializes o objecto DataSetSurrogate e todos os respectivos campos. A vantagem de serialização chave da classe DataSetSurrogate sobre a classe DataSet é a classe DataSetSurrogate serializes os dados no formato binário. Serialização utilizando um formato binário é muito mais eficiente nas memória e da CPU do que o formato de serialização de XML de DataSet existente.

Nota Para maximizar a vantagem de desempenho desta classe de wrapper de serialização, utilize o.NET Framework System.Runtime.Serialization.Formatters.Binary.BinaryFormatter classe quando o sistema de interacção remota. Sistema de interacção remota utilizando a classe do .NET Framework System.Runtime.Serialization.Formatters.Soap.SoapFormatter não é tão eficiente quando utiliza a classe DataSetSurrogate .

O ficheiro seguinte está disponível para transferência a partir do Centro de transferências da Microsoft:
Reduzir esta imagemExpandir esta imagem
Download
Download the SurrogateSample.exe package now.Para obter informações adicionais sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
119591Como obter ficheiros de suporte da Microsoft a partir de serviços on-line
Microsoft procedeu de vírus neste ficheiro. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o ficheiro foi publicado. O ficheiro é alojado em servidores com segurança avançada que o ajudam a impedir alterações não autorizadas ao ficheiro.

Acesso os ficheiros de exemplo

Guarde o ficheiro SurrogateSample.exe para a unidade C no computador. A partir daí pode extrair a estrutura de pastas. Existe um ficheiro readme de cada pasta que contém instruções adicionais.

Propriedades

Artigo: 829740 - Última revisão: 4 de agosto de 2004 - Revisão: 1.4
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Palavras-chave: 
kbmt kbdownload kbinfo KB829740 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 829740

Submeter comentários

 

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