Cola de solicitudes con nombre

La característica de cola de solicitudes denominada API de HTTP Server versión 2.0 permite varias aplicaciones, operaciones en procesos independientes y cuentas de usuario, acceso a la cola de solicitudes. La cola de solicitudes se abre por nombre y se protege mediante listas de control de acceso (ACL) para asegurarse de que las aplicaciones no puedan acceder a los datos entre sí. Un único proceso crea la cola de solicitudes y concede permiso a otros procesos para usar la cola de solicitudes. Por lo tanto, otros procesos del equipo acceden a la cola de solicitudes con el privilegio mínimo necesario para atender las solicitudes. Los posibles daños en el servicio HTTP, debido a vulnerabilidades en código de terceros, se minimizan cuando las aplicaciones se ejecutan con menos privilegios.

La cola de solicitudes con nombre se crea con la funciónHttpCreateRequestQueue. Cuando se crea la cola de solicitudes, la aplicación especifica la ACL en el parámetro pSecurityAttribute. La ACL, que solo se puede establecer cuando se crea la cola de solicitudes, permite a los procesos de trabajo abrir la cola de solicitudes, recibir solicitudes y enviar respuestas. De forma predeterminada, los procesos no pueden abrir una cola de solicitudes a menos que se les haya concedido permiso en la ACL. Las aplicaciones no requieren privilegios administrativos para crear la cola de solicitudes.

La cola de solicitudes debe crearse con un nombre especificado en el parámetro pName de HttpCreateRequestQueue para que otros procesos abran la cola de solicitudes. Si pName es null, se crea una cola de solicitudes sin nombre y no se puede abrir ningún otro proceso.

Procesos de creador y controlador

Cuando se crea la cola de solicitudes, la aplicación puede abrirla como un proceso de controlador o un proceso de creador. Los procesos de controlador y creador actúan como administradores para la cola de solicitudes, pero el controlador no realiza operaciones de E/S en ella. La aplicación indica que es un proceso de controlador cuando se crea la cola de solicitudes especificando HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER en el parámetro flags de de HttpCreateRequestQueue. Si no se establece la marca HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER, la aplicación es un proceso de creador.

La lista siguiente contiene las tareas realizadas por el proceso de controlador y el proceso de creador:

  • Cree la cola de solicitudes y especifique el nombre.
  • Configure la cola de solicitudes mediante la funciónHttpSetRequestQueueProperty.
  • Consulte los parámetros de configuración de la cola de solicitudes mediante la funciónHttpQueryRequestQueueProperty.
  • Cree grupos de direcciones URL y asócielos a una cola de solicitudes.
  • Establezca la ACL que especifica los procesos de trabajo que pueden recibir E/S en la cola de solicitudes.
  • Llame a HttpWaitForDemandStart para retrasar la creación de instancias de los procesos de trabajo hasta que llegue la primera solicitud a la cola de solicitudes.

Además de estas tareas, el proceso de creador también puede realizar operaciones de E/S en la cola de solicitudes.

Procesos de trabajo

Un proceso de trabajo solo puede abrir una cola de solicitudes existente si se les ha concedido acceso a ella en la ACL. Los procesos de trabajo que funcionan con privilegios mínimos pueden abrir una cola de solicitudes y realizar E/S en él. Las aplicaciones abren una cola de solicitudes existente llamando a httpCreateRequestQueue con el HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING en el parámetro Flags de y el nombre de la cola de solicitudes en el parámetro pName.

El proceso de trabajo realiza las funciones siguientes:

  • Recibir solicitudes y enviar respuestas en la cola de solicitudes.
  • Abra una cola de solicitudes existente por nombre. No se puede usar el identificador de la cola de solicitudes devuelta al proceso de trabajo para configurar la cola de solicitudes.
  • Consulte los parámetros de configuración de la cola de solicitudes.

En el diagrama siguiente se muestra el modelo de proceso de trabajo para las colas de solicitudes. La cola de solicitudes puede tener varios procesos de trabajo que procesan E/S y un proceso de creador que configura la cola de solicitudes.

modelo de proceso de trabajo para colas de solicitudes