PARTIAL MESSAGE STREAMING

Abstract
Embodiments provided herein support large messages by formatting at least a portion of the message in the form of a transport stream. More specifically, embodiments provide a SOAP model that can stream an object for a message without loading the entire message into an intermediate buffer. Accordingly, one embodiment supports loading SOAP headers into memory, yet streaming the body. This would allow, for example, large attachments (e.g., a video file) to accompany the SOAP message in the body, while still supporting random access to message headers. Accordingly, embodiments provide a SOAP data model that allows a developer to create an object and specify whether or not portions of the message should be buffered or streamed.
Description

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above-recited and other advantages and features of the invention can be obtained, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:



FIG. 1 illustrates a distributed system configured to utilize an open-ended object model in accordance with example embodiments;



FIG. 2A illustrates the use of a message contract to create a general message object in accordance with example embodiments;



FIG. 2B illustrates using a message formatter for communication with a service operation in accordance with example embodiments;



FIG. 3 illustrates a flow diagram for a method of using a single message object to create message instances of multiple messaging formats in accordance with example embodiments;



FIGS. 4A and 4B illustrate flow diagrams for methods of simultaneously exposing a message infoset as both an XML view and a Type view in accordance with example embodiments;



FIG. 5 illustrates a flow diagram for a method of indexing headers for a SOAP message as an array in accordance with example embodiments;



FIGS. 6A and 6B illustrate flow diagrams for methods of efficiently processing a SOAP message by attaching thereto properties representing processing state for portions of the message in accordance with example embodiments;



FIG. 7 illustrates a flow diagram for a method of formatting a layout of a message object using a message contract in accordance with example embodiments;



FIG. 8 illustrates a flow diagram for a method of creating an instance of a message object by using a message contract in accordance with example embodiments;



FIG. 9 illustrates a flow diagram for a method of automatically creating a NPDL contract in accordance with example embodiments; and



FIG. 10 illustrates a flow diagram for a method of determining a type of encoding to use for a SOAP message in accordance with example embodiments.


Claims
  • 1. In a distributed messaging system, a method of efficiently sending large messages by limiting the amount of the message that is loaded into an intermediate buffer before sending across a wire to a destination node, the method comprising: accessing a message that is to be sent across the wire to a destination node; loading a first portion of the message into an intermediate buffer for random access thereto;formatting a second portion of the message, different from the first portion, in the form of a transport stream; andstreaming the second portion of the message across a wire to the destination node without loading the second portion in the intermediate buffer in order to reduce buffer requirements for sending large messages.
  • 2. The method of claim 1, wherein the message is a SOAP message and the first portion includes one or more headers, and the second portion is an attachment within a body of the message.
  • 3. The method of claim 1, wherein the streaming of the second portion is done using a transport connection that is dedicated to stream the message.
  • 4. The method of claim 3, wherein the type of transport supports exchange patterns of one or more request/reply channel, output/input channel, or full duplex channel.
  • 5. The method of claim 3, wherein upon sending the message the method further comprises: closing the transport connection in order to notify the destination node that the transmission is complete.
  • 6. The method of claim 3, wherein the transport connection is one of a TCP socket, named pipe, or HTTP connection.
  • 7. The method of claim 6, wherein the client is configured to send the message across one of the transport connections using a transfer mode property of a channel factory.
  • 8. The method of claim 6, wherein the client is configured to send the message across one of the transport connections using a transport binding element.
  • 9. In a distributed messaging system, a computer program product for implementing a method of efficiently sending large messages by limiting the amount of the message that is loaded into an intermediate buffer before sending across a wire to a destination node, the computer program product comprising one or more computer readable media having stored thereon computer executable instructions that, when executed by a processor, can cause the distributed messaging system to perform the following: access a message that is to be sent across the wire to a destination node;load a first portion of the message into an intermediate buffer for random access thereto; format a second portion of the message, different from the first portion, in the form of a transport stream; andstream the second portion of the message across a wire to the destination node without loading the second portion in the intermediate buffer in order to reduce buffer requirements for sending large messages.
  • 10. The computer program product of claim 9, wherein the message is a SOAP message and the first portion includes one or more headers, and the second portion is an attachment within a body of the message.
  • 11. The computer program product of claim 9, wherein the streaming of the second portion is done using a transport connection that is dedicated to stream the message.
  • 12. The computer program product of claim 11, wherein the type of transport supports exchange patterns of one or more request/reply channel, output/input channel, or full duplex channel.
  • 13. The computer program product of claim 11, wherein upon sending the message the computer program product further comprises computer executable instructions that cause the distributed messaging system to perform the following: close the transport connection in order to notify the destination node that the transmission is complete.
  • 14. The computer program product of claim 11, wherein the transport connection is one of a TCP socket, named pipe, or HTTP connection.
  • 15. The computer program product of claim 14, wherein the client is configured to send the message across one of the transport connections using a transfer mode property of a channel factory.
  • 16. The computer program product of claim 14, wherein the client is configured to send the message across one of the transport connections using a transport binding element.
  • 17-26. (canceled)
Provisional Applications (2)
Number Date Country
60764127 Jan 2006 US
60764306 Feb 2006 US