View
356
Download
3
Category
Preview:
DESCRIPTION
Nesta apresentação o aluno terá oportunidade de conhecer os recursos para serialização e desserialização em arquivos binários e XML de objetos construído em tempo de execução de sua aplicação.
Citation preview
.NET – POO – C# .NET
• Objetivo• Visão Geral • Serialização de Objetos• Serialização de XML• Conclusão
Capacitar o aluno no uso dos recursos de serialização binária
e no formato XML oferecidos pela plataforma .NET de forma
fácil, rápida e eficaz.
• Muitas aplicações necessitam de armazenar ou transferir objetos. • Para fazer as tarefas simples o possível, o .NET Framework inclui
muitas técnicas de serialização. • As técnicas para converter objetos em binário ou documentos
XML (Extensible Markup Language) que podem ser facilmente armazenados, transferidos e recuperados.
• Esta conversão é chamada de Serialização.• No desenvolvimento pode compreender 2 termos:
o Serialização - converter a instância de uma determinada classe em um arquivo;
o Desserialização - converter (recriar) do arquivo serializado para a instância de uma classe com os mesmos atributos previamente serializados.
Ser
iali
zaçã
o
Des
seri
aliz
ação
Instância de uma Classe
Meios de/para serialização
• Como serializar um objeto para um arquivo binário?
//Cria uma string para ser armazenada como conteúdostring data = “Este arquivo precisa ser armazenado.”;
//Cria o arquivo a ser salvoFileStream fs = new FileStream("SerializedString.Data", FileMode.Create);
//Cria o formatador binário para realizar a serialização BinaryFormatter bf = new BinaryFormatter();
//Uso o formatador binário para serealizar o conteúdo em um arquivo bináriobf.Serialize(fs, data);
//Fecha o arquivofs.Close();
• Como desserializar de um arquivo binário?
//Abre o arquivo para leitura dos dados FileStream fs = new FileStream("SerializedString.Data", FileMode.Open);
//Cria um formatador binário para a leitura dos dados BinaryFormatter bf = new BinaryFormatter();
//Cria o objeto para armazenar o retorno string data = "";
//Usa o formatador binário para desserializar o conteúdodata = (string)bf.Deserialize(fs);
//Fecha o arquivofs.Close();
//Exibe no console o conteúdo desserializadoConsole.WriteLine(data);
• Como criar uma classe que pode ser serializada?
[Serializable] public class ShoppingCartItem { public int productId; public decimal price; [OptionalField] public int quantity; [NonSerialized] public decimal total;
public ShoppingCartItem(int _productID, decimal _price, int _quantity) { productId = _productID; price = _price; quantity = _quantity; total = price * quantity; }
}
• Como recuperar uma valor não serializado a partir de outros campos serializados?
[Serializable]
public class ShoppingCartItem : IDeserializationCallback{
...
void IDeserializationCallback.OnDeserialization(Object sender)
{
//Após a desserialização, o total é calculado
total = price * quantity;
}
}
• O .NET Framework inclui uma série de bibliotecas para leitura e
gravação de arquivos XML, incluindo os namespaces:o System.Xml.Serialization;o System.Xml.
• A serialização provê métodos para converter objetos, incluindo os
baseados em classes customizadas, para e de arquivos XML.• Com a serialização XML, você pode escrever qualquer objeto para
um arquivo texto para depois obter com somente algumas linhas de
código.• Similarmente, você pode usar serialização XML para transmitir
objetos entre computadores através de WebServices mesmos se
os ambos os computadores não estiver usando o .NET Framework.
• Como serializar para XML?
//Cria o arquivo para salvar os dadosFileStream fs = new FileStream("SerializedDate.XML", FileMode. Create);
//Cria o serializador XML para serializar os dados XmlSerializer xs = new XmlSerializer(typeof(DateTime));
//Realiza a serialização da data para um arquivo XMLxs.Serialize(fs, System.DateTime.Now);
//Fecha o arquivo fs.Close();
• Como desserializar de um arquivo XML?
//Abre o arquivo para ser lidoFileStream fs = new FileStream("SerializedDate.XML", FileMode. Open);
//Cria uma instância de XmlSerializer para desserializarXmlSerializer xs = new Xml Serializer(typeof(DateTime));
//Usa o serializador XML para deserializar os dados contidos no arquivoDateTime previousTime = (DateTime)xs.Deserialize(fs);
//Fecha o arquivofs. Close();
//Exibe a data e hora desserializada Console.WriteLine("Day: " + previousTime.DayOfWeek + ", Time: " + previousTime.TimeOfDay.ToString());
• Como criar / modificar um objeto serializável?
[XmlRoot ("CartItem")]public class ShoppingCartItem { [XmlAttribute] public int productId; public decimal price; public int quantity;
[XmlIgnore] public decimal total; public ShoppingCartItem() { } }
• A serialização exporta um objeto como uma série de bytes,
onde que o objeto serializado define o valor de um objeto.• A maioria das classes podem ser serializadas simplesmente
adicionando o atributo [Serializable].• A serialização XML provê uma maneira de armazenar e
transferir objetos usando padrões abertos, logo pode ser
customizada para os requisitos de um schema XML,
permitindo a simples conversão em documentos XML e de
documentos XML para objetos.
.NET – POO – C# .NET
Recommended