mrma3do
Usuario (Argentina)

A pedido del usuario DAYAO que me pidio que diera ejemplos de esta tecnica les digo la forma de serializar objetos. ACARACION: Personalmente programo con Visual Studio 2005 en Español y en .NET Introduccion: La serialización (o marshalling en inglés) consiste en un proceso de codificación de un Objeto (programación orientada a objetos) en un medio de almacenamiento (como puede ser un archivo, o un buffer de memoria) con el fin de transmitirlo a través de una conexión en red como una serie de bytes o en un formato humanamente más legible como XML o JSON, entre otros. La serie de bytes o el formato pueden ser usados para crear un nuevo objeto que es idéntico en todo al original, incluido su estado interno (por tanto, el nuevo objeto es un clon del original). La serialización es un mecanismo ampliamente usado para transportar objetos a través de una red, para hacer persistente un objeto en un archivo o base de datos, o para distribuir objetos idénticos a varias aplicaciones o localizaciones. Codigo: Imports System.IO '<- imports para poder guardar lo que serialicemos Imports System.Runtime.Serialization '<- imports para poder serializar el objeto que queremos Dim lista_palabras As New List (Of String) '<- objeto que vamos a serializar Public Function serializar_obj() '<- funcion que va a serializar el objeto Dim archivo As Stream = File.Create("c:\objeto") '<- se crea un objeto stream dandole como parametro la ruta y el nombre del archivo a guardar. Dim serializer As New Formatters.Binary.BinaryFormatter() '<- se crea el objeto que va a serializar. serializer.Serialize(archivo, lista_palabras) '<- se llama al objeto que va a serializar pasandole como parametros el objeto stream que creamos antes donde se va a guardar lo que serialicemos y lo que queremos serializar, en este caso el objeto "lista_palabras". archivo.Close() '<- se cierra el objeto "archivo" para asi terminar de guardarlo. Return Nothing End Function Public Function deserializar_obj() '<- funcion que va a deserializar el objeto Dim archivo As Stream = File.OpenRead("c:\objeto") '<- se crea un objeto stream dandole como parametro la ruta y el nombre del archivo que guardamos antes, el que se va a deserializar. Dim deserializer As New Formatters.Binary.BinaryFormatter() '<- se crea el objeto que va a deserializar. lista_palabras = CType(deserializer.Deserialize(archivo), List(Of String)) '<-1: al objeto "lista_palabras" se le asigna el resultado del CType pasandole como parametros el objeto que va a deserializar y el tipo se supone que es, en este caso un List (Of String). 2: Al primer parametro del CType que era el objeto que deserializa a su vez hay que pasarle como parametro el objeto "archivo" que es el archivo que se serializo anteriormente, archivo.Close() '<- se cierra el objeto "archivo". Return Nothing End Function De esta forma se puede persistir el contenido o valores de objetos, lo unico a tener en cuenta es que los objetos en el momento de ejecucion son almacenados en memoria, como en el ejemplo, si se llegara a deserializar una lista de string que almacena millones de lineas estas pasarian a memoria y podria llegar a sobrecargarse, este metodo se utiliza cuando quermos guardar los valores de objetos pequeños, para almacenar tantos string es preferible guardarlo en un txt o en una base de datos ya sea sql, access u otras. Espero que les sirva y como no soy un super hacker o el mega programador acepto criticas constructivas y/o sugerencias, el codigo que puse como ejemplo lo uso habitualmente el varias alicaciones que he hecho y funciona, si los capos que saben muchos ven que me equivoque avicen. Saludos y Comenten.-