En computación, serialización es el proceso de convertir datos abstractos en datos almacenados (en forma persistente) o datos para trasmitirlos a otro destino (servidor de red o dispositivo).
He diseñado BinaryMessage basándome en productos como protocol-buffers, msgpack; debido a la necesidad de trasmitir datos en un producto que estoy terminando, esremo, necesitaba serializar, trasmitir y de-serializar datos al recibirlos de una forma lo más automática posible.
Tal vez pueden pensar, "hey!, para que crear la rueda si ya hay xml o json?". Pues a parte de javascript que tiene un tipo de datos json, en todos los demás lenguajes hay unas clases para manejar XML o JSON, por lo general, creamos clases para manejar datos y queremos que esas clases las podamos serializar y con XML o JSON tenemos que "mapearlas" a esos tipos de objetos.
Además el tamaño de los objetos serializados son menores, pero, y por que no comprime los datos? Cuando los datos son pequeños (como los mensajes de un chat) los datos comprimidos son mayores a los datos originales. Y cuando los productos que brindamos están en servicios en la nube donde cobran el ancho de banda de entrada/salida, los bytes cuentan!
Otro punto es utilizar el editor para ayudarnos con auto-completado ya que son propiedades de clases y con XML y JSON no podemos usar auto-completar a propiedades.
Para usar BinaryMessage una clase (si no es creada con el compilador o usando la clase BinaryMessage.Parser) debe heredarse de BinaryMessage.Message adicionar attributos y usar .WriteTo a un MemoryBlock/BinaryStream para serializar y utilizar .ReadFrom desde un MemoryBlock/BinaryStream para de-serializar.
Ejemplo serializar:
Dim john As New People john.id= 5 john.name= "John Do€" john.email= "john@server.com" john.address= Array("1600 Pennsylvania Avenue", "935 Pennsylvania Avenue") Dim phone1 As New PhoneNumber phone1.number= "123 4567" phone1.type= 1 phone1.flags= Array(4900000000, 5000000000, 80000000000) john.phones.Append phone1 Dim phone2 As New PhoneNumber phone2.number= "555 5555" phone2.type= 2 john.phones.Append phone2 Dim phone3 As New PhoneNumber phone3.number= "999 5555" phone3.type= 3 john.phoneX= phone3 Dim prefs As New Dictionary prefs.Value("one")= 1 prefs.Value(2)= "two" prefs.Value("three")= True prefs.Value(3.5)= 49098236671 john.prefs= prefs mbMessage= New MemoryBlock(0) john.WriteTo mbMessage
Ejemplo de-serializar:
BinaryMessage.Message.RegisterClass GetTypeInfo(PhoneNumber) Dim john As New People john.ReadFrom mbMessage
Si desea más información sobre la especificación o desea probar BinaryMessage, por favor comente o escríbame.
Hasta la próxima.
No hay comentarios:
Publicar un comentario