Archivio di istanza, query e provider di controllo

Un archivio di istanza è un contenitore logico di istanze. Si tratta della posizione in cui vengono archiviati dati e metadati delle istanze. Un archivio di istanza non implica uno spazio di archiviazione fisico dedicato. Un archivio di istanza può contenere informazioni durevoli in un database SQL Server o informazioni di stato non durevoli in una memoria. .NET Framework versione 4 include the l'archivio di istanza di flusso di lavoro SQL, che rappresenta un'implementazione concreta di un archivio di istanza e garantisce ai flussi di lavoro il salvataggio permanente dei dati e dei metadati di istanza in un database SQL Server 2005 o SQL Server 2008. Per ulteriori informazioni, vedere Archivi di istanza (http://go.microsoft.com/fwlink/?LinkId=181533) nella Guida di .NET Framework (informazioni in lingua inglese). AppFabric supporta il salvataggio permanente delle istanze del flusso di lavoro di servizio solo su database SQL Server 2008.

Per utilizzare un archivio di istanza con gli strumenti di AppFabric (i cmdlet di Windows PowerShell e le estensioni per Gestione IIS) e con il servizio Gestione flusso di lavoro (WMS), è necessario sviluppare un provider di archivio di istanza, un provider di query dell'istanza e un provider di controllo istanza per l'archivio di istanza specifico. Nelle sezioni seguenti vengono descritti questi tre tipi di provider.

noteNota
L'API del provider di query e di controllo dell'istanza si basa su .NET Framework 2.0 mentre l'API del provider di archivio di istanza si basa su .NET Framework versione 4

Provider di archivio di istanza

Un provider archivio di istanza per un archivio di istanza espone un'API che viene richiamata per creare oggetti archivio di istanza. Il client utilizza l'oggetto archivio di istanza per salvare un'istanza di flusso di lavoro per l'archivio di istanza sottostante (ad esempio: un database SQL Server) o per caricare un'istanza dall'archivio di istanza.

AppFabric include un provider di archivio di istanza per l'archivio di istanza di flusso di lavoro SQL. Per supportare un archivio di istanza diverso, è necessario creare un provider di archivio di istanza per tale archivio di istanza. Per creare un provider di archivio di istanza occorre creare una classe derivante dalla classe InstanceStoreProvider e implementare i metodi che creano un archivio di istanza come SqlWorkflowInstanceStore. Per ulteriori informazioni, vedere Procedura per: Sviluppare un provider di archiviazione istanza.

Provider di query dell'istanza

Un provider di query dell'istanza per un archivio di istanza consente di effettuare query sull'archivio di istanza. Quando si utilizza un cmdlet come Get-ASAppServiceInstance per effettuare un'interrogazione per le istanze in un archivio di istanza, il cmdlet crea un oggetto provider di query e richiama i metodi sull'oggetto. L'oggetto provider di query crea ed esegue query sull'archivio di istanza e restituisce i risultati delle query al cmdlet. Le estensioni per Gestione IIS di AppFabric utilizzano i cmdlet nella maggior parte degli scenari per eseguire query sugli archivi di istanza. Pertanto anche le estensioni dipendono dai provider di query.

Tutti i provider di query implementano la stessa API e forniscono un livello di astrazione al di sopra dei diversi archivi di istanza sottostanti. AppFabric include un provider di query dell'istanza per l'archivio di istanza di flusso di lavoro SQL che consente di eseguire query per istanze archiviate nel database di salvataggio permanente di SQL Server. Quando il provider di query SQL riceve una query da un client (come un cmdlet di Windows PowerShell), esegue query e recupera i dati di istanza dal database SQL Server, quindi restituisce il set di risultati al client. L'implementazione del provider di query dell'istanza per l'archivio di istanza di flusso di lavoro SQL si trova in Microsoft.ApplicationServer.StoreManagement.dll.

Per supportare l'esecuzione di query su un tipo diverso di archivio di istanza è necessario disporre di un provider di query dell'istanza per l'archivio specifico. Per creare un provider di query personalizzato occorre creare una classe derivante dalla classe InstanceQueryProvider e implementare metodi per eseguire le query per conto del client. Per ulteriori informazioni, vedere Procedura per: Sviluppare un provider di query di istanza.

Provider di controllo di istanza

Un provider di controllo di istanza consente al client di eseguire comandi di controllo sulle istanze presenti in un archivio di istanza e di recuperare comandi per un'istanza. Quando si utilizza un cmdlet di Windows PowerShell di AppFabric per controllare (sospendere, riprendere, ecc.) un'istanza nell'archivio di istanza, il cmdlet crea un oggetto provider di controllo e richiama un metodo sull'oggetto per aggiungere il comando a una coda dei comandi. Il provider di controllo mantiene la coda dei comandi archiviata nell'archivio di istanza. Un host generico come il servizio Gestione del flusso di lavoro (WMS) crea un oggetto provider di controllo e richiama un metodo sull'oggetto per recuperare il comando archiviato nella coda dei comandi, quindi esegue il comando. WMS notifica al provider di controllo la riuscita o l'insuccesso dell'esecuzione. Se l'esecuzione riesce, il provider di controllo rimuove il comando dalla coda; in caso contrario, WMS notifica al provider di controllo l'insuccesso e il provider interviene con l'azione appropriata.

Un provider di controllo di istanza non solo inoltra un comando dalla coda dei comandi a WMS ma provvede anche a inoltrare un contenitore di proprietà che include i metadati sull'istanza per la quale è stato eseguito il comando. Il contenitore delle proprietà include il nome del sito e il percorso del servizio virtuale dell'istanza. Il provider di controllo ottiene questi metadati dall'archivio di istanza. WMS utilizza questi metadati per ottenere accesso all'endpoint di controllo istanza (ICE, Instance Control Endpoint) esposto dall'istanza di servizio e richiama i metodi appropriati sull'endpoint.

Tutti i provider di query implementano la stessa API e forniscono un livello di astrazione al di sopra dei diversi archivi delle istanze sottostanti. AppFabric include un provider di controllo di istanza per l'archivio delle istanze di flusso di lavoro SQL che consente di eseguire comandi di controllo per le istanze archiviate nel database di salvataggio permanente di SQL Server. L'implementazione del provider di controllo di istanza per l'archivio di istanza di flusso di lavoro SQL si trova in Microsoft.ApplicationServer.StoreManagement.dll. Per supportare l'esecuzione di comandi su un tipo diverso di archivio di istanza è necessario sviluppare un provider di controllo di istanza per l'archivio specifico.

Per creare un provider di controllo personalizzato occorre creare una classe derivante dalla classe InstanceControlProvider e implementare metodi per aggiungere e recuperare comandi alla/dalla coda dei comandi per conto dei client. Per ulteriori informazioni, vedere Procedura per: Sviluppare un provider di controllo di istanza.

Provider di controllo di istanza per l'archivio di istanza di flusso di lavoro SQL

AppFabric include un provider di controllo di istanza per l'archivio di istanza di flusso di lavoro SQL. Il provider di controllo di istanza mantiene la coda dei comandi in un database SQL Server. Quando si esegue un cmdlet di controllo sull'archivio di istanza di flusso di lavoro SQL, il provider di controllo di istanza riceve la richiesta e archivia le informazioni di comando nella coda dei comandi del database SQL Server. WMS utilizza il provider di controllo di istanza per recuperare il comando dalla coda dei comandi, esegue il comando sull'archivio di istanza di flusso di lavoro SQL ed elimina il comando dalla coda dei comandi se l'esecuzione del comando riesce. L'implementazione del provider di controllo di istanza per l'archivio di istanza di flusso di lavoro SQL si trova in Microsoft.ApplicationServer.StoreManagement.dll.

I punti illustrati di seguito sono validi per il provider di controllo di istanza per l'archivio di istanza di flusso di lavoro SQL:

  • Elabora immediatamente (in sincrono) il comando Elimina. Tutti gli altri comandi vengono accodati (aggiunti) alla coda dei comandi prima che il provider di controllo trasferisca i comandi a WMS per l'elaborazione.

  • La coda dei comandi viene elaborata in base al principio "first-in-first-out" (FIFO). Il provider di controllo aggiunge un nuovo comando al termine della coda e legge il comando all'inizio. Il provider di controllo restituisce il comando meno recente non bloccato a WMS.

  • Il provider di controllo può archiviare un solo comando per istanza nella coda. Quando il provider riceve una richiesta per accodare un comando associato a un'istanza che presenta già un comando nella coda, sovrascrive il comando esistente in coda se questo non è bloccato. Se il comando è bloccato o in sospeso, il provider di controllo restituisce un errore.

  • Il provider di controllo applica un blocco temporaneo dopo la lettura di un comando dalla coda dei comandi. Il blocco viene rimosso dopo 65 secondi. Una volta che ha ricevuto da WMS la notifica della riuscita esecuzione del comando, il provider rimuove il comando dalla coda dei comandi.

  • Il provider di controllo riprova a presentare un comando per cinque volte se l'esecuzione del comando non riesce. La coda dei comandi mantiene un contatore dei tentativi di esecuzione non riusciti. Se l'esecuzione del comando non riesce per la quinta volta, il provider rimuove il comando dalla coda dei comandi.

  • Il provider di controllo mantiene un registro errori di esecuzione comandi nel database. Questo registro archivia i metadati sui comandi non riusciti e i motivi della mancata esecuzione. Il registro contiene al massimo un comando non riuscito per istanza. Ciascuna voce del registro riporta il tipo di comando, l'ID istanza, il codice di errore, il messaggio di errore, l'ora dell'ultimo tentativo di esecuzione e l'ID del computer sul quale è stata effettuata l'esecuzione del comando, nonché il numero di esecuzioni tentate.

    La voce di registro relativa a un'istanza viene rimossa quando viene accodato un nuovo comando per l'istanza o quando un utente rimuove l'istanza dall'archivio di istanza. L'utente può rimuovere l'istanza mediante un (ad esempio: Remove-ASAppServiceInstance).

  • Il provider di controllo annulla l'accodamento dei comandi in gruppi di 10.

Vedere anche

  2011-12-05
Mostra: