Uso de objetos JSON como datos de caché
La JsonObject
es una clase que representa JObject en estándares JSON en NCacheEl dominio de. Es un contenedor de par nombre/valor desordenado donde el nombre es la representación de cadena del nombre de todo el atributo. Puede ser un valor de cualquier tipo de datos primitivo, como se detalla a continuación:
- Tipos numéricos
- Boolean
- DateTime
Note
Esta característica también está disponible en NCache Professional.
NCache permite a los usuarios agregar o recuperar JsonObjects
del caché. Para agregar datos, los objetos deben cumplir con los estándares JSON proporcionados por NCache. JsonObject
se agrega al caché con una clave única. Esta clave ayuda a realizar más operaciones en el caché.
Al recuperar datos de caché como JSON, los datos de cualquier clase personalizada se pueden recuperar como un JsonObject
, siempre que la caché esté serializada en JSON. Este enfoque es muy beneficioso para el usuario, ya que le permite agregar datos de cualquier clase personalizada y obtenerlos como un objeto JSON.
Requisitos previos para utilizar objetos JSON como datos de caché
- Para obtener información sobre los requisitos previos estándar necesarios para trabajar con todos NCache características del lado del cliente, consulte la página proporcionada en Requisitos previos de la API del lado del cliente.
- Para obtener detalles de la API, consulte: Dolor, JsonObjeto, recuadro, Recibe, Agregar atributo, Eliminar atributo, Administrador de caché, Obtener Caché, Añada, ValorJson.
Note
Si tiene índices definidos, debes proporcionar un nombre de tipo para crear un objeto JSON, ya que no se indexará sin la información del tipo.
Agregar JsonObject a la memoria caché
Al agregar JsonObject
al caché, debes crear un JsonObject
. Después de crear un objeto, puede agregar atributos del objeto específico. Los atributos se agregan a este objeto usando el AddAttribute
método, donde debe especificar un nombre de atributo y un valor como JsonValue
or JsonValueBase
. El nombre del atributo distingue entre mayúsculas y minúsculas y no puede ser redundante. En caso de que haya atributos redundantes, se lanza una excepción.
Alternativamente, puede obtener un JsonObject
pasando una cadena que contiene el JsonObject
. Analizará la cadena y completará el JsonObject
instancia que contiene los datos de la cadena.
advertencia
- Un atributo no puede contener una referencia al objeto mismo. Si se hace así, se lanza una excepción.
- Un atributo no puede tener un
null
.
El siguiente ejemplo crea un JsonObject
Local junto con los atributos y luego lo agrega al caché usando el recuadro método.
// Obtain an instance of the cache using the provided cache name
ICache cache = CacheManager.GetCache(cacheName);
string customerKey = $"Customer:ALFKI";
Customer customer = cache.Get<Customer>(customerKey);
// Get customer from database if not found in cache
if (customer == null)
{
customer = HelperMethods.FetchCustomerFromDB("ALFKI");
// Create a new JSON object and set attributes
JsonObject jsonCustomer = new JsonObject();
jsonCustomer.AddAttribute("CustomerID", (JsonValue)customer.CustomerID);
jsonCustomer.AddAttribute("ContactName", (JsonValue)customer.ContactName);
jsonCustomer.AddAttribute("CompanyName", (JsonValue)customer.CompanyName);
jsonCustomer.AddAttribute("Phone", (JsonValue)customer.Phone);
jsonCustomer.AddAttribute("Address", (JsonValue)customer.Address);
cache.Add(customerKey, jsonCustomer);
Console.WriteLine($"Customer '{customer}' with key '{customerKey}' has been added.");
}
Note
Para garantizar que la operación sea a prueba de fallas, se recomienda manejar cualquier posible excepción dentro de su aplicación, como se explica en Manejo de fallas.
Agregue JsonObject al caché con nombre de tipo
Si ha definido índices JSON para realizar consultas y ha definido (como Alachisoft.NCache.Cliente) en el NCache Management Center, tendrá que agregar datos a la caché con el nombre de tipo necesario, como el atributo que necesita (por ejemplo, CompanyName), como se demuestra en los fragmentos de código siguientes.
// Get customer from database against given customer ID
Customer customer = FetchCustomerFromDB(1001);
// Create a unique key for the object
string key = $"Customer:{customer.CustomerID}";
// Create a new JSON object and set attributes
// string values need to be added with JsonValue
var jsonCustomer = new JsonObject("Alachisoft.NCache.Customer");
jsonCustomer.AddAttribute("Type", customer.getType());
jsonCustomer.AddAttribute("CustomerID", customer.CustomerID);
jsonCustomer.AddAttribute("ContactName", (JsonValue)customer.ContactName);
jsonCustomer.AddAttribute("CompanyName", (JsonValue)customer.CompanyName);
jsonCustomer.AddAttribute("Phone", customer.Phone);
jsonCustomer.AddAttribute("Address", customer.Address);
// Create a new CacheItem
var item = new CacheItem(jsonCustomer);
// Add CacheItem in the cache with the value
cache.Insert(key, item);
Note
Si tiene índices definidos, debes proporcionar un nombre de tipo para consultar el objeto JSON, ya que no será posible sin el nombre de tipo. Sin embargo, esto no es necesario si no desea consultar el JsonObject
.
Actualizar JsonObject en caché
NCache le permite agregar, actualizar, recuperar y eliminar atributos de un JsonObject
ya en el caché. Por ejemplo, puedes conseguir un Local almacenado como JsonObject
y edite la empresa para la que trabaja (siempre que mencione la clave correcta) utilizando Insert API.
var jsonCustomer = cache.Get<JsonObject>(key);
if (jsonCustomer !=null)
{
jsonCustomer.RemoveAttribute("CompanyName");
jsonCustomer.AddAttribute("CompanyName", "Alachisoft");
Cache.Insert(key,jsonCustomer );
}
else
{
Console.WriteLine($"No such customer exists");
}
Eliminar JsonObject de la caché
NCache te permite eliminar un JsonObject
del caché. Por ejemplo, puedes eliminar un Local JsonObject
de la misma manera que elimina cualquier otro elemento de caché.
// Specify the customer key
string customerKey = $"Customer:ALFKI";
// JsonObject to be returned
JsonObject customerJObject = null;
bool isItemRemoved = cache.Remove(customerKey, out customerJObject);
if (isItemRemoved)
{
Console.WriteLine($"Customer with ID { customerJObject.GetAttributeValue('CustomerID') } has been removed");
}
Recuperar objeto personalizado como JsonObject
NCache le permite recuperar un objeto personalizado en forma de JsonObject
. El objeto personalizado se recupera en forma de cadena JSON con los datos de la clase personalizada.
Note
Para recuperar un objeto personalizado como JsonObject
, el caché debe estar serializado en JSON.
El siguiente ejemplo recupera los datos de un objeto personalizado en forma de una cadena JSON usando el Recibe Método.
// Create a unique key for this object
string key = $"customer.CustomerID";
// Retrieve the added object against the specified key
var retrievedItem = cache.Get<JsonObject>(key);
if (retrievedItem != null)
{
// Perform operations according to business logic
}
else
{
// No such item exists
}
Recuperar JsonObject como objeto personalizado
También puede agregar un JsonObject
al caché y recuperarlo como un objeto personalizado. Las propiedades de la clase personalizada deben ser las mismas que los atributos de la JsonObject
por nombre y valor.
Note
Para recuperar un objeto personalizado como JsonObject
, el caché debe estar serializado en JSON.
El siguiente ejemplo muestra cómo recuperar un JsonObject
como un objeto personalizado.
// Create a new JsonObject with the following attributes in the string
string jsonString = $@"{{
""CustomerID"": ""1"",
""ContactName"": ""David Johnes"",
""CompanyName"": ""Lonesome Pine Restaurant"",
""Phone"": ""12345 - 6789"",
""Address"": ""Silicon Valley, Santa Clara, California""
}}";
// Retrieve the JsonObject from the string
JsonObject customer = new JsonObject(jsonString);
// Create a unique key for this object
string key = "CustomerID:1001";
// Insert JsonObject in the cache
cache.Insert(key, customer);
// Get the JsonObject as a custom object
object retrievedItem = cache.Get<Customer>(key);
if (retrievedItem != null)
{
// Perform operations according to business logic
}
else
{
// No such item exists
}
Recursos adicionales
NCache proporciona una aplicación de muestra para Cache Data como JSON en GitHub.
Vea también
.NETO: Alachisoft.NCache.Tiempo de ejecución.JSON espacio de nombres
Java: com.alachisoft.ncache.runtime.json espacio de nombres