.NET - POO - C# .NET - Aula 05 - Serialização

15
.NET – POO – C# .NET

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.

Transcript of .NET - POO - C# .NET - Aula 05 - Serialização

Page 1: .NET - POO - C# .NET - Aula 05 - Serialização

.NET – POO – C# .NET

Page 2: .NET - POO - C# .NET - Aula 05 - Serialização

• Objetivo• Visão Geral • Serialização de Objetos• Serialização de XML• Conclusão

Page 3: .NET - POO - C# .NET - Aula 05 - Serializaçã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.

Page 4: .NET - POO - C# .NET - Aula 05 - Serialização

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

Page 5: .NET - POO - C# .NET - Aula 05 - Serialização

Ser

iali

zaçã

o

Des

seri

aliz

ação

Instância de uma Classe

Meios de/para serialização

Page 6: .NET - POO - C# .NET - Aula 05 - 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();

Page 7: .NET - POO - C# .NET - Aula 05 - Serialização

• 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);

Page 8: .NET - POO - C# .NET - Aula 05 - Serialização

• 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;     }

 }

Page 9: .NET - POO - C# .NET - Aula 05 - Serialização

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

    } 

}

Page 10: .NET - POO - C# .NET - Aula 05 - Serialização

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

Page 11: .NET - POO - C# .NET - Aula 05 - Serialização

• 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();

Page 12: .NET - POO - C# .NET - Aula 05 - Serialização

• 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());

Page 13: .NET - POO - C# .NET - Aula 05 - Serialização

• 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() { }  }

Page 14: .NET - POO - C# .NET - Aula 05 - Serialização

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

Page 15: .NET - POO - C# .NET - Aula 05 - Serialização

.NET – POO – C# .NET