Instanslager

Ett instansarkiv är en logisk container med instanser. Det är den plats där instansdata och metadata lagras. Ett instansarkiv innebär inte dedikerad fysisk lagring. Ett instanslager kan innehålla varaktig information i en SQL Server-databas eller icke-varaktig tillståndsinformation i ett minne. .NET Framework 4.6.1 levereras med SQL Workflow Instance Store, som är en konkret implementering av ett instanslager som gör att arbetsflöden kan bevara instansdata och metadata i en SQL Server 2005- eller SQL Server 2008-databas. Dessutom tillhandahåller Windows Server App Fabric en konkret implementering av en instansbutik. Mer information finns i Windows Server App Fabric Instance Store, Fråga och Kontrollleverantörer.

Beständighets-API:et är gränssnittet mellan en värd och ett instansarkiv som gör att värden kan skicka kommandobegäranden (till exempel LoadWorkflowCommand och SaveWorkflowCommand) till instansarkivet. Den konkreta implementeringen av det här API:et kallas för en beständighetsprovider. Beständighetsprovidern tar emot begäranden från en värd och ändrar instansarkivet.

Värdar och instanslager kan anslutas så att en värd kan användas med många instanslager och ett instansarkiv kan användas med många värdar. Ett instanslager är vanligtvis optimerat för användningsmönstren för en viss värd, även om instanslagret och värden kan utvecklas på oberoende livscykler. Till exempel är WorkflowServiceHost och SqlWorkflowInstanceStore utformade för att fungera bra tillsammans. Du kan skapa ett eget instanslager för att spara data och metadata för arbetsflödestjänstinstanser och använda instansarkivet med WorkflowServiceHost. Du kan till exempel skapa ett OracleWorkflowInstanceStore som låter arbetsflöden spara information i en Oracle-databas i stället för att spara dem i en SQL Server-databas.

Det är vanligt att värdar utökas med ytterligare funktioner som ändrar de bevarade objekten. Ett instanspersistenssystem kan till exempel ha en arbetsflödesvärd, ett tillägg som stöder operationen "Suspend," och en SQL-instanslagring. Arbetsflödesvärden kan skicka ett standardkommando, som Spara eller Läs in, för att spara ett arbetsflöde i ett instansarkiv eller läsa in ett arbetsflöde från ett instansarkiv. Paustillägget kan lägga till ytterligare semantik i kommandona för att spara och läsa in arbetsflödesinstanser så att en instans av pausat arbetsflöde inte kan läsas in. Beständighetsprovidern för SQL-instansarkivet förstår kommandona för att spara och läsa in arbetsflödesinstanser och implementerar kommandona genom att anropa lämpliga lagrade procedurer som ändrar tabellerna för beständiga objekt i en SQL Server-databas.

En värd fungerar som instansägare i en instanslagring. En värd kan agera som flera instansägare och använda flera instansarkiv samtidigt. Värdar tillhandahåller GUIDer för instansnycklar som är kopplade till instanserna. En instansnyckel är ett unikt alias som identifierar en instans. Beständighetssystemet skapar, uppdaterar och tar bort information om instansägaren när den kör kommandon som begärs av värdar.

Följande lista innehåller viktiga steg som ingår i värdens interaktion med instansarkivet:

  1. Hämta en InstanceStore från en leverantör av persistens.

  2. Hämta handtaget till en instans genom att anropa CreateInstanceHandle metoden i InstanceStore.

  3. Anropa kommandon mot instanshandtaget genom att anropa Execute metoden i InstanceStore.

  4. Granska den InstanceView som returneras av InstanceStore.Execute för att fastställa resultatet av kommandona.