 |
| | | | | | | | | |
|
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
| |
|  |