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:
- Instanciamos un FileStream para almacenar el objeto serializado.
- Instanciamos un Formateador para serializar el objeto (Es necesario agregar una referencia a "System.Runtime.Serialization.Formatters.Soap.dll").
- Serializamos el objeto llamando al método serialize del formateador.
Para des-serializar un objeto seguimos los mismos pasos de manera inversa:
- Instanciamos un FileStream para leer el objeto serializado.
- Instanciamos un Formateador para des-serializar el objeto.
- 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.:
Publicar un comentario