Freigeben über


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, den Zugriff auf die Anforderungswarteschlange. Die Anforderungswarteschlange wird anhand des Namens geöffnet und mithilfe von Zugriffssteuerungslisten (ACCESS Control Lists, ACLs) gesichert, um sicherzustellen, dass Anwendungen nicht auf die anderen Daten zugreifen können. Ein einzelner Prozess erstellt die Anforderungswarteschlange und gewährt anderen Prozessen die Berechtigung, die Anforderungswarteschlange zu verwenden. Daher greifen andere Prozesse auf dem Computer auf die Anforderungswarteschlange mit den geringsten Berechtigungen zu, die für Serviceanfragen 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 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, sie wurden in der ACL berechtigungen erteilt. Anwendungen erfordern 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 angegeben ist, um die Anforderungswarteschlange zu öffnen. Wenn pName-NULL-ist, wird eine nicht benannte Anforderungswarteschlange erstellt, und es können keine anderen Prozesse geöffnet werden.

Ersteller- und Controllerprozesse

Wenn die Anforderungswarteschlange erstellt wird, kann die Anwendung sie als Controllerprozess oder Erstellerprozess öffnen. Der Controller und der Ersteller fungieren beide als Administratoren für die Anforderungswarteschlange, der Controller führt jedoch keine E/A-Vorgänge darauf aus. Die Anwendung gibt an, dass es sich um einen Controllerprozess handelt, wenn die Anforderungswarteschlange erstellt wird, indem sie HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER im parameter Flags von HttpCreateRequestQueueangibt. 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 der 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 E/A 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 E/A-Vorgänge in der Anforderungswarteschlange ausführen.

Arbeitsprozesse

Ein Arbeitsprozess kann eine vorhandene Anforderungswarteschlange nur öffnen, wenn ihnen in der ACL Zugriff darauf gewährt wurde. Arbeitsprozesse, die unter den geringsten Berechtigungen ausgeführt werden, können eine Anforderungswarteschlange öffnen und E/A daran ausführen. Anwendungen öffnen eine vorhandene Anforderungswarteschlange, indem Sie HttpCreateRequestQueue- mit dem HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING im Parameter Flags aufrufen und den 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 anhand des Namens. Das Handle an 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 einen Erstellerprozess, der die Anforderungswarteschlange konfiguriert.

Arbeitsprozessmodell für Anforderungswarteschlangen