20 junio, 2007

Serialización SOAP

Esta serialización es basado en XML y es recomendado cuando el objeto será des-serializado en diferentes plataformas o cuando va a ser trasportado por la red. Los objetos serializados con este formato pueden ser tres o cuatro veces más grandes que los serializados mediante el formato binario. Serialicemos un objeto mediante el formato SOAP en un archivo para su posterior recuperación:

Imports System.IO

Imports System.Runtime.Serialization

Imports System.Runtime.Serialization.Formatters.Soap

Module Module1

<System.Serializable()> Public Class Persona

Public Nombre As String

Public Apellido As String

Public Edad As Integer

End Class

Sub Main()

Dim Manuel As New Persona()

Manuel.Apellido = "Salas"

Manuel.Nombre = "Manuel"

Manuel.Edad = 30

Dim archivo As New FileStream("c:\temp\f_persona.xml", FileMode.Create)

Dim formateador As New SoapFormatter

formateador.Serialize(archivo, Manuel)

archivo.Close()

End Sub

End Module

Como podemos observar básicamente son tres pasos los que debemos realizar para serializar un objeto:

  1. Instanciamos un FileStream para almacenar el objeto serializado.
  2. Instanciamos un Formateador para serializar el objeto (Es necesario agregar una referencia a "System.Runtime.Serialization.Formatters.Soap.dll").
  3. Serializamos el objeto llamando al método serialize del formateador.

Para des-serializar un objeto seguimos los mismos pasos de manera inversa:

  1. Instanciamos un FileStream para leer el objeto serializado.
  2. Instanciamos un Formateador para des-serializar el objeto.
  3. Des-serializamos el objeto llamando al método deserialize del formateador.

Veamos como des-serializar el objeto que serializamos en el fragmento de código anterior:

Imports System.IO

Imports System.Runtime.Serialization

Imports System.Runtime.Serialization.Formatters

Module Module1

<System.Serializable()> Public Class Persona

Public Nombre As String

Public Apellido As String

Public Edad As Integer

End Class

Sub Main()

Dim Manuel As New Persona()

Dim archivo As New FileStream("c:\temp\f_persona.xml", FileMode.Open)

Dim formateador As New Soap.SoapFormatter

Manuel = formateador.Deserialize(archivo)

archivo.Close()

Console.WriteLine("Nombre ={0}, Apellido = {1}, Edad = {2}", Manuel.Nombre, Manuel.Apellido, Manuel.Edad)

Console.ReadKey()

End Sub

End Module

No hay comentarios.: