tecnologiatecnologiapessoallinkshomepróximo
 Novidades | Dicas | Downloads | Projetos | Padrões de UI

Estou implementando um framework nativo para serialização e persistência no Delphi/Kylix. Resolvi publicar aqui parte do código para que interessados possam testar, oferecer sugestões e críticas, enfim, me ajudar de alguma forma com a evolução desse framework. O código é gratuito mas não há qualquer tipo de garantia. Use-o por sua própria conta e risco. Se encontrar um bug, por favor me informe. Apesar de não oferecer suporte ou garantias, é interesse meu corrigir os problemas do framework. Espero que as idéias contidas no código possam ser de alguma ajuda em seus trabalhos. Os códigos compilam nos Delphi 5 e 7; se alguém quiser me ajudar com o Delphi 6 será de grande ajuda.

[JUN/2004]

Essa é a nova versão da biblioteca de serialização, com menor acoplamento a outras porções de código e maior coesão. São duas unidades de funcionalidade: clRTTI e clSerial. O código está liberado sob a licença BSD- isto é, você pode usá-lo para o que bem entender, por sua conta e risco.

clRTTI oferece duas classes para facilitar a manipulação das informações de tempo de execução dos objetos. Apesar de ser parte importante do serviço de serialização, as classes dessa unidade podem ser utilizadas de forma independente. TclProperty expõe RTTI de uma única propriedade de um objeto passados no seu construtor. TclProperties representa o conjunto de todas as propriedades publicadas de um objeto, oferecendo acesso às propriedades por índice e por nome.

clSerial é onde a lógica de serialização está implementada. TclSerializer é a classe responsável pelo serviço de serialização: leitura e escrita das propriedades dos objetos para um stream, na forma binária ou textual, ou para uma string, na forma textual. Mas a arquitetura é bastante flexível. Você pode registrar suas próprias classes serializadoras, com sua lógica particular, através dos serviços oferecidos pela TclSerializerFactory. Com isso, você pode serializar quaisquer propriedades e valores de suas classes, não ficando limitado à serialização apenas das propriedades com RTTI, como estabelece o serializador padrão TclSimpleSerializer. Esse funcionamento é bem semelhante ao próprio sistema de streaming do Delphi, que permite que você defina pseudo-propriedades através do método DefineProperties (vide help do Delphi). Se você implementar um serializador, você deverá registrá-lo para que ele fique acessível para serializar suas classes. Para registrá-lo para todos os objetos, utilize a forma RegisterSerializer(ClasseSerializador) e se quiser registrá-lo apenas para uma família de objetos, utilize a outra forma, RegisterSerializer(ClasseSerializador, Classe). Lembre-se de olhar o código disponível quando for desenvolver seu próprio serializador. A melhor escolha é especializar TclSimpleSerializer mas você pode querer fazer um do seu próprio jeito- e você está livre para isso! ;)

Para usar os fontes, basta baixar o arquivo e descompactá-lo em um diretório qualquer. Existe uma unidade com três exemplos- acredito, bem ilustrativos. Se for do seu interesse ficar ligado nas atualizações dessa página, ou dar algum retorno a respeito de suas impressões sobre o código, mande-me um e-mail para demian at lessa dot org!

#1. serialização 0.1.0 [2004-06-21]


[DEZ/2003]

Por enquanto, existe um link apenas para os fontes principais. Basta baixar o arquivo e descompactá-lo em um diretório qualquer. Documentação e exemplos ainda não existem, mas alguma coisa deverá ser publicada em breve. Se for do seu interesse ficar ligado nas atualizações dessa página, ou dar algum retorno a respeito de suas impressões sobre o código, mande-me um e-mail para demian at lessa dot org!

#1. persistência 0.0.4 [2003-12-04]
#2. demo básico






Topo