Quais são as práticas recomendadas para armazenar e manter objetos serializados em C #? Alguma estratégia ou padrão que se aplique?
O que eu acredito até agora é o seguinte:
- Prefira Json sobre XML, tanto por espaço quanto por velocidade, mas é mais fácil consultar xml / extrair dados via LINQ to XML para conjuntos de dados maiores.
- Para cada propriedade, mapeie explicitamente para um nome serializado. No futuro, quando você precisar renomear uma propriedade, seus dados serializados não serão interrompidos. Atributos ajudam com isso.
- Armazene algum tipo de informação de versão no objeto serializado, caso você precise migrar dados em massa no futuro
Atualização: (que eu descobri da maneira mais difícil)
- Armazene todas as datas de maneira uniforme em todo o aplicativo e em todas as versões. Tanto em relação ao formato quanto ao fuso horário.
c#
patterns-and-practices
serialization
Mihalis Bagos
fonte
fonte
Respostas:
Eu fiz bastante serialização ao longo dos anos. Aqui estão algumas coisas que criamos:
Prefira formatos legíveis por humanos sobre formatos binários. Geralmente, prefiro o Xml ao Json, principalmente porque você pode usar o Xslt para transformar o Xml quando precisar atualizar a versão.
Seja lá o que você estiver serializando, a lógica de desserialização e o armazenamento de dados devem permitir a versão dos dados serializados. As informações da versão provavelmente devem estar fora dos dados serializados, facilitam um pouco o acesso e a escolha da estratégia de desserialização correta.
Sua serialização deve ter testes de unidade em execução nos dois sentidos. IE, você deve fazer um teste para desserializar os dados e confirmar que tudo foi importado corretamente. E você deve ter algo que serialize os dados e confirme se eles são os json e xml corretos.
Se o ponto da referida serialização for multiplataforma, teste contra a outra plataforma. Provavelmente não há tanto problema agora quanto as plataformas amadureceram, mas houve momentos em que as coisas não concordavam sobre como o json deveria ser formatado.
fonte
Os pontos mencionados são práticos e é bom ter em mente. Gostaria de mencionar diferentes tipos de serializações que podem ser úteis, dependendo das necessidades de seu aplicativo.
storage
ousocket-based network
fluxos.Mais informações de fonte oficial - programação MSDN C #
Além disso, tudo isso precisa ser práticas dentro do processo SDLC (ou seja, ter ambiente para testar, controle de versão etc.)
fonte