Fronta pojmenovaných žádostí

Funkce fronty požadavků s názvem HTTP Server verze 2.0 umožňuje více aplikacím, které pracují v samostatných procesech a uživatelských účtech, přístup k frontě požadavků. Fronta žádostí je otevřena podle názvu a zabezpečená pomocí seznamů řízení přístupu (ACL) k zajištění toho, aby aplikace neměly přístup k datům ostatních. Jeden proces vytvoří frontu žádostí a udělí ostatním procesům oprávnění k použití fronty požadavků. Jiné procesy v počítači tak přistupují k frontě požadavků s nejnižšími oprávněními potřebnými pro žádosti o služby. Možné poškození služby HTTP kvůli ohrožením zabezpečení v kódu třetí strany je minimalizované, když aplikace běží pod nejnižšími oprávněními.

Pojmenovaná fronta požadavků se vytvoří pomocí funkce HttpCreateRequestQueue. Při vytvoření fronty požadavků aplikace určuje seznam ACL v parametru pSecurityAttribute. Seznam ACL, který lze nastavit pouze při vytvoření fronty požadavků, umožňuje pracovním procesům otevřít frontu požadavků, přijímat požadavky a odesílat odpovědi. Ve výchozím nastavení nejsou procesy povoleny k otevření fronty žádostí, pokud nejsou udělena oprávnění v seznamu ACL. Aplikace nevyžadují oprávnění správce k vytvoření fronty žádostí.

Fronta požadavků musí být vytvořena s názvem zadaným v parametru pName HttpCreateRequestQueue pro ostatní procesy, aby se otevřela fronta požadavků. Pokud je pNamenull, vytvoří se nepojmenovaná fronta požadavků a žádné jiné procesy ji nebudou moct otevřít.

Procesy tvůrce a kontroleru

Po vytvoření fronty požadavků ji aplikace může otevřít jako proces kontroleru nebo proces tvůrce. Kontroler i tvůrce zpracovávají jak správci fronty požadavků, ale kontroler na ní neprovádí vstupně-výstupní operace. Aplikace označuje, že jde o proces kontroleru při vytvoření fronty požadavků zadáním HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER v parametru Flags parametru HttpCreateRequestQueue. Pokud není příznak HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER nastavený, aplikace je proces tvůrce.

Následující seznam obsahuje úlohy prováděné procesem kontroleru a procesem tvůrce:

  • Vytvořte frontu žádostí a zadejte název.
  • Nakonfigurujte frontu požadavků pomocí funkce HttpSetRequestQueueProperty.
  • Pomocí funkce HttpQueryRequestQueueProperty zadejte dotaz na parametry konfigurace fronty požadavku.
  • Vytvořte skupiny adres URL a přidružíte je k frontě požadavků.
  • Nastavte seznam ACL určující pracovní procesy, které mají povoleno přijímat vstupně-výstupní operace ve frontě požadavků.
  • Volání HttpWaitForDemandStart zpoždění vytváření instancí pracovních procesů do doby, než první požadavek dorazí do fronty žádosti.

Kromě těchto úloh může proces tvůrce také provádět vstupně-výstupní operace ve frontě požadavků.

Pracovní procesy

Pracovní proces může otevřít existující frontu žádostí pouze v případě, že k ní byl udělen přístup v seznamu ACL. Pracovní procesy, které pracují s nejnižšími oprávněními, můžou otevřít frontu žádostí a provádět v ní vstupně-výstupní operace. Aplikace otevřou existující frontu požadavků voláním HttpCreateRequestQueue s HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING v parametru Flags a názvem fronty požadavků v parametru pName.

Pracovní proces provádí následující funkce:

  • Přijímat žádosti a odesílat odpovědi do fronty požadavků
  • Otevřete existující frontu žádostí podle názvu. Popisovač fronty požadavků vrácené do pracovního procesu nelze použít ke konfiguraci fronty požadavků.
  • Zadejte dotaz na parametry konfigurace fronty požadavků.

Následující diagram znázorňuje model pracovního procesu pro fronty požadavků. Fronta požadavků může mít několik pracovních procesů, které zpracovávají vstupně-výstupní operace, a procesy jednoho tvůrce, které konfigurují frontu požadavků.

model pracovního procesu pro fronty požadavků