Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja kolejki żądań interfejsu API serwera HTTP w wersji 2.0 umożliwia wielu aplikacjom działającym w oddzielnych procesach i kontach użytkowników, dostęp do kolejki żądań. Kolejka żądań jest otwierana według nazwy i zabezpieczona przy użyciu list kontroli dostępu (ACL), aby upewnić się, że aplikacje nie mogą uzyskiwać dostępu do danych innych. Pojedynczy proces tworzy kolejkę żądań i udziela uprawnień innym procesom do korzystania z kolejki żądań. W związku z tym inne procesy na komputerze uzyskują dostęp do kolejki żądań z najniższymi uprawnieniami niezbędnymi do obsługi żądań. Możliwe uszkodzenie usługi HTTP z powodu luk w zabezpieczeniach w kodzie innej firmy jest zminimalizowane, gdy aplikacje działają w ramach najniższych uprawnień.
Nazwana kolejka żądań jest tworzona za pomocą funkcjiHttpCreateRequestQueue. Po utworzeniu kolejki żądań aplikacja określa listę ACL w parametrze pSecurityAttribute. Lista ACL, którą można ustawić tylko po utworzeniu kolejki żądań, umożliwia procesom roboczym otwieranie kolejki żądań, odbieranie żądań i wysyłanie odpowiedzi. Domyślnie procesy nie mogą otwierać kolejki żądań, chyba że udzielono im uprawnień na liście ACL. Aplikacje nie wymagają uprawnień administracyjnych do utworzenia kolejki żądań.
Kolejka żądań musi zostać utworzona z nazwą określoną w parametrze pNameHttpCreateRequestQueue dla innych procesów w celu otwarcia kolejki żądań. Jeśli pName jest o wartości NULL, zostanie utworzona nienazwana kolejka żądań i nie można otworzyć żadnych innych procesów.
Procesy twórcy i kontrolera
Po utworzeniu kolejki żądań aplikacja może otworzyć ją jako proces kontrolera lub proces twórcy. Zarówno kontroler, jak i twórca działają jako administratorzy kolejki żądań, ale kontroler nie wykonuje na nim operacji we/wy. Aplikacja wskazuje, że jest to proces kontrolera po utworzeniu kolejki żądań, określając HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER w Flags parametru HttpCreateRequestQueue. Jeśli flaga HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER nie jest ustawiona, aplikacja jest procesem twórcy.
Poniższa lista zawiera zadania wykonywane przez proces kontrolera i proces twórcy:
- Utwórz kolejkę żądań i określ nazwę.
- Skonfiguruj kolejkę żądań przy użyciu funkcji httpSetRequestQueueProperty.
- Wykonaj zapytanie dotyczące parametrów konfiguracji kolejki żądań przy użyciu funkcji httpQueryRequestQueueProperty.
- Utwórz grupy adresów URL i skojarz je z kolejką żądań.
- Ustaw listę ACL określającą procesy robocze, które mogą odbierać we/wy w kolejce żądań.
- Wywołaj HttpWaitForDemandStart, aby opóźnić utworzenie wystąpienia procesów roboczych do momentu odebrania pierwszego żądania w kolejce żądań.
Oprócz tych zadań proces twórcy może również wykonywać operacje we/wy w kolejce żądań.
Procesy robocze
Proces roboczy może otworzyć istniejącą kolejkę żądań tylko wtedy, gdy udzielono im dostępu do niej na liście ACL. Procesy robocze działające w ramach najniższych uprawnień mogą otwierać kolejkę żądań i wykonywać na niej operacje we/wy. Aplikacje otwierają istniejącą kolejkę żądań, wywołując HttpCreateRequestQueue z HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING w parametrze Flags oraz nazwą kolejki żądań w parametrze pName.
Proces roboczy wykonuje następujące funkcje:
- Odbieranie żądań i wysyłanie odpowiedzi w kolejce żądań.
- Otwórz istniejącą kolejkę żądań według nazwy. Nie można użyć dojścia do kolejki żądań zwróconej do procesu roboczego w celu skonfigurowania kolejki żądań.
- Wykonaj zapytanie dotyczące parametrów konfiguracji kolejki żądań.
Na poniższym diagramie przedstawiono model procesu roboczego dla kolejek żądań. Kolejka żądań może mieć kilka procesów roboczych, które przetwarzają we/wy, oraz jeden proces twórcy, który konfiguruje kolejkę żądań.