Vector-based sending of web content
View Patent ↗A web server arrangement includes user-mode web application logic that is configured to receive a web request and process the web request and generate a web request response. Vector send logic is then employed to identify a location of content of the web request response using a vector array. Kernel-mode vector receive logic then assembles the web request response in a contiguous section of kernel-mode or other like memory based on the vector array. Kernel mode universal listener logic then sends the assembled web request response to the requesting client application logic.
1. A method comprising:
causing a user-mode web application in a web server to:
process a web request,
generate a web request response having static and dynamic content, and
store said static and dynamic content in a plurality of non-contiguous sections of user-mode memory;
identifying said static and dynamic content within said plurality of non-contiguous sections of user-mode memory with a vector array, said vector array comprising a plurality of identifiers, each identifier associated with one of said plurality of non-contiguous sections of user-mode memory, and each identifier having an index ranging from zero to n, said vector array allowing a kernel-mode process to retrieve said static and dynamic content in said web request response from within said plurality of non-contiguous sections of user-mode memory;
causing a kernel-mode process to assemble said static and dynamic content of said web request response in a contiguous section of memory associated with said kernel-mode process based on said vector array and without first assembling said static and dynamic content into a contiguous section of user-mode memory; and
causing said kernel-mode process to send said vector array to a requesting client application.
2. The method as recited in claim 1 , wherein said plurality of identifiers includes at least one identifier selected from a group of identifiers comprising a pointer, a tag, a handle, an offset, a length, a size, a memory address, a disk drive location, and a buffer identifier.
3. The method as recited in claim 1 , wherein user-mode vector send logic is used to identify said static and dynamic content in said web request response and generate said vector array.
4. The method as recited in claim 1 , wherein kernel-mode vector receive logic is used to assemble said static and dynamic content of said web request response in said contiguous section of memory associated with said kernel-mode process based on said vector array.
5. The method as recited in claim 1 , wherein said kernel-mode process includes a universal listener (UL) service.
6. One or more computer-readable media storing computer-executable instructions that, when executed on one or more processors, perform acts comprising:
causing a user-mode web application in a web server to:
process a web request,
generate a web request response having static and dynamic content, and
store said static and dynamic content in a plurality of non-contiguous sections of user-mode memory;
identifying said static and dynamic content within said plurality of non-contiguous sections of user-mode memory with a vector array, said vector array comprising a plurality of identifiers, each identifier associated with one of said plurality of non-contiguous sections of user-mode memory, and each identifier having an index ranging from zero to n, said vector array allowing a kernel-mode process to retrieve said static and dynamic content in said web request response from within said plurality of non-contiguous sections of user-mode memory;
causing a kernel-mode process to assemble said static and dynamic content of said web request response in a contiguous section of memory associated with said kernel-mode process based on said vector array and without first assembling said static and dynamic content into a contiguous section of user-mode memory; and
causing said kernel-mode process to send said vector array to a requesting client application.
7. One or more computer-readable media as recited in claim 6 , wherein said plurality of identifiers includes at least one identifier selected from a group of identifiers comprising a pointer, a tag, a handle, an offset, a length, a size, a memory address, a disk drive location, and a buffer identifier.
8. One or more computer-readable media as recited in claim 6 , wherein user-mode vector send logic is used to identify said static and dynamic content in said web request response and generate said vector array.
9. One or more computer-readable media as recited in claim 6 , wherein kernel-mode vector receive logic is used to assemble said static and dynamic content of said web request response in said contiguous section of memory associated with said kernel-mode process based on said vector array.
10. One or more computer-readable media as recited in claim 6 , wherein said kernel-mode process includes a universal listener (UL) service.
11. A computer system comprising:
one or more processors;
memory, accessible by the one or more processors;
a user-mode web application logic module stored in memory and executable on the one or more processors:
receive a web request, process said web request,
generate a web request response having static and dynamic content, and
store said static and dynamic content in a plurality of non-contiguous sections of user-mode memory;
cause vector send logic operatively coupled to said web application logic to identify a location within said plurality of non-contiguous sections of user-mode memory of said static and dynamic content of said web request response using a vector array, said vector array comprising a plurality of identifiers, each identifier associated with one of said plurality of non-contiguous sections of user-mode memory, and each identifier having an index ranging from zero to n, said vector array allowing a kernel-mode vector receive logic to retrieve said static and dynamic content in said web request response from within said plurality of non-contiguous sections of user-mode memory;
cause kernel-mode vector receive logic operatively coupled to said vector send logic to copy said static and dynamic content of said web request response into a contiguous section of memory associated with said kernel-mode vector receive logic based on said vector array and without first assembling said static and dynamic content into a contiguous section of user-mode memory; and
cause a kernel-mode universal listener logic configured to send said web request response to a requesting client application.
12. The computer system as recited in claim 11 , wherein said plurality of identifiers includes at least one identifier selected from a group of identifiers comprising a pointer, a tag, a handle, an offset, a length, a size, a memory address, a disk drive location, and a buffer identifier.