Verwenden des JSON-Objekts als Cache-Daten
Das JsonObject
ist eine Klasse, die JObject in JSON-Standards in darstellt NCache's Domäne. Es handelt sich um einen Container mit einem ungeordneten Name/Wert-Paar, wobei der Name die Zeichenfolgendarstellung des Namens des gesamten Attributs ist. Es kann ein Wert eines beliebigen primitiven Datentyps sein, wie unten aufgeführt:
- Numerische Typen
- Boolean
- Terminzeit
Note
Diese Funktion ist auch in verfügbar NCache Professional.
NCache Ermöglicht Benutzern das Hinzufügen oder Abrufen JsonObjects
aus dem Cache. Um Daten hinzuzufügen, müssen die Objekte den von bereitgestellten JSON-Standards entsprechen NCachedem „Vermischten Geschmack“. Seine JsonObject
wird dem Cache mit einem eindeutigen Schlüssel hinzugefügt. Dieser Schlüssel hilft bei der Durchführung weiterer Vorgänge im Cache.
Beim Abrufen von Cache-Daten als JSON können die Daten jeder benutzerdefinierten Klasse als JsonObject
, vorausgesetzt, der Cache ist JSON-serialisiert. Dieser Ansatz ist für den Benutzer äußerst vorteilhaft, da er Daten einer beliebigen benutzerdefinierten Klasse hinzufügen und diese als JSON-Objekt abrufen kann.
Voraussetzungen für die Verwendung eines JSON-Objekts als Cache-Daten
- Lernen Sie die Standardvoraussetzungen kennen, die für die Arbeit mit allen erforderlich sind NCache Weitere Informationen zu clientseitigen Funktionen finden Sie auf der angegebenen Seite Clientseitige API-Voraussetzungen.
- Einzelheiten zur API finden Sie unter: ICache, JsonObject, Insert, Erhalten Sie , Attribute hinzufügen, Attribut entfernen, CacheManager, GetCache, Speichern, JsonWert.
Note
Wenn Sie definierte Indizes, müssen Sie einen Typnamen angeben, um ein JSON-Objekt zu erstellen, da es ohne die Typinformationen nicht indiziert wird.
JsonObject zum Cache hinzufügen
Beim Hinzufügen JsonObject
Zum Cache müssen Sie eine erstellen JsonObject
. Nachdem Sie ein Objekt erstellt haben, können Sie Attribute des spezifischen Objekts hinzufügen. Attribute werden diesem Objekt mit hinzugefügt AddAttribute
-Methode, bei der Sie einen Attributnamen und einen Wert als angeben müssen JsonValue
or JsonValueBase
. Beim Attributnamen wird die Groß-/Kleinschreibung beachtet und er darf nicht redundant sein. Falls redundante Attribute vorhanden sind, wird eine Ausnahme ausgelöst.
Alternativ erhalten Sie eine JsonObject
indem Sie eine Zeichenfolge übergeben, die die enthält JsonObject
. Es wird die Zeichenfolge analysieren und auffüllen JsonObject
Instanz, die die String-Daten enthält.
Warnung
- Ein Attribut darf keine Referenz auf das Objekt selbst enthalten. In diesem Fall wird eine Ausnahme ausgelöst.
- Ein Attribut kann kein haben
null
Wert.
Das folgende Beispiel erstellt eine JsonObject
Kundenfälle zusammen mit Attributen und fügt es dann mit dem dem Cache hinzu Insert Methode.
// 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
Um sicherzustellen, dass der Vorgang ausfallsicher ist, wird empfohlen, alle potenziellen Ausnahmen in Ihrer Anwendung zu behandeln, wie in erläutert Umgang mit Fehlern.
Fügen Sie JsonObject mit dem Typnamen zum Cache hinzu
Wenn Sie JSON-Indizes für die Abfrage definiert haben und definiert haben (z. B Alachisoft.NCache.Kunde) im NCache Management Center müssen Sie dem Cache Daten mit dem erforderlichen Typnamen hinzufügen, z. B. dem gewünschten Attribut (z. B. CompanyName), wie in den folgenden Codeausschnitten gezeigt.
// 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
Wenn Sie definierte Indizes, müssen Sie einen Typnamen angeben, um das JSON-Objekt abzufragen, da dies ohne den Typnamen nicht möglich ist. Dies ist jedoch nicht erforderlich, wenn Sie keine Abfrage beabsichtigen JsonObject
.
Aktualisieren Sie JsonObject im Cache
NCache Ermöglicht das Hinzufügen, Aktualisieren, Abrufen und Entfernen von Attributen zu einem JsonObject
bereits im Cache. Sie können zum Beispiel eine erhalten Kundenfälle gespeichert als JsonObject
und bearbeiten Sie das Unternehmen, für das er arbeitet (vorausgesetzt, Sie geben den richtigen Schlüssel an), mithilfe der 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");
}
Entfernen Sie JsonObject aus dem Cache
NCache Hier können Sie a entfernen JsonObject
aus dem Cache. Sie können beispielsweise a entfernen Kundenfälle JsonObject
auf die gleiche Weise, wie Sie jedes andere Cache-Element entfernen.
// 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");
}
Benutzerdefiniertes Objekt als JsonObject abrufen
NCache können Sie ein benutzerdefiniertes Objekt in Form eines abrufen JsonObject
. Das benutzerdefinierte Objekt wird in Form einer JSON-Zeichenfolge mit den Daten der benutzerdefinierten Klasse abgerufen.
Note
Um ein benutzerdefiniertes Objekt als abzurufen JsonObject
, sollte der Cache JSON-serialisiert sein.
Das folgende Beispiel ruft die Daten eines benutzerdefinierten Objekts in Form einer JSON-Zeichenfolge mithilfe von ab Erhalten Sie Methode.
// 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
}
Rufen Sie JsonObject als benutzerdefiniertes Objekt ab
Sie können auch eine hinzufügen JsonObject
in den Cache und rufen Sie es als benutzerdefiniertes Objekt ab. Die Eigenschaften der benutzerdefinierten Klasse müssen mit den Attributen der identisch sein JsonObject
nach Name und Wert.
Note
Um ein benutzerdefiniertes Objekt als abzurufen JsonObject
, sollte der Cache JSON-serialisiert sein.
Das folgende Beispiel zeigt, wie Sie a abrufen JsonObject
als benutzerdefiniertes Objekt.
// 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
}
Weitere Informationen
NCache bietet eine Beispielanwendung für Cache-Daten als JSON an GitHub.
Siehe auch
.NETZ: Alachisoft.NCache.Laufzeit.JSON Namespace.
Java: com.alachisoft.ncache.runtime.json Namespace.