Benannte Anforderungswarteschlange

Das Feature für die benannte Anforderungswarteschlange der HTTP Server-API Version 2.0 ermöglicht mehreren Anwendungen, die unter separaten Prozessen und Benutzerkonten ausgeführt werden, Zugriff auf die Anforderungswarteschlange. Die Anforderungswarteschlange wird anhand des Namens geöffnet und mithilfe von Access Control Lists (ACLs) geschützt, um sicherzustellen, dass Anwendungen nicht auf andere Daten zugreifen können. Ein einzelner Prozess erstellt die Anforderungswarteschlange und gewährt anderen Prozessen die Berechtigung zur Verwendung der Anforderungswarteschlange. Daher greifen andere Prozesse auf dem Computer mit den geringsten Berechtigungen auf die Anforderungswarteschlange zu, die zum Warten von Anforderungen erforderlich sind. Mögliche Schäden am HTTP-Dienst aufgrund von Sicherheitsrisiken im Code von Drittanbietern werden minimiert, wenn Anwendungen mit den geringsten Berechtigungen ausgeführt werden.

Die benannte Anforderungswarteschlange wird mit der HttpCreateRequestQueue-Funktion erstellt. Wenn die Anforderungswarteschlange erstellt wird, gibt die Anwendung die ACL im pSecurityAttribute-Parameter an. Die ACL, die nur festgelegt werden kann, wenn die Anforderungswarteschlange erstellt wird, ermöglicht Es Workerprozessen, die Anforderungswarteschlange zu öffnen, Anforderungen zu empfangen und Antworten zu senden. Standardmäßig dürfen Prozesse keine Anforderungswarteschlange öffnen, es sei denn, ihnen wurde die Berechtigung in der ACL erteilt. Anwendungen benötigen keine Administratorrechte, um die Anforderungswarteschlange zu erstellen.

Die Anforderungswarteschlange muss mit einem Namen erstellt werden, der im pName-Parameter von HttpCreateRequestQueue angegeben ist, damit andere Prozesse die Anforderungswarteschlange öffnen können. Wenn pName NULL ist, wird eine unbenannte Anforderungswarteschlange erstellt, und andere Prozesse können sie nicht öffnen.

Ersteller- und Controllerprozesse

Wenn die Anforderungswarteschlange erstellt wird, kann die Anwendung sie als Controllerprozess oder Erstellerprozess öffnen. Sowohl der Controller als auch der Erstellerprozess fungieren als Administratoren für die Anforderungswarteschlange, aber der Controller führt keine E/A-Vorgänge dafür aus. Die Anwendung gibt an, dass es sich um einen Controllerprozess handelt, wenn die Anforderungswarteschlange erstellt wird, indem HTTP CREATE REQUEST QUEUE FLAG _ _ _ _ _ CONTROLLER im Flags-Parameter von HttpCreateRequestQueue angegeben wird. Wenn das Flag HTTP CREATE REQUEST QUEUE FLAG _ _ _ _ _ CONTROLLER nicht festgelegt ist, ist die Anwendung ein Erstellerprozess.

Die folgende Liste enthält Aufgaben, die vom Controllerprozess und vom Erstellerprozess ausgeführt werden:

  • Erstellen Sie die Anforderungswarteschlange, und geben Sie den Namen an.
  • Konfigurieren Sie die Anforderungswarteschlange mithilfe der HttpSetRequestQueueProperty-Funktion.
  • Fragen Sie die Konfigurationsparameter der Anforderungswarteschlange mithilfe der HttpQueryRequestQueueProperty-Funktion ab.
  • Erstellen Sie URL-Gruppen, und ordnet sie einer Anforderungswarteschlange zu.
  • Legen Sie die ACL fest, die die Arbeitsprozesse an, die E/A-Vorgänge in der Anforderungswarteschlange empfangen dürfen.
  • Rufen Sie HttpWaitForDemandStart auf, um die Instanziierung von Workerprozessen zu verzögern, bis die erste Anforderung in der Anforderungswarteschlange eintrifft.

Zusätzlich zu diesen Aufgaben kann der Erstellerprozess auch E/A-Vorgänge für die Anforderungswarteschlange ausführen.

Arbeitsprozesse

Ein Workerprozess kann eine vorhandene Anforderungswarteschlange nur öffnen, wenn ihnen in der ACL Zugriff darauf gewährt wurde. Workerprozesse, die mit den geringsten Berechtigungen ausgeführt werden, können eine Anforderungswarteschlange öffnen und E/A-Vorgänge für sie ausführen. Anwendungen öffnen eine vorhandene Anforderungswarteschlange, indem sie HttpCreateRequestQueue mit dem HTTP CREATE REQUEST QUEUE FLAG OPEN _ _ _ _ _ _ EXISTING im Flags-Parameter und dem Namen der Anforderungswarteschlange im pName-Parameter aufrufen.

Der Workerprozess führt die folgenden Funktionen aus:

  • Empfangen von Anforderungen und Senden von Antworten in der Anforderungswarteschlange.
  • Öffnen Sie eine vorhandene Anforderungswarteschlange nach Namen. Das Handle für die Anforderungswarteschlange, die an den Arbeitsprozess zurückgegeben wird, kann nicht zum Konfigurieren der Anforderungswarteschlange verwendet werden.
  • Fragen Sie die Konfigurationsparameter der Anforderungswarteschlange ab.

Das folgende Diagramm zeigt das Arbeitsprozessmodell für Anforderungswarteschlangen. Die Anforderungswarteschlange kann über mehrere Arbeitsprozesse verfügen, die E/A verarbeiten, und ein Ersteller verarbeitet, der die Anforderungswarteschlange konfiguriert.

Workerprozessmodell für Anforderungswarteschlangen