Formato de serialización: serialización binaria y JSON
Los datos de la caché cuando se transmiten a través de la red deben serializarse. El proceso de serialización atraviesa los objetos existentes, extrae los datos y los convierte en datos serializados. Luego, los datos se transmiten a través de la red y el proceso de deserialización lee los datos serializados. Todo este proceso de serialización/deserialización requiere muchos factores como tiempo, memoria y rendimiento, etc. Estos factores deben tenerse en cuenta al elegir un formato para la serialización.
Note
Esta característica también está disponible en NCache Professional.
Hay dos tipos de formatos de serialización proporcionados por NCache:
- Serialización binaria
- Serialización JSON
Note
Se recomienda que use la serialización JSON si está usando ASP.NET 5.0 y superior. Para más detalles haga clic esta página.
Serialización binaria
En el formato binario, los objetos de usuario (por ejemplo, el objeto Producto) se serializan desde el lado del cliente y se almacenan en el lado del servidor de la misma forma. Cada vez que se solicita un artículo al servidor, el cliente recibe el formato binario del artículo que luego se deserializa en el objeto Producto localmente. Además, la serialización/deserialización se lleva a cabo únicamente en el lado del cliente, y solo una vez mientras se obtienen o agregan los datos: se deserializa mientras se obtienen y se serializa mientras se agregan. Esto ahorra el costo de serialización/deserialización, lo cual es notable, especialmente en los casos en los que se agregan o recuperan datos considerables del caché.
El formato binario es beneficioso si la mayor parte del procesamiento se realiza en el lado del cliente y las operaciones realizadas son como agregar, actualizar, recuperar y eliminar del caché. Por ejemplo, un objeto Producto serializado se recupera del caché para mostrar su contenido. Al utilizar el formato binario, solo es necesario deserializar el artículo una vez que llega al cliente, manteniendo así el costo de procesamiento al mínimo. En caso de que se utilice el formato Objeto, el servidor serializará el objeto Producto y lo enviará al cliente, quien luego lo deserializará. Esto aumenta los gastos generales y el costo de la serialización y deserialización.
De manera similar, si se agrega un objeto al caché usando el formato binario, se serializará antes de enviarlo a través de la red y se almacenará tal como está.
Serialización JSON
Note
Esta función está disponible en NCache Empresa y Profesional.
JSON es la sintaxis basada en texto para almacenar e intercambiar datos. Es un formato bastante más fácil de analizar para las máquinas y de entender para los usuarios. Al utilizar la serialización JSON, los objetos se convierten a su equivalente JSON cuando se serializan y luego se vuelven a convertir en sus objetos personalizados en el momento de la deserialización.
Considere un .NET Producto clase que contiene los datos de los productos. Contiene varios atributos, por ejemplo, Nombre del producto, ID del Productoy Caducidad del producto etc.
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
Estos datos se serializarán en la siguiente cadena JSON:
{
"Name": "Apple",
"Expiry": "2008-12-28T00:00:00",
"Sizes":
[
"Small"
]
}
El serializador utilizado es una extensión del newtonsoft Serializador de terceros. Puede ser un enfoque preferible para una serialización de datos compacta y conveniente. Se puede preferir la serialización JSON a la serialización binaria por los siguientes motivos:
Memoria eficiente: La memoria es uno de los principales parámetros que se tienen en cuenta cuando se utilizan grandes conjuntos de datos. El consumo de mayor memoria afecta otras medidas de rendimiento. La serialización JSON afecta menos memoria para almacenar los objetos. Todo el conjunto de datos se serializa como JSON y da como resultado un consumo reducido de memoria debido a un tamaño significativamente más pequeño, mejorando así la comunicación de la red.
Portabilidad: La serialización JSON proporciona una mayor portabilidad, ya que le brinda la facilidad de serializar los datos de varias tecnologías en el mismo estándar. El serializador JSON serializa datos de todo tipo. Por ejemplo, si el usuario utiliza la clase Java, el serializador JSON serializará los datos en forma de cadena y los deserializará en el tipo definido por el usuario. Este nivel de portabilidad no lo proporciona la serialización binaria.
Sin cambio de código: Dado que la serialización según el formato JSON está completamente automatizada, el usuario no requiere ningún cambio de código a menos que requiera un cambio de código de acuerdo con su propia lógica.
Atributos no serializables: También se le proporciona la opción de serializar los atributos selectivos y mantener los atributos de su elección no serializados mediante el uso de un método llamado "JsonIgnore" en su clase. Esto significa que el serializador ignorará estos atributos mientras serializa los datos y serializa el resto. Esto sólo se puede hacer con los atributos de una clase personalizada. por favor refiérase a newtonsoft documentación para más detalles. Por ejemplo, si el usuario quiere mantener el atributo Contraseña como no serializado,
JsonIgnore
lo marcará como no serializable.
using Newtonsoft.Json;
[JsonIgnore]
public String Password()
{
get;
set;
}
A continuación se muestra un ejemplo de una clase personalizada con un atributo marcado no serializable Contraseña. Después de la serialización, la cadena JSON serializada no contendrá el valor del atributo no serializado.
Account account = new Account
{
FullName = "Joe User",
EmailAddress = "joe@example.com",
Password = "VHdlZXQgJ1F1aWNrc2lsdmVyJyB0byBASmFtZXNOSw=="
};
Los datos anteriores se serializarán en la siguiente cadena JSON.
{
"FullName":"Joe User",
"EmailAddress":"joe@example.com"
}
Teniendo en cuenta los factores anteriores, la serialización JSON puede dar como resultado el logro de un mayor nivel de rendimiento. Sin embargo, si desea obtener precisión a un nivel superior, utilice la serialización binaria en lugar de la serialización JSON, ya que los datos serializados binarios se deserializan con mayor precisión.
Vea también
Serialización compacta
Clases de registro para serialización compacta
Puente para replicación WAN
Equilibrio de carga de datos