Sdílet prostřednictvím


Postupy: Vytvoření vlastního účastníka trvalosti

Následující postup obsahuje kroky k vytvoření účastníka trvalosti. Informace o ukázkových implementacích trvalostiúčastníkůch

  1. Vytvořte třídu odvozenou z PersistenceParticipant třídy nebo PersistenceIOParticipant třídy. PersistenceIOParticipant třída nabízí stejné rozšiřitelnost bodů jako PersistenceParticipant třída kromě toho, že se může účastnit vstupně-výstupních operací. Postupujte podle jednoho nebo několika následujících kroků.

  2. Implementujte metodu CollectValues . Metoda CollectValues má dva parametry slovníku , jeden pro ukládání hodnot pro čtení a zápis a druhý pro ukládání hodnot jen pro zápis (používá se později v dotazech). V této metodě byste měli tyto slovníky naplnit daty specifickými pro účastníka trvalosti. Každý slovník obsahuje název hodnoty jako klíč a samotnou hodnotu jako InstanceValue objekt.

    Hodnoty ve slovníku readWriteValues jsou zabaleny jako objekty InstanceValue . Hodnoty ve slovníku jen pro zápis jsou zabaleny jako objekty InstanceValue s InstanceValueOptions.Optional a InstanceValueOption.WriteOnly nastaveny. Každá InstanceValue poskytovaná implementacemi CollectValues napříč všemi účastníky trvalosti musí mít jedinečný název.

    protected virtual void CollectValues(out IDictionary<XName,Object> readWriteValues, out IDictionary<XName,Object> writeOnlyValues)
    {
    }
    
  3. Implementujte metodu MapValues . Metoda MapValues přebírá dva parametry, které jsou podobné parametrům, které metoda CollectValues přijímá. Všechny hodnoty shromážděné ve fázi CollectValues se předávají prostřednictvím těchto parametrů slovníku. Nové hodnoty přidané fází MapValues se přidají do hodnot jen pro zápis. Slovník jen pro zápis slouží k poskytování dat externímu zdroji, který není přímo přidružený k hodnotám instance. Každá hodnota poskytovaná implementacemi metody MapValues napříč všemi účastníky trvalosti musí mít jedinečný název.

    protected virtual IDictionary<XName,Object> MapValues(IDictionary<XName,Object> readWriteValues,IDictionary<XName,Object> writeOnlyValues)
    {
    }
    

    Tato MapValues metoda poskytuje funkce, které CollectValues v tom případě umožňují závislost na jiné hodnotě poskytované jiným účastníkem CollectValues trvalosti, který ještě nezpracoval.

  4. Implementujte metodu PublishValues . Metoda PublishValues obdrží slovník obsahující všechny hodnoty načtené z úložiště trvalosti.

    protected virtual void PublishValues(IDictionary<XName,Object> readWriteValues)
    {
    }
    
  5. Implementujte metodu BeginOnSave , pokud je účastník trvalost vstupně-výstupní účastník. Tato metoda je volána během operace Save. V této metodě byste měli provést vstupně-výstupní doplňky k trvalým (ukládání) instancím pracovního postupu. Pokud hostitel používá transakci pro odpovídající příkaz trvalosti, stejná transakce je poskytována v Transaction.Current. Kromě toho persistenceIOParticipants může inzerovat požadavek na transakční konzistenci, v takovém případě hostitel vytvoří transakci pro epizodu trvalosti, pokud by se jinak nepoužívala.

    protected virtual IAsyncResult BeginOnSave(IDictionary<XName,Object> readWriteValues, IDictionary<XName,Object> writeOnlyValues, TimeSpan timeout, AsyncCallback callback, Object state)
    {
    }
    
  6. Implementujte metodu BeginOnLoad , pokud je účastník trvalost vstupně-výstupní účastník. Tato metoda se volá během operace načtení. V této metodě byste měli provést vstupně-výstupní doplňky pro načítání instancí pracovního postupu. Pokud hostitel používá transakci pro odpovídající příkaz trvalosti, stejná transakce je poskytována v Transaction.Current. Kromě toho mohou účastníci trvalosti inzerovat požadavek na konzistenci transakcí, v takovém případě hostitel vytvoří transakci pro epizodu trvalosti, pokud by se jinak nepoužívala.

    protected virtual IAsyncResult BeginOnLoad(IDictionary<XName,Object> readWriteValues, TimeSpan timeout, AsyncCallback callback, Object state)
    {
    }