terça-feira, julho 18, 2006

.net - serializar objectos

Existem várias formas de passar informação entre duas páginas ASPX. Tendo em conta a forma como o redireccionamento é feito, porque se utilizarmos o Server.Transfer, ganhamos mais uma forma de passar informação; as mais utilizadas são a Sessão, o ViewState e a QueryString. Existem outras, que pelas suas características não são tão utilizadas, como a cache e os cookies.

A questão coloca-se qdo não queremos apenas passar valores, mas sim objectos. Como passar objectos de uma página para outra? Utilizar o Server.Transfer pode ser uma solução, mas existem outras, como por exemplo através da serialização de deserialiazação do objecto em causa.

Neste caso, o processo seria o seguinte:

- Serializar o objecto que queremos passar (página origem);
- Colocar no ViewState o objecto serializado;
- Na página de destino, obter do ViewState a stream que representa o objecto;
- Deserializar a stream para reconstruir o objecto, desta vez já na página destino.

Segue o código para a serialização:

string strObjectToSave = String.Empty;
MemoryStream ms = new MemoryStream();

IFormatter Iformatter = new BinaryFormatter();
Iformatter.Serialize(ms, objMyObject);

byte[] bMyObject = ms.GetBuffer();

UnicodeEncoding encoding = new UnicodeEncoding();
strObjectToSave = encoding.GetString(bMyObject);

serStr.Append(strObjectToSave);
serStr.Append(";");

Nestes casos é necessário ter em atenção o tamanho da stream gerada na serialização nativa do .net, pois ela pode ser de um tamanho exagerado face ás necessidades. Se for o caso podem e devem ser imprementados os métodos de serialização e deserialização por forma a que a stream diminua de tamanho e se evite de sobrecarregar o ViewState.

1 Comments:

Blogger Unknown said...

Parabéns por este post, está realmente bom, não só pela técnica explicada da serialização, mas sobretudo pela originalidade.
Tens realmente uma visão e capacidade de conjugação de técnicas acima do normal.
Na sequência de post apetece-me escrever sobre o grau de importância do desenvolvimentoa.

2:59 a.m.

 

Enviar um comentário

<< Home