Definicao: Trata-se da conversao do objeto em binario, SOAP, ou XML. Serializando:o Cria-se um streamo Instancia-se um BinaryFormatter, parte do System.RunTime.Serialization.Formatters.Binaryo Usa o objeto instanciado BinaryFormatter, para serializar Deserializado:o E o caminho inverso da serializacao Criando uma classe serializavelo Utilizacao do atributo serializableo Por default, outros codigos podem acessar ou modificar instancias de objetos serializados, mas classes obtidas da internet ou de terceiros, sao protegidas pela classe Security Permission Desabilitando a serializacao de alguns membroso A serializacao de membros calculados ocupam mais espaco do que se nao estivessem serializado, por isso devemos atribuir o [NonSerialized] a esse membro especificoo Com esse atributo, os campos NonSerialized sao omitidos e nao calculados, logo devemos utilizar a interface IDeserializationCallBack e implementar a Sub IdeserializationCallBack_OnDeserialization para faze-lo. Desse modo o calculo do objeto somente e feito no momento da deserialiazacao Compatibilidade de algumas versoeso Objetos serializados devem acompanhar as versoes da aplicacao.o Para evitar esse problemas precisamos ativar a serializacao default ono OptionalField: Este componete evita que os novos componentes da versao deem erros, atribuindo para eles o valor de nullo Dicas para problemas de versao Nunca remova um campo serializavel Nunca atribua o NonSerializedAttribute para quem nunca teve Nunca troque o nome de uma campo serializeble Se colocar o um campo novo colocar o atributo OptionalField.o Formatos de serializacao binaryFormatter: Otimo para ser usado com o Framework .NET SOAPFormatter: Transforma em XML, pode ser utilizado por outras tecnologias, e melhor aceito pelos firewalls. E muito maior que o binarioo Controlando uma serializacao SOAP Atributos SOAPAtributte: Usado em campos publicos, propriedades, parametros ou valores de retorno serializando-os como XML. Trata Atributos SOAPElement: Usado em campos publicos, propriedades, parametros ou valores de retorno, serializando-os como XML. Trata elementos. AtributoXElemeto: Atributo fazem parte de elementos SOAPEnum: Campo Publico que e parte de um Enum. Serializado com o nome de um elemento enum SOAPIgnore: Usado em propriedades e campos publicos. Esses campos serao ignorados quando a classe for serializada SOAPInclude: Usado em classes herdadas e declaracao publica de webserviceso Dicas de Serializacao Na duvida marque com serializavel, um dia pode ser necessario Marque temporaro e membros calculados com nonserialized soapFormatter: Portabilidade binaryFormatter: EficienciaXML (System.XML.Serialization)(Serializacao) Condicoes para uma classe serializavel por XML:Seja publica, os metodos a serem serializados sejam publicos e seu construtor nao tenha parametrosAtributosXMLAnyAttribute: Usado em campos, propriedades, parametros ou valores de retorno publicos que utilizem um array de objetos XMLAttributes. Quando deserializavel, o array sera preenchido com os XMLAtrtibutes que representarao todos os objetos deste tipo desconhecidos ao schemaXMLAnyElement: Igual ao dos atributos so que para elementosXMLArray: Usado em campos, propriedades, parametros ou valores de retorno publicos que utilizem um array de objetos complexos. Os membros do array serao gerados como membros de um array XML.XMLArrayItem: Mesmo uso do XMLArray. Os tipos herdados podem ser inseridos num arrayXMLAttribute: Usado em campos publicos, propriedades, parametros, ou ainda valores de retorno. Esse atributo sera serializado como um atributo XMLXMLChoiceIdentifier: Utilizados nos mesmo tipos descritos anteriormente. O membro sera utilizado em um enum.XMLElement: Usado em campos publicos, propriedades, parametros, ou ainda valores de retorno. Esse atributo sera serializado como um