Benannte Anforderungswarteschlange

Die HTTP Server Version 2.0-API mit dem Namen "Anforderungswarteschlange" ermöglicht mehrere Anwendungen, die unter separaten Prozessen und Benutzerkonten ausgeführt werden, zugriff auf die Anforderungswarteschlange. Die Anforderungswarteschlange wird nach Namen geöffnet und mithilfe von Access Control Listen (ACLs) gesichert, um sicherzustellen, dass Anwendungen nicht auf alle anderen Daten zugreifen können. Ein einzelner Prozess erstellt die Anforderungswarteschlange und gewährt anderen Prozessen die Berechtigung für die Verwendung der Anforderungswarteschlange. Daher greifen andere Prozesse auf dem Computer auf die Anforderungswarteschlange mit den geringsten Berechtigungen zu, die für Dienstanforderungen erforderlich sind. Mögliche Schäden am HTTP-Dienst, aufgrund von Sicherheitsrisiken im Code von Drittanbietern, werden minimiert, wenn Anwendungen unter den geringsten Berechtigungen ausgeführt werden.

Die benannte Anforderungswarteschlange wird mit der Funktion HttpCreateRequestQueue erstellt. Wenn die Anforderungswarteschlange erstellt wird, gibt die Anwendung die ACL im pSecurityAttribute-Parameter an. Die ACL, die nur festgelegt werden kann, wenn die Anforderungswarteschleife 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, sie wurden der ACL die Berechtigung 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 für andere Prozesse zum Öffnen der Anforderungswarteschlange angegeben ist. Wenn pNameNULL ist, wird eine nicht benannte Anforderungswarteschlange erstellt, und es kann keine anderen Prozesse geöffnet werden.

Ersteller- und Controllerprozesse

Wenn die Anforderungswarteschlange erstellt wird, kann die Anwendung sie als Controllerprozess oder als Erstellerprozess öffnen. Der Controller und der Ersteller fungieren sowohl als Administratoren für die Anforderungswarteschlange, aber der Controller führt keine I/O-Vorgänge darauf 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 Parameter "Flags " von HttpCreateRequestQueue angegeben wird. Wenn das HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER Flag nicht festgelegt ist, ist die Anwendung ein Erstellerprozess.

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

  • Erstellen Sie die Anforderungswarteschlange, und geben Sie den Namen an.
  • Konfigurieren Sie die Anforderungswarteschlange mithilfe der Funktion HttpSetRequestQueueProperty .
  • Abfragen der Konfigurationsparameter für die Anforderungswarteschlange mithilfe der Funktion HttpQueryRequestQueueProperty .
  • Erstellen Sie URL-Gruppen, und ordnen Sie sie einer Anforderungswarteschlange zu.
  • Legen Sie die ACL fest, die die Arbeitsprozesse angibt, die I/O in der Anforderungswarteschlange empfangen dürfen.
  • Rufen Sie httpWaitForDemandStart auf, um die Instanziierung von Arbeitsprozessen zu verzögern, bis die erste Anforderung in der Anforderungswarteschlange eingeht.

Zusätzlich zu diesen Aufgaben kann der Erstellerprozess auch I/O-Vorgänge in der Anforderungswarteschlange ausführen.

Arbeitsprozesse

Ein Arbeitsprozess kann eine vorhandene Anforderungswarteschlange nur öffnen, wenn ihnen der Zugriff auf diese in der ACL gewährt wurde. Arbeitsprozesse, die unter den geringsten Berechtigungen ausgeführt werden, können eine Anforderungswarteschlange öffnen und E/A darauf ausführen. Anwendungen öffnen eine vorhandene Anforderungswarteschlange, indem Sie httpCreateRequestQueue mit dem HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING im Parameter Flags und dem Namen der Anforderungswarteschlange im pName-Parameter aufrufen.

Der Arbeitsprozess 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 an die Anforderungswarteschlange, die an den Arbeitsprozess zurückgegeben wird, kann nicht verwendet werden, um die Anforderungswarteschlange zu konfigurieren.
  • Abfragen der Konfigurationsparameter für die Anforderungswarteschlange.

Das folgende Diagramm zeigt das Arbeitsprozessmodell für Anforderungswarteschlangen. Die Anforderungswarteschlange kann mehrere Arbeitsprozesse haben, die E/A verarbeiten, und ein Erstellerprozess, der die Anforderungswarteschlange konfiguriert.

worker process model for request queues