Sdílet prostřednictvím


Řízení souběžnosti

Poznámka:

Rozhraní API portálu partnerů cloudu jsou integrovaná a budou pokračovat v práci v Partnerském centru. Přechod zavádí malé změny. Projděte si změny uvedené v referenčních informacích k rozhraní API portálu partnerů cloudu a ujistěte se, že váš kód po přechodu do Partnerského centra bude fungovat i nadále. Rozhraní API CPP by se měla používat pouze pro stávající produkty, které už byly integrované před přechodem do Partnerského centra; nové produkty by měly používat rozhraní API pro odesílání v Partnerském centru.

Každé volání rozhraní API pro publikování na portálu partnerů cloudu musí explicitně určit, jakou strategii řízení souběžnosti použít. Při zadání hlavičky If-Match dojde k chybě HTTP 400. Nabízíme dvě strategie řízení souběžnosti.

  • Optimistická – klient provádějící aktualizaci ověří, jestli se data od posledního čtení dat změnila.
  • Poslední vyhrává – klient přímo aktualizuje data bez ohledu na to, jestli ji od posledního čtení změnila jiná aplikace.

Pracovní postup optimistické souběžnosti

Doporučujeme použít strategii optimistické souběžnosti s následujícím pracovním postupem, abyste zajistili, že se ve vašich prostředcích neprovedou žádné neočekávané úpravy.

  1. Načtěte entitu pomocí rozhraní API. Odpověď obsahuje hodnotu značky ETag, která identifikuje aktuálně uloženou verzi entity (v době odpovědi).
  2. V době aktualizace zahrňte stejnou hodnotu značky ETag do povinné hlavičky požadavku If-Match .
  3. Rozhraní API porovnává hodnotu značky ETag přijatou v požadavku s aktuální hodnotou značky ETag entity v atomické transakci.
    • Pokud se hodnoty značky ETag liší, vrátí 412 Precondition Failed rozhraní API odpověď HTTP. Tato chyba značí, že entitu od posledního načtení klienta aktualizoval jiný proces nebo že hodnota značky ETag zadaná v požadavku je nesprávná.
    • Pokud jsou hodnoty značky ETag stejné nebo hlavička If-Match obsahuje zástupný znak hvězdičky (*), rozhraní API provede požadovanou operaci. Operace rozhraní API také aktualizuje uloženou hodnotu značky ETag entity.

Poznámka:

Když v hlavičce If-Match zadáte zástupný znak (*), použijete-li rozhraní API strategii souběžnosti typu Last-one-wins. V tomto případě nedojde k porovnání značky ETag a prostředek se aktualizuje bez jakýchkoli kontrol.