Metodi di concorrenza

Memorizzazione nella cache di Microsoft AppFabric 1.1 per Windows Server supporta modelli di concorrenza ottimistica e pessimistica. Nelle sezioni seguenti viene descritto l'allineamento dei metodi di client cache a tali modelli. Per ulteriori informazioni sulla concorrenza, vedere Modelli di concorrenza (Memorizzazione nella cache di AppFabric 1.1).

Modello di concorrenza ottimistico

Nel modello di concorrenza ottimistico, gli aggiornamenti degli oggetti memorizzati nella cache non hanno blocchi. Il client cache prima legge la versione dell'oggetto da aggiornare, quindi invia le informazioni su tale versione insieme all'oggetto aggiornato. Nel sistema l'oggetto viene aggiornato solo se la versione inviata corrisponde alla versione corrente dell'oggetto. Con ogni aggiornamento di un oggetto, il numero di versione dell'oggetto cambia. Ciò impedisce che l'aggiornamento sovrascriva le modifiche apportate da altri utenti.

 

Metodo Descrizione

Get

Non acquisisce alcun blocco intenzionalmente; Get riesce sempre se l'elemento esiste. Se l'oggetto viene aggiornato, il metodo Get non attende e viene restituita solo la versione corrente dell'oggetto.

GetCacheItem

Restituisce tutti gli oggetti DataCacheItem. Oltre agli oggetti memorizzati nella cache e ad altre informazioni, ad esempio i tag, vengono restituite anche le informazioni di versione sugli oggetti.

GetIfNewer

Può essere utilizzato per verificare se l'oggetto memorizzato nella cache è stato modificato nell'origine dati. Per ridurre al minimo il traffico di rete, l'oggetto memorizzato nella cache viene restituito solo se diventa disponibile una versione più recente.

Add

Non presenta i sovraccarichi correlati alla concorrenza ottimistica. Add può avere un esito positivo o negativo.

Put

Supporta la concorrenza ottimistica acquisendo le informazioni di versione come parametro facoltativo; Put riesce solo se l'oggetto da sostituire è della stessa versione.

Remove

Supporta la concorrenza ottimistica acquisendo le informazioni di versione come parametro facoltativo; Remove riesce solo se l'oggetto da eliminare è della stessa versione.

Modello di concorrenza pessimistico

Nel modello di concorrenza pessimistico, il client blocca esplicitamente gli oggetti per eseguire operazioni. Altre operazioni che richiedono blocchi vengono rifiutate (nel sistema non vengono bloccate le richieste) finché i blocchi non vengono rilasciati. Quando gli oggetti sono bloccati, viene restituito un handle di blocco (come parametro di output). L'handle di blocco è necessario per sbloccare l'oggetto. Se nel client si verifica un errore prima che un oggetto bloccato venga liberato, sono disponibili time-out per il rilascio dei blocchi. Gli oggetti bloccati non scadono mai ma, se la relativa scadenza viene superata, possono scadere immediatamente dopo lo sblocco.

noteNota
Le transazioni che si estendono tra più operazioni non sono supportate. L'applicazione che utilizza la cache è responsabile della determinazione dell'ordine dei blocchi e del rilevamento di eventuali blocchi critici.

WarningAvviso
Gli oggetti bloccati nella cache possono comunque essere sostituiti da qualsiasi client cache con il metodo Put. Le applicazioni abilitate alla cache sono responsabili dell'uso coerente di PutAndUnlock per gli elementi che utilizzano il modello di concorrenza pessimistico.

Nella tabella seguente vengono mostrati i metodi che è possibile utilizzare per bloccare e sbloccare un oggetto.

 

Metodo Descrizione

GetAndLock

Restituisce e blocca l'oggetto memorizzato nella cache (se presente). Altre chiamate ai metodi GetAndLock sullo stesso oggetto non riescono a meno che il blocco non è valido. Regolari chiamate del metodo Get non vengono bloccate e accedono sempre all'ultima versione dell'oggetto memorizzato nella cache.

PutAndUnlock

Aggiorna l'oggetto bloccato e rilascia quindi il blocco. L'handle di blocco ottenuto da GetAndLock è un parametro obbligatorio e per riuscire deve corrispondere all'handle di blocco dell'oggetto bloccato.

Unlock

Sblocca esplicitamente un oggetto memorizzato nella cache, purché il parametro di handle di blocco corrisponda a quello dell'oggetto bloccato. Unlock supporta anche l'estensione della scadenza dell'elemento corrente per impedirne la scadenza immediatamente dopo lo sblocco (se viene sbloccato dopo la scadenza).

Vedere anche

  2012-03-05
Mostra: