Protocol Processing Device And Method
Claim Score by NHIP
Abstract
The SPD according to exemplary embodiments of the invention may interface with different buses and computer system architectures to enable deployment in a wide variety of devices. Heterogeneous network (300) using SPDs in various computing devices. Desktop computers (302), mobile systems (such as cell phones) (304), mainframes (306), workstations (308), PDA systems (310) and other devices may be operatively connected to a network (such as the Internet or an Intranet). These devices may include SPDs (312) to enable web services to be provided among these devices. They may also communicate with some devices that do not include SPDs (such as the PC Desktop System (302) and Mobile System (304) in FIG. 3). These devices would require the use of a SOAP software toolkit for the particular platform, because they do not include an SPD. The SPDs could have different designs in different systems, while they share a common SOAP engine to provide a consistent and efficient SOAP processing capability.

Term
1.1 yearsto projected expiry
Projected expiry 7 November 2027, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
26 claims: 5 independent, 21 dependent
- 1Broadest claimClaim Score 85, broad(NHIP)A device for converting a message from a SOAP format to an application specific format comprising:circuitry for receiving the message in the SOAP format and for providing the message in the application specific format;circuitry for determining whether the message is in the SOAP format or the application specific format;and circuitry for converting the message from the SOAP format into the application specific format.
- 5A device for converting a message from an application specific format to a SOAP format comprising:circuitry for receiving the message in the application specific format and for providing the message in the SOAP format;circuitry for determining whether the message is in the SOAP format or the application specific format;circuitry for converting elements in the message from the application specific format into the SOAP format;circuitry for creating an envelope element, header element, body element, header entry and body entry from the elements converted from the message in the application specific format;and circuitry for sequencing and constructing the message in the SOAP format using the envelope element, the header element, the body element, the header entry and the body entry.
- 20A method for processing a message in a given application specific format, comprising:storing translation information for a plurality of application specific formats in a memory, including the given application specific format;receiving the message in the given application specific format;determining that the message is in the given application specific format;retrieving the translation information for the given application specific format from the memory;and translating the message from the given application specific format into a markup language format.
- 23A system comprising:a host processor;a first application capable of being executed by the host processor, wherein the first application uses a first application specific format;a second application capable of being executed by the host processor, wherein the second application uses a first application specific format;means for receiving a message from the first application and the second application;means for determining whether the message is in the first application specific format or the second application specific format;and means for selectively translating the message from the first application specific format into a markup language format;and means for selectively translating the message from the second application specific format into the markup language format.
- 25A system comprising:a host processor;a first application capable of being executed by the host processor, wherein the first application uses a first application specific format;a second application capable of being executed by the host processor, wherein the second application uses a first application specific format;means for receiving a message in a markup language format;means for determining whether the message is addressed to the first application or the second application;means for selectively translating the message from the markup language format into the first application specific format;and means for selectively translating the message from the markup language format into the second application specific format.
Independent claims5
143 paragraphs in 7 sections, as filed
REFERENCE TO RELATED APPLICATION
0001This application claims the benefit of U.S. provisional patent application No. 60/532,610, filed Dec. 24, 2003, which is incorporated herein by reference in its entirety.
FIELD OF THE INVENTION
0002The field of the present invention relates to protocol processing for distributed computing in a network. More specifically, the field of the present invention relates to a device and method for processing Simple Object Access Protocol (SOAP) and/or other protocols for distributed computing over the World Wide Web, intranets or other networks.
BACKGROUND OF THE INVENTION
0003Web Services is considered as the emerging technology that enables business-to-business automation. Web services has been described as a software component that employ one or more of the following technologies—SOAP, WSDL and UDDI—to perform distributed computing. Use of any of the basic technologies—SOAP, WSDL or UDDI—constitutes a Web service. Use of all of them is not required.
0004The three protocols introduced in the above description are: (1) SOAP, Simple Object Access Protocol, (2) WSDL, Web Services Description Language, and (3) UDDI, Universal Description, Discovery and Integration.
0005Extensible Markup Language forms the basis of these three fundamental technologies. XML is the acronym for Extensible Markup Language. XML is a simple, text based data description language. The extensible nature of this markup language has resulted in its tremendous growth and adoption in the Information Technology industry. SOAP, WSDL and UDDI use extensions of XML to provide the layers of Web Services. In the following paragraphs, we provide a description of SOAP, WSDL and UDDI:
0006SOAP, Simple Object Access Protocol. SOAP is an acronym for Simple Object Access Protocol. SOAP is a protocol based on XML for exchanging information in a decentralized distributed environment among the communicating applications.
0007WSDL, Web Services Description Language. WSDL is an acronym for Web Services Description Language. WSDL is an XML document that contains the description of Web Services as well as the means of accessing them. The descriptions of Web Services are entered in the WSDL document with the help of seven predefined XML markup tags.
0008UDDI, Universal Description, Discovery and Integration. UDDI is an acronym for Universal Description, Discovery and Integration. UDDI is an XML based specification for establishing business registries that store business and services related information. These business registries help other businesses and individuals to query and search for required information. Registries thus promote business-to-business among interested parties.
0009SOAP and Its Relevance. SOAP has been designed to be independent of transport protocol. It can be transported over HTTP, SMTP, FTP, etc. In the present web services environment, applications communicating using SOAP most often use HTTP as the transport protocol. This is due to the fact that HTTP is the preferred transport protocol in the web environment.
0010In the Web Services scenario it is possible that the communicating applications could be developed using different programming languages, deployed on disparate systems, and running on different operating environments. These applications interchange information in SOAP format. SOAP, therefore may be used to provide a cornerstone of interoperability. The communicating applications participating in the Web Services environment therefore require a facility to convert the application specific information to SOAP format and vice versa.
0011In conventional systems, the communicating applications in the Web Services scenario use “software tools” to convert the information to SOAP format. Apache Axis from Apache.org, SOAP Toolkit from Microsoft, Web Services Toolkit from IBM, and JWSDP from Sun are some examples of software tools relating to SOAP. Web Services applications may interact with these software tools to generate SOAP. The SOAP information is then transported using a transport protocol such as HTTP. This SOAP message is received by the target system and the software tools at the target system may then convert the SOAP to the format required by the target application.
0012The use of the SOAP protocol may be processing intensive. In certain versions of the SOAP protocol, binary and other compressed application specific formats may be required to be converted into long text strings for transmission in a platform independent SOAP format, which adds to the processing overhead. This aside, SOAP may require different software toolkits and implementations on different platforms. For instance, a SOAP toolkit from one software vendor may convert SOAP to Java specific formats, while another toolkit may convert SOAP to C++ specific formats. In large heterogeneous networks, it is difficult to ensure interoperability and widespread enablement of web services with different toolkits being used across a wide variety of platforms and applications. What is desired is a device and method for implementing SOAP and/or other protocols with improved processing efficiency and in a manner that allows consistent widespread deployment of the same implementation in different systems across a large heterogeneous network.
SUMMARY OF THE INVENTION
0013Aspects of the present invention relate to a device and method for protocol processing. In particular, aspects of the present invention provide a hardware device to accelerate the processing of SOAP and/or other protocols that use an envelope or other container for messages to be exchanged in a heterogeneous network. Such protocols may include the use of namespaces which define the tags used in the message, and schema definitions or an appropriate encoding, which define the grammar. In this document, we will, for the sake of convenience, refer to the extensible schema definitions (XSD) as an example of schema definitions in general. SOAP messages of both document style and remote procedure call (RPC) style communication may be supported by embodiments of the invention.
0014Aspects of the present invention may provide a SOAP processing device (SPD) or other protocol processing device implemented in one or more integrated circuits. The device may provide circuitry for, among other things, an I/O block, parser/validator, application code handler and protocol generator. Repetitive operations are implemented in circuitry such as comparison of tags and creation of repetitive structures (such as envelope elements or other container structures, header elements, and body elements). Circuitry may also be used to accelerate conversion of SOAP or other protocols into common application specific data formats such as Java, C++, and other application specific object access.
0015In an exemplary embodiment, the design of the device may use a set of selectable “IP Cores” and the domain-neutral nature of the SPD will, in fact, be affected by these selectable sets of hardware IP cores. These IP cores may be implemented as a built-in PCI interface, interface to a Wireless Access Protocol (WAP) or any such logic pertaining to any other communications Digital Signal Processor (DSP). The same general device architecture may be used with different IP cores to support different interfaces. The device may be targeted at a particular system architecture and include a specific interface for that system such as the PCI or PCI Express bus interface. Alternatively, in some embodiments, multiple interfaces may be supported. The interfaces may be selectively enabled or disabled for use in different systems. In some embodiments, multiple interfaces (such as PCI and PCI Express) may be enabled to allow the device to operate in a bridge configuration.
0016Aspects of the present invention may provide for an integrated circuit device for converting a message from a SOAP format to an application specific format, including: circuitry for receiving the message in the SOAP format and for providing the message in the application specific format; circuitry for determining whether the message is in the SOAP format or the application specific format; and circuitry for converting the message from the SOAP format into the application specific format.
0017Aspects of the present invention may also provide for circuitry and/or software for contacting a UDDI server for discovering the published web service endpoints. Aspects of the present invention may also provide for circuitry and/or software to decode the WSDL document published in the UDDI server in a comprehensive manner and also incorporate circuitry and/or software for connecting to the same.
0018Aspects of the present invention may also provide for an integrated circuit device for converting a message from an application specific format to a SOAP format, including: circuitry for receiving the message in the application specific format and for providing the message in the SOAP format; circuitry for determining whether the message is in the SOAP format or the application specific format; circuitry for converting elements in the message from the application specific format into the SOAP format; circuitry for creating an envelope element, header element, body element, header entry and body entry from the elements converted from the message in the application specific format; and circuitry for sequencing and constructing the message in the SOAP format using the envelope element, the header element, the body element, the header entry and the body entry.
0019Aspects of the present invention may also provide software for processing SOAP and/or other protocols across multiple applications using different application specific formats. In an exemplary embodiment, software may be used to convert a message from a SOAP format to one of several application specific formats, including: a module for receiving the message in the SOAP format and for providing the message in the application specific format; a module for determining whether the message is in the SOAP format or the application specific format; and a module for converting the message from the SOAP format into the application specific format. In another exemplary embodiment, software may be used to convert a message from one of several application specific formats into a SOAP format, including: a module for receiving the message in the application specific format and for providing the message in the SOAP format; a module for determining whether the message is in the SOAP format or the application specific format; a module for converting elements in the message from the application specific format into the SOAP format; a module for creating an envelope element, header element, body element, header entry and body entry from the elements converted from the message in the application specific format; and a module for sequencing and constructing the message in the SOAP format using the envelope element, the header element, the body element, the header entry and the body entry. In an exemplary embodiment, a single software program may be used to support SOAP and/or similar protocol processing for multiple disparate applications and formats on a single system. The software may reside in memory as a dynamically linkable module, driver or other software program or may reside on a separate card, blade or peripheral device.
0020Embodiments of the present invention may use the above aspects individually or in combination. For instance, a protocol processing device may use a combination of circuitry and software (which may also include firmware) to convert messages to and/or from SOAP and/or other formats. Multiple applications using different application specific formats may be supported by a single SOAP processor, whether implemented as hardware, software or a combination of both hardware and software.
INCORPORATION BY REFERENCE
0021All publications and patent applications mentioned in this specification are herein incorporated by reference to the same extent as if each individual publication or patent application was specifically and individually indicated to be incorporated by reference, including without limitation the following: specifications and descriptions of XML at http://www.w3c.org/XML/, specifications and descriptions of SOAP at http://www.w3c.org/TR/SOAP, specifications and descriptions of WSDL at http://www.w3c.org/TR/wsdl.html, and specifications and descriptions of UDDI at http://www.uddi.org.
BRIEF DESCRIPTION OF THE DRAWINGS
0022The novel features of the invention are set forth with particularity in the appended claims. A better understanding of the features and advantages of the present invention will be obtained by reference to the following detailed description that sets forth illustrative embodiments, in which the principles of the invention are utilized, and the accompanying drawings of which:
0023<figref idref="DRAWINGS">FIG. 1</figref> illustrates an exemplary SOAP request that may be processed using embodiments of the present invention.
0024<figref idref="DRAWINGS">FIG. 2</figref> illustrates an exemplary SOAP response that may be processed using embodiments of the present invention.
0025<figref idref="DRAWINGS">FIG. 3</figref> is a diagram of a heterogeneous network using SOAP processing devices in accordance with an embodiment of the present invention.
0026<figref idref="DRAWINGS">FIG. 4</figref> illustrates a SOAP processing device according to an embodiment of the present invention.
0027<figref idref="DRAWINGS">FIG. 5</figref> is a block diagram illustrating communication between two disparate systems powered using SOAP processing devices according to embodiments of the present invention.
0028<figref idref="DRAWINGS">FIG. 6</figref> is a block diagram illustrating the communication layers used to exchange information for web services including a SOAP processing device according to an embodiment of the present invention.
0029<figref idref="DRAWINGS">FIG. 7</figref> is a block diagram showing the top-level architecture of a SOAP processing device according to an embodiment of the present invention.
0030<figref idref="DRAWINGS">FIG. 8</figref> is a block diagram showing the architecture of an Application Interface Unit according to an exemplary embodiment used on a server.
0031<figref idref="DRAWINGS">FIG. 9</figref> is a block diagram showing the architecture of an Application Interface Unit according to any exemplary embodiments used on a client.
0032<figref idref="DRAWINGS">FIG. 10</figref> is a block diagram showing additional details of an architecture of a SOAP processing device according to an embodiment of the present invention.
0033<figref idref="DRAWINGS">FIG. 11</figref> is the architectural diagram of a SOAP processing device according to an exemplary embodiment.
0034<figref idref="DRAWINGS">FIG. 12A</figref> is a block diagram of a SOAP processing device which includes a Web Service Definition processor and a Web Service Locator according to an exemplary embodiment of the present invention.
0035<figref idref="DRAWINGS">FIG. 12B</figref> is a block diagram showing sub units of a Web Service Definition processor according to an exemplary embodiment of the present invention.
0036<figref idref="DRAWINGS">FIG. 13</figref> is a flow chart showing the method of converting a SOAP message to an application specific format and effectuating the operation in a SOAP processing device according to an embodiment of the present invention.
0037<figref idref="DRAWINGS">FIG. 14</figref> is a flow chart showing the method of converting an application specific format to a SOAP message in a SOAP processing device according to an embodiment of the present invention.
0038<figref idref="DRAWINGS">FIG. 15</figref> is a block diagram showing communications between two web services applications using a SOAP processing device according to an embodiment of the present invention.
0039<figref idref="DRAWINGS">FIG. 16</figref> is a block diagram showing flow of the information through the architecture of a SOAP processing device and the processing flow used to process a C++ request from the web services application shown in <figref idref="DRAWINGS">FIG. 15</figref> according to an embodiment of the present invention.
0040<figref idref="DRAWINGS">FIG. 17</figref> is a block diagram showing the flow of the information through architecture of a SOAP processing device and the processing flow used to process a SOAP message from the web services application shown in <figref idref="DRAWINGS">FIG. 15</figref> according to an embodiment of the present invention.
0041<figref idref="DRAWINGS">FIG. 18</figref> is a flow chart showing a method of protocol processing according to an exemplary embodiment of the present invention.
0042<figref idref="DRAWINGS">FIG. 19</figref> is a flow chart showing a method of schema parsing according to an exemplary embodiment of the present invention.
0043<figref idref="DRAWINGS">FIG. 20</figref> is a flow chart showing a method of XML parsing and schema validation according to any exemplary embodiment of the present invention.
0044<figref idref="DRAWINGS">FIG. 21</figref> is a flow chart showing a method of generating a SOAP document according to an exemplary embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
0045An exemplary embodiment of the present invention provides an application specific integrated circuit (ASIC), System-on-Chip (SOC), microprocessor, digital signal processor (DSP) or other device for converting messages in SOAP format into an application specific format as well as converting a message in an application specific format into SOAP format. Below, we refer to an embodiment using an integrated circuit (IC) which is intended to include embodiments using ASICs, SOCs, microprocessors, DSPs and/or other devices. The IC may be connected to a computer system either internally or externally. For instance, in one embodiment, this SOAP processing device (SPD) may be connected to the peripheral system bus of an Intel architecture personal computer. In this embodiment, the SPD is operatively connected to other system components over the bus, including a network interface card (NIC) for communicating with a network (such as the Internet or an Intranet), the host processor, host processor chip set, and host memory. Application software and the operating system (which may be Microsoft Windows, Linux or other operating system) are executed on the host processor, but may send and receive messages by making requests to the SPD. The SPD can receive a message in application specific format (such as C++, Java, Windows or, other data formats) from application software or the operating system and generate a message in SOAP format. The SPD can also receive a message in SOAP format from a remote computer system over the network (e.g., through the NIC) and convert the message into an application specific format to be used by application software or the operating system on the local computer system. Driver software may be installed (whether as part of the operating system or separately) to facilitate the routing of messages to and from the SPD. In alternate embodiments, the computer system could be an IBM AIX workstation system, a Sun Solaris system, a Nokia mobile system, a Palm PDA, or any such system capable of communicating in a Web Services environment.
0046<figref idref="DRAWINGS">FIG. 1</figref> shows a SOAP request <b>100</b> that may be processed by the SPD according to an embodiment of the present invention. The SOAP request <b>100</b> includes an envelope element <b>102</b> that encapsulates the message <b>104</b> and provides information about how to process the message <b>104</b>. The SOAP request <b>100</b> may have an optional header. In <figref idref="DRAWINGS">FIG. 1</figref>, a schema <b>106</b> (“http://.../envelope/”) and appropriate encoding style <b>108</b> (“http://.../encoding/”) are specified. The request <b>100</b> also includes a body element <b>110</b> and body entry <b>112</b> which includes the body of the message. In this example, the message <b>104</b> includes a request to retrieve the temperature at a given longitude and latitude. This message is an example of a remote procedure call style SOAP Message to provide an API. In this example, the procedure “GetTemperature” is being called, and the parameters “longitude” and “latitude” are provided. The envelope element <b>102</b>, body element <b>110</b>, procedure and parameters are all delineated by start tags and end tags in brackets (< >). Each end tag includes a forward slash “/” after the first bracket. In order to be properly formed, the tags must comply with the applicable namespace and its grammar must conform to the schema indicated for the message.
0047<figref idref="DRAWINGS">FIG. 2</figref> shows a SOAP response <b>200</b> that may be processed by an SPD according to an embodiment of the present invention. As with <figref idref="DRAWINGS">FIG. 1</figref>, the message <b>204</b> includes an envelope element <b>202</b> and a body element <b>210</b>. The body entry <b>212</b> indicates the response “GetTemperatureResponse” and the return parameter “centigrade” which has a value indicating the requested temperature.
0048The SPD according to embodiments of the present invention includes circuitry to accelerate processing of repetitive operations used to parse, validate and convert messages between SOAP and application specific formats. The SPD includes circuitry, local buffers, registers and pointers to marshall and unmarshall XML in an efficient manner. In addition, the SPD may selectively send operations to driver software for execution. If a particular version of SOAP (or an application specific format) is not supported, the SPD may send the message to the driver software before generating an error message or fault. The driver can easily be updated to support the most recent specifications for any operations that are not supported in the SPD IC.
0049While the exemplary embodiments of the present invention process the SOAP protocol, other protocols may be supported in alternative embodiments of the present invention. In particular, other protocols for encapsulating messages in a markup language may be used. The processing device would include circuitry for efficiently parsing the container (e.g., envelope) for the message, the tags and grammar, and/or the conversion of application specific formats into the markup language and conversely.
0050The SPD according to exemplary embodiments of the invention may interface with different buses and computer system architectures to enable deployment in a wide variety of devices. <figref idref="DRAWINGS">FIG. 3</figref> illustrates a heterogeneous network <b>300</b> using SPDs in various computing devices. As shown in <figref idref="DRAWINGS">FIG. 3</figref>, desktop computers <b>302</b>, mobile systems (such as cell phones) <b>304</b>, mainframes <b>306</b>, workstations <b>308</b>, PDA systems <b>310</b> and other devices may be operatively connected to a network (such as the Internet or an Intranet). These devices may include SPDs <b>312</b> to enable web services to be provided among these devices. They may also communicate with some devices that do not include SPDs (such as the PC Desktop System <b>302</b> and Mobile System <b>304</b> in <figref idref="DRAWINGS">FIG. 3</figref>). These devices would require the use of a SOAP software toolkit for the particular platform, because they do not include an SPD. The SPDs could have different designs in different systems, while they share a common SOAP engine to provide a consistent and efficient SOAP processing capability.
0051<figref idref="DRAWINGS">FIG. 4</figref> is a conceptual representation showing functional interfaces of the SPD <b>402</b>, which do not necessarily have to be mapped to its input/output pins. These functional interfaces correspond to the nature of data that the SPD works with, namely: SOAP format input <b>404</b>, SOAP format output <b>406</b>, native application input <b>408</b> and native application output <b>410</b>.
0052<figref idref="DRAWINGS">FIG. 5</figref> shows a block diagram of two systems, System A <b>502</b> and System B <b>504</b>, that communicate with one another using SPDs. Each system may support multiple applications. In <figref idref="DRAWINGS">FIG. 5</figref>, System A <b>502</b> is supporting applications App <b>1</b> and App <b>2</b> while System B <b>504</b> is hosting App Q and App R. These applications could be running locally or communicating across the internet or an intranet. These applications may or may not be using SOAP for communication purposes. However, the application marked as “Web Services App X” <b>503</b> on System A <b>502</b> and the application marked “Web Services App Y” <b>505</b> on System B <b>504</b> are applications running in the Web Services environment. The communication between these two applications is bi directional and is shown in <figref idref="DRAWINGS">FIG. 5</figref> with the help of labeled arrows.
0053The way the SPDs in this system are designed to work is presented in two parts: (1) converting from application specific format to SOAP; and (2) converting from SOAP to an application specific format.
0054The following describes the conversion from application specific format to SOAP. System A <b>502</b> is a computer system that is intending to communicate with another System B <b>504</b>. Both these systems are equipped with SPDs. The Web Services enabled application “Web Services App X” <b>503</b> on System A <b>502</b> initiates communication with the “Web Services App Y” <b>505</b> on System B <b>504</b> for carrying out a particular task. The operating environment <b>506</b> forwards the application's request to the SPD <b>508</b>, as this is a Web Services invocation. The SPD <b>508</b>, at this point of time, could optionally make a call to any other application running on System A <b>502</b>, before converting the information to the SOAP format. This SOAP message would then be forwarded to the other System B <b>504</b> via a transport protocol such as HTTP.
0055The communication from “Web Services App X” <b>503</b> to “Web Services App Y” <b>505</b> can be traced through a set of arrows labeled from 1 to 12. The Web Services invocation by “Web Services App X” <b>503</b> is shown by arrows <b>1</b> and <b>2</b>. In this case, the invocation is forwarded to SPD <b>508</b> on the hardware layer <b>510</b>. The SPD <b>508</b> optionally could invoke one or more application in the operating environment layer <b>506</b> (shown by arrows <b>3</b> and <b>4</b>). Finally, the SPD <b>508</b> generates SOAP message and then forwards it to the communication layer <b>512</b>, shown by arrows <b>5</b> and <b>6</b>. This SOAP request is then forwarded by the communication layer <b>512</b> using a transport protocol such as HTTP. This is shown by arrow <b>7</b>.
0056The following describes the conversion from SOAP to an application specific format. The “Web Services App Y” <b>505</b> in System B <b>504</b> receives the communication from “Web Services App X” <b>503</b> of System A <b>502</b>. This communication is in SOAP format and therefore the request is forwarded to the SPD <b>514</b> on System B <b>504</b>. The SPD <b>514</b> may optionally communicate with any other application on System B <b>504</b> before converting SOAP message to the application specific format in System B <b>504</b>. Once the message is converted to the format required by “Web Services App Y” <b>505</b>, the information is delivered.
0057The response from “Web Services App Y” <b>505</b> can be traced through a set of arrows labeled from <b>1</b>′ to <b>12</b>′. System B <b>504</b> receives the SOAP request through the communication layer <b>516</b>. This is shown with the help of arrows <b>8</b>, <b>9</b> and <b>10</b>. This request reaches the SPD <b>514</b> on the System B side and the SPD <b>514</b> converts the SOAP message to the format required by the application “Web Services App Y” <b>505</b> and the request is forwarded. This is shown by arrows <b>11</b> and <b>12</b>.
0058In <figref idref="DRAWINGS">FIG. 5</figref>, arrows <b>5</b> to <b>10</b> represent SOAP invocation and it is a SOAP request to System B <b>504</b> in this particular case. Similarly, arrows <b>5</b>′ to <b>10</b>′ depict a SOAP response to System A <b>502</b>. The arrows marked <b>3</b>, <b>4</b> and <b>3</b>′, <b>4</b>′ are “optional calls” that the SPD <b>514</b> might invoke to satisfy certain criteria of ensuring SOAP
0059Processing. The communications represented by arrows <b>1</b>, <b>2</b> & <b>11</b>′, <b>12</b>′ on System A <b>502</b> side and <b>1</b>′, <b>2</b>′ and <b>11</b>, <b>12</b> on the System B <b>504</b> side are the application specific communication between Web Services application and the SPD.
0060<figref idref="DRAWINGS">FIG. 6</figref> illustrates the communications layers used to provide web services according to exemplary embodiments of the present invention: an application tier <b>602</b>, service enabling tier <b>604</b>, service transport tier <b>606</b>, communications/transmission tier <b>608</b>, and hardware tier <b>610</b>. The service enabling tier <b>604</b> is provided in hardware <b>610</b> by the SPD <b>612</b>. Web services applications <b>614</b> (in the application tier) make requests to, and receive responses from, the SPD <b>612</b>. When a request to the SPD <b>612</b> is made, the respective message is converted into a SOAP format by the SPD before it is provided to the transport layer <b>606</b>. When a SOAP message is received from the transport layer <b>606</b>, it is provided to the SPD <b>612</b>. The SPD <b>612</b> generates the application specific format before the message is sent to the web services application <b>614</b>. Driver software in the operating system may direct incoming SOAP messages to the SPD <b>612</b>.
0061<figref idref="DRAWINGS">FIG. 7</figref> is a block diagram of the architecture of an exemplary SPD according to an embodiment of the present invention. The SPD in <figref idref="DRAWINGS">FIG. 7</figref> includes circuitry implementing the following main functional blocks: Application Interface (Input/Output Controller) <b>702</b>, SOAP Parser & Validator <b>704</b>, SOAP Reducer <b>706</b>, Application Code Handler <b>708</b>, SOAP Constructor <b>710</b>, and SOAP Generator <b>712</b>. In addition, the SPD may optionally include embedded memory or have a separate memory associated with the device (such as flash memory, RAM or ROM). The SPD may also access the host memory over the system bus. The functional blocks may be operatively connected to one another over an internal system bus within the IC. This SPD may also include additional functional blocks that may be necessary in aiding the processing of SOAP and/or native input/output. These additional functional blocks may also be suitably connected with the main functional blocks to ensure the functionality of SPD.
0062The SPD may also include certain pre-configured hardware libraries or “IP Cores” related to any communication specific module in its different embodiments. This may be effected by providing Communications Subsystem Generic Core shown in FIGS. <b>8</b> (<b>802</b>) and <b>9</b> (<b>902</b>) and also providing specific interface logic that can be modified/selected based on the target device. The Communications Subsystem Generic Core (<b>802</b>, <b>902</b>) implements interface functionality that is common across system architectures, while the specific interface logic implements the specific interface used in the target device, such as PCI, PCI Express, WAP or other interface. The specific interface logic may be selected when the SPD is designed, so that only a single interface is included in the SPD when it is manufactured. Alternatively, multiple cores could be included and selectively enabled or disabled to operate with different interfaces. In some embodiments, multiple interfaces could be enabled to allow the SPD to operate as a bridge between two different interfaces.
0063<figref idref="DRAWINGS">FIG. 8</figref> shows an example of an embodiment of an Application Interface Unit used in a server with a PCI bus interface <b>804</b>. Here, the SPD is appropriately “plugged” into a computer system running a dedicated application server. In such embodiment, the SPD may interface through an add-on PCI interface card. <figref idref="DRAWINGS">FIG. 9</figref> shows an example of another such embodiment where the SPD is embedded in a PDA capable of communicating on the internet. This is an example of a client-side embodiment of an SPD. Interface circuitry that communicates on WAP enabled circuitry on the PDA's hardware is included in the SPD and operates on top of the Communications Subsystem Generic Core <b>902</b> as shown in <figref idref="DRAWINGS">FIG. 9</figref>.
0064Referring to <figref idref="DRAWINGS">FIG. 7</figref>, the Application Interface (Input/Output Controller) <b>702</b> provides an interface to the system bus for communication with the application on the host system as well as for communication with the Internet. The interface receives messages over the system bus as well as control signals. In particular, the interface may receive operational codes or control bits to indicate the format of the message (SOAP or a specified application specific format) and what action to take (parse/validate only, generate SOAP message, generate application specific message or other action). The operational codes may also include other codes (such as codes for initialization of the SPD and downloading updated rules or valid grammars for the document for new versions of the SOAP specification or for new application specific formats).
0065The SOAP Parser & Validator <b>704</b> parses a SOAP message and determines whether it is properly formed. The SOAP Parser & Validator <b>704</b> checks both the namespaces and its grammar schema for the message. Specific circuitry is provided to perform repetitive functions that are not likely to change from one message to another. For instance, the SPD may include a buffer or local memory for storing the message (or alternatively, the message may be accessed in the host memory). The SOAP Parser & Validator <b>704</b> functional block includes circuitry, local buffers, registers and pointers to marshall and unmarshall XML in an efficient manner. The SPD may not handle exception cases directly. However, the driver software may be designed to handle exceptions and/or direct them to alternate application paths. The SOAP Parser & Validator <b>704</b> will, at a given instant of time, include circuitry to support the most current version of W3C approved SOAP specification. It will also include circuitry for checking the version of SOAP used in the input. The SPD may also include logic to upgrade the current version support for SOAP, wherein the logic for previously supported stable versions is automatically moved to its memory banks. The memory banks may be supported internally within the SPD or externally in the host device. Whenever an input is received which does not match with any of the SOAP versions supported, an appropriate exception is raised to the driver software, as mentioned above.
0066In an exemplary embodiment, flash memory (or other memory) may be provided in the SPD or externally (for example, through an external flash memory card). The memory may contain information regarding the SOAP specification and/or a new version of SOAP to update the SPD. The memory may contain, for example, all configurable elements required for SOAP processing, information for WSDL compliance for versions of the W3C standard and W3C standard compatible versions of SOAP and WSDL. Information may also be provided for multiple versions of SOAP. In each case, the SPD may include circuitry to download the information from the memory (for example, a flash card reader interface) for parsing and validation in accordance with the respective protocol. In this way, multiple versions of SOAP and other protocols may be supported and the SPD may be updated by downloading new versions from memory.
0067The SOAP Reducer <b>706</b> breaks a SOAP message up into its constituent elements for processing. Once the SOAP message has been parsed and validated, the SOAP Reducer <b>706</b> may also discard elements that are no longer needed (such as the envelope element). Only the elements required to generate an application specific format need to be identified and retained.
0068Application Code Handler <b>708</b> sub functional block comes into play after-or-before the data format conversion has been appropriately handled by the sub functional blocks SOAP-Reducer <b>706</b>/SOAP-Generator <b>712</b>/SOAP-Constructor <b>710</b>/SOAP Parser & Validator <b>704</b>. The functionality of this unit is to enable “access to the object” referred to in the SOAP message, from within the SPD. For example, after an incoming SOAP request is received, parsed and validated, the Application Code Handler <b>708</b> sub-functional block takes appropriate steps to ensure that the appropriate target object referred to (in the SOAP message) is accessed correctly and the required operation (again mentioned in the SOAP message) is properly executed on it. It uses the SOAP-related sub units to properly package and send the response to the caller.
0069When the input to the SPD is received from the native application directly, the Application Code Handler <b>708</b> ensures that the message is properly dispatched to the appropriate target service and the response is dispatched properly to the caller application.
0070The SOAP Constructor <b>710</b> includes circuitry to construct SOAP elements from the converted elements received from the Application Code Handler <b>708</b>. The SOAP Generator <b>712</b> uses these elements to generate a properly sequenced and formatted SOAP message. The SOAP message includes an envelope containing the message in SOAP format. The SOAP message is then provided through the Application Interface (Input/Output Controller) <b>702</b>.
0071In the above exemplary architecture, a message being converted from SOAP to an application specific format is received through the Application Interface (Input/Output Controller) <b>702</b>, parsed and validated by the SOAP Parser & Validator <b>704</b>, reduced by the SOAP Reducer <b>706</b>, converted to application specific format by the Application Code Handler <b>708</b> and returned in application specific format through the Application Interface (Input/Output Controller) <b>702</b>. A message being converted from an application specific format to SOAP format is received through the Application Interface (Input/Output Controller) <b>702</b>, converted into SOAP elements by the Application Code Handler <b>708</b>, constructed into SOAP elements by the SOAP Constructor <b>710</b>, generated in final SOAP format by the SOAP Generator <b>712</b> and returned in SOAP format by the Application Interface (Input/Output Controller) <b>702</b>.
0072<figref idref="DRAWINGS">FIG. 10</figref> is a block diagram showing additional details of the architecture presented in <figref idref="DRAWINGS">FIG. 7</figref> according to an embodiment of the present invention. It provides the details of the sub-units of the Application Code Handler <b>708</b>. However, it shows the SOAP-Parser/Validator <b>704</b>, SOAP-Reducer <b>706</b>, SOAP-Generator <b>712</b> and SOAP-Constructor <b>710</b> in the form of a simpler “Marshaller/Unmarshaller Unit” <b>1002</b>. The mapping between the functional blocks in <figref idref="DRAWINGS">FIG. 7</figref> and <figref idref="DRAWINGS">FIG. 10</figref> may be summarized as follows: <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0073"> a. Application Code Handler <b>708</b> in <figref idref="DRAWINGS">FIG. 7</figref> corresponds to SOAP Engine <b>1004</b> in <figref idref="DRAWINGS">FIG. 10</figref>. </li><li id="ul0002-0002" num="0074"> b. The blocks SOAP Parser/Validator <b>704</b>, SOAP Reducer <b>706</b>, SOAP Generator <b>712</b> and SOAP Constructor <b>710</b> in <figref idref="DRAWINGS">FIG. 7</figref> correspond to the Marshaller/Unmarshaller Unit <b>1002</b> of <figref idref="DRAWINGS">FIG. 10</figref>. <br /> The SPD in <figref idref="DRAWINGS">FIG. 10</figref> has the following major circuit blocks: Interface Unit <b>1006</b>, Marshalling/Unmarshalling Unit <b>1002</b> and SOAP Engine <b>1004</b>. The communication between these blocks is represented by arrows in <figref idref="DRAWINGS">FIG. 10</figref>. This communication may be provided by an internal bus that operatively connects the functional blocks of the device. The SPD of <figref idref="DRAWINGS">FIG. 10</figref> operates in two primary modes, namely: SOAP Input Mode and Application Specific Input Mode. The roles and responsibilities of these functional blocks are presented in the following sub sections: </li></ul></li></ul>
0075Interface Unit <b>1006</b>. This unit is responsible for communicating with the operating environment. This unit includes circuitry to perform the following main tasks:
00761. Receiving the request (either SOAP or application specific) for processing;
00772. Dispatching/flagging the availability of processed result;
00783. Making other calls that might be necessary for processing the current input; and
00794. To switch/choose a transport protocol over which SOAP will be implemented.
0080This unit may have its own communication sub system <b>1008</b> for conversing with the Applications and Communication subsystems of the Operating Environment.
0081Marshaller/Unmarshaller <b>1002</b>. “Marshalling” is the terminology used for the process of converting the information from one format to the other format. Likewise, “Unmarshalling” is the terminology used for the reverse process. This unit includes circuitry to construct SOAP/XML documents from the application specific format and vice versa. This unit is designed to accommodate the most recent SOAP specification. It provides appropriate compatibility for various stable earlier versions of SOAP and also a very flexible way of upgrading to a new version. This unit works in close unison with the SOAP engine <b>1004</b>.
0082Over and above the XML format conversion functionality, the Marshaller/UnMarshaller Unit <b>1002</b> may, optionally, provide circuitry and/or software to decode the WSDL document for information on where and how a web service endpoint has to be reached and transacted. This circuitry and/or software may be built to be self-reliant to support WSDL, as the WSDL document is itself an XML document. This circuitry and/or software provides additional functionality to handle the standardized features of WSDL, and may be implemented in the exemplary embodiment without affecting the rest of the architecture.
0083SOAP Engine <b>1004</b>. This unit is the core of the SPD, and the responsibility of this block is to effectuate SOAP handing process. This unit includes circuitry to carry out the following tasks: <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0000"><ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0084"> 1. When the input to the SPD is a SOAP message, it builds up an efficient model of the SOAP message and translates it to an application specific ‘call’ syntax/sequence. This call sequence may be ‘executed’ in the SPD itself completely; or partially in the SPD and partially on the host system. ‘Execution’ of the call sequence results in the actual object access as required by the SOAP-message. Upon forwarding this application specific call, the SOAP engine waits for the response from the application. </li><li id="ul0004-0002" num="0085"> 2. Receives the response from the application, packages it into an appropriate SOAP response and dispatches it through the Interface Unit. </li><li id="ul0004-0003" num="0086"> 3. The SOAP Engine's role in the case of application being the originator of a native request would be to orchestrate the following: <ul id="ul0005" list-style="none"><li id="ul0005-0001" num="0087"> a. package the request in appropriate SOAP request format; </li><li id="ul0005-0002" num="0088"> b. handover the message to the Interface Unit to take the message ‘out of the wire’; </li><li id="ul0005-0003" num="0089"> c. wait for SOAP-RESPONSE from the target of the message; and </li><li id="ul0005-0004" num="0090"> d. Unpack the received message into result-of-operation to the application. </li></ul></li></ul></li></ul>
0091In an exemplary embodiment, the architecture of the SOAP Engine <b>1004</b> may, optionally, provide circuitry and/or software to “pull” the WSDL document by connecting to the appropriate UDDI server. This option may be used when the web service description is not available along with the SPD's input. This may be effected by instructing the Interface Unit to appropriately fetch the document (typically HTTP+SOAP itself) over the network, decoding the WSDL document with the Marshaller/Unmarshaller Unit <b>1002</b> and then proceeding on to the SOAP Processing phase.
0092The SOAP Engine <b>1004</b> carries out the above tasks using other sub-functional blocks. The three primary sub-functional blocks are: “Call Sequencer” <b>1010</b>, “Response Packager and Dispatcher” <b>1012</b> and “Request Packager and Dispatcher” <b>1014</b>. These three sub-functional blocks are described below.
0093Call Sequencer <b>1010</b>. The “Call Sequencer” sub-system includes circuitry to build the call to the application on the local system as well as to build the SOAP call sequence for the remote system.
0094<figref idref="DRAWINGS">FIG. 11</figref> depicts a top-level architecture diagram of the SOAP Engine Design <b>1100</b> showing aspects of the Call Sequencer <b>1102</b>. The Call Sequencer unit of the SOAP Engine may be further broken down into the following functional units: <ul id="ul0006" list-style="none"><li id="ul0006-0001" num="0000"><ul id="ul0007" list-style="none"><li id="ul0007-0001" num="0095"> 1. Method/Param Extractor <b>1104</b></li><li id="ul0007-0002" num="0096"> 2. Application Specific Method-Call Constructor <b>1106</b></li><li id="ul0007-0003" num="0097"> 3. Method Executor and Response Collector <b>1108</b></li></ul></li></ul>
0098Method/Param Extractor <b>1104</b>. This unit ensures that the appropriate SOAP Action (referred to as ‘method’ here) is extracted from the message with all the required parameters for its successful completion. It works in unison with the Marshaller/Unmarshaller Unit <b>1110</b>.
0099Application Specific Method-Call Constructor <b>1106</b>. Depending upon the target device and/or the operating environment, the SPD selects the correct syntax and semantics of the SOAP Action that will be executed. This unit may include a Syntax Database <b>1112</b>, from which the appropriate syntax and semantics may be selected. The Syntax Database <b>1112</b> may be implemented as a lookup table in an exemplary embodiment. The newly constructed method-call is verified using a built-in Semantics Verifier for the chosen target device/environment in the exemplary embodiment, as shown in <figref idref="DRAWINGS">FIG. 11</figref>.
0100Method Executor and Response Collector <b>1108</b>. This unit is responsible for ensuring that the SOAP Action is correctly invoked and executed in the target device/environment. It also ensures that results are captured at the end of the SOAP processing on the target side. The SPD may also include its own internal Virtual Machine <b>1114</b>, as shown in <figref idref="DRAWINGS">FIG. 11</figref>.
0101Syntax Database and Semantics Verifier <b>1112</b>. This unit is responsible for the Syntax/Semantics verification. The implementation of this unit may be a lookup table for a given target device/environment of the SPD in an exemplary embodiment. It may include the instruction set, the calling semantics and any execution-specific arguments or parameters required.
0102Virtual Machine Interface <b>1114</b>. In an exemplary embodiment, the SPD may optionally include a Virtual Machine Interface. This unit initiates execution of a call sequence generated by the SPD into the actual method call to be executed on the target device. This is an optional unit and might serve as an ‘extensible’ design component to interface the SOAP Engine to different type of target devices and environments, where the actual SOAP Action would be executed.
0103Request Packager and Dispatcher <b>1012</b>. This sub-system includes circuitry to build appropriate requests to the target application. When the target application is the local system, this sub-system builds a native call to the local application and dispatches it. When the target application is a remote system, it takes care of building a SOAP-request, sends it across to the interface unit, gets the SOAP-response and dispatches the result to the native caller application.
0104Response Packager & Dispatcher <b>1014</b>. This sub-system includes circuitry to build an appropriate response to the target application. When the target application is the remote application, this sub-system constructs the SOAP message and dispatches it through Marshaller/Unrnarshaller Unit <b>1002</b> and the Interface Unit <b>1006</b>. When the target application is local, the response is directly sent to the waiting application through the Interface Unit <b>1006</b>.
0105In an exemplary embodiment, the SPD might, optionally, contain additional functional sub units such as “Web Service Definition” Processor <b>1202</b> and “Web Service Locator” Handler <b>1204</b>. These functional blocks, if present, interact with the Marshaller/Unmarshaller Unit <b>1206</b> and the SOAP Engine <b>1208</b>. The main communication links for these functional sub units with the Marshaller/Unmarshaller Unit and the SOAP Engine Unit are as shown in <figref idref="DRAWINGS">FIG. 12A</figref>.
0106The “Web Service Definition” processor <b>1202</b> and the “Web Service Locator” handler <b>1204</b> functional sub units include all the necessary logic and circuitry for carrying out the verification/validation of the mark-up documents. <figref idref="DRAWINGS">FIG. 12B</figref> shows some details of the functional sub unit “Web Service Definition” processor <b>1202</b>, for example.
0107The “Web Service Definition” processor <b>1202</b> works closely with the Marshaller/Unmarshaller Unit <b>1206</b> and the SOAP Engine <b>1208</b>. The requirement of the “Web Service Definition” processor <b>1202</b> arises when the WSDL document is available for processing. The source of the WSDL document may be the host system or a retrieval by the “Web Service Locator” handler <b>1204</b>.
0108The “Web Service Definition” processor <b>1202</b> functional sub block has, among the other blocks, three units, namely: <ul id="ul0008" list-style="none"><li id="ul0008-0001" num="0000"><ul id="ul0009" list-style="none"><li id="ul0009-0001" num="0109"> a. Web Service Definition Validator <b>1210</b>, </li><li id="ul0009-0002" num="0110"> b. SOAP Document Verifier <b>1212</b>, and </li><li id="ul0009-0003" num="0111"> c. End point extractor <b>1214</b>. </li></ul></li></ul>
0112Web Service Definition Validator <b>1210</b>: This functional sub unit contains the logic and circuitry to check and verify the retrieved WSDL document for conformance with the appropriate WSDL specification. This could be implemented by using a look up table, for example. This can also be typically accomplished by running the received document against the standard schema for WSDL documents. The functionality of this unit also includes the verification of the method name (of the web service), parameters and the types of the parameters used in that particular web service.
0113The “Web Service Definition” processor <b>1202</b> works in close unison with the Marshaller/Unmarshaller Unit <b>1206</b>, as the functionality typically required here is that of the mark up parsing and validation.
0114The WSDL document includes URL of the web service. This is where an end point is realized, instantiated and available for use. The Web Service Definition processor <b>1202</b> returns this “concrete” end point, extracting from the WSDL document with the help of Marshaller/Unmarshaller Unit <b>1206</b>.
0115The Web Service Locator Handler <b>1204</b>, if present, is responsible for supporting the service locating and discovering activities. The main functionalities of this unit are: <ul id="ul0010" list-style="none"><li id="ul0010-0001" num="0000"><ul id="ul0011" list-style="none"><li id="ul0011-0001" num="0116"> Discovering/Re Discovering Service. </li><li id="ul0011-0002" num="0117"> a. Discovering/Re Discovering end point. </li></ul></li></ul>
0118When the Web Service Locator Handler <b>1204</b> is available, the SPD would provide options to configure the location of a Registry (based on UDDI specification) which can provide the location of the required WSDL document for a given SOAP request. This could typically be a configuration value that is downloaded to the SPD device at its boot time
0119<figref idref="DRAWINGS">FIG. 13</figref> is a flow chart showing the steps for converting a SOAP request to an application specific format in the SPD of <figref idref="DRAWINGS">FIG. 10</figref>. <figref idref="DRAWINGS">FIG. 14</figref> is a flow chart showing the steps for converting an application specific request to a SOAP format in the SPD of <figref idref="DRAWINGS">FIG. 10</figref>.
0120The following is the description of the flowchart shown in <figref idref="DRAWINGS">FIG. 13</figref>. <ul id="ul0012" list-style="none"><li id="ul0012-0001" num="0000"><ul id="ul0013" list-style="none"><li id="ul0013-0001" num="0121"> 1. The Interface Unit <b>1006</b> receives the request <b>1316</b>. This unit evaluates the input to find out whether it is a SOAP input or not. If it is a SOAP input, then this input is forwarded to the Marshaller/Unmarshaller Unit <b>1002</b> as shown at step <b>1306</b>. </li><li id="ul0013-0002" num="0122"> 2. The Marshaller/Unmarshaller Unit <b>1002</b> reduces the SOAP message to an optimized internal model. External references are resolved as shown at steps <b>1308</b> and <b>1310</b>. A call sequence is built if necessary by the Call Sequencer in close unison with the Marshaller/Unmarshaller <b>1002</b> as shown at steps <b>1312</b> and <b>1314</b>. </li><li id="ul0013-0003" num="0123"> 3. Once this SOAP Call Sequence is ready, the call is made to the application as shown at step <b>1316</b>. After the call is made, the SOAP engine waits for the response from the application as shown at step <b>1317</b>. </li><li id="ul0013-0004" num="0124"> 4. The application, in receipt of the call, accepts the data and works on it and produces the native output. The SOAP Engine receives this output from the application, and it is packaged as a SOAP message as shown at steps <b>1318</b> and <b>1320</b> and this is forwarded to the Marshaller/Unmarshaller Unit, which builds up a final SOAP response as shown at step <b>1312</b>. </li><li id="ul0013-0005" num="0125"> 5. The Marshaller/Unmarshaller Unit then hands over the message to the Interface Unit, which will now forward to the target application as shown at step <b>1314</b>. </li></ul></li></ul>
0126The following is the description of the flowchart shown in <figref idref="DRAWINGS">FIG. 14</figref>. <ul id="ul0014" list-style="none"><li id="ul0014-0001" num="0000"><ul id="ul0015" list-style="none"><li id="ul0015-0001" num="0127"> 1. When the application places a request <b>1402</b> for a remote service in an application specific format, the Interface Unit <b>1006</b> passes it on to the SOAP Engine <b>1004</b> as shown at step <b>1404</b>. The SOAP Engine <b>1004</b> uses the Marshaller/Unmarshaller's <b>1002</b> capabilities to build a SOAP REQUEST as shown at step <b>1406</b> and posts it back to the Interface Unit <b>1006</b>, but this time indicating that the request has to be dispatched to the remote service as shown at step <b>1408</b>. </li><li id="ul0015-0002" num="0128"> 2. SOAP Engine waits for the SOAP-RESPONSE as shown at <b>1410</b> and once it is available, converts it to application specific result as shown at <b>1412</b> and passes it on to the waiting application as shown at <b>1414</b>. </li></ul></li></ul>
0129<figref idref="DRAWINGS">FIGS. 15, 16</figref> and <b>17</b> provide a detailed example of the message processing that is carried out in the SPD of <figref idref="DRAWINGS">FIG. 10</figref>. <figref idref="DRAWINGS">FIG. 15</figref> is a block diagram showing communications between two web services applications. In this example, “Stock Enquiry” <b>1502</b> and “Stock Quote” <b>1504</b> applications communicate over the internet using SOAP. As shown in <figref idref="DRAWINGS">FIG. 15</figref>, the “Stock Enquiry” application <b>1502</b> on the left hand side is, in this example, a C++ application. This is a very simple application, which is designed to send a text corresponding to a Stock Symbol to another application called “Stock Quote” <b>1504</b>. This application has a function called getStockQuote( ) which sends the Stock symbol as text. This function waits for the response from the “Stock Quote” application <b>1504</b>. Upon successful execution of the “Stock Quote”, the “Stock Enquiry” application <b>1502</b> receives a decimal number, which corresponds to the current Stock Price of the Stock Symbol. The “Stock Quote” application <b>1504</b> is a Java application. The “Stock Quote” application <b>1504</b> receives text input which represents a Stock Symbol and sends the most current price of that Symbol as a decimal number. These applications are illustrated in <figref idref="DRAWINGS">FIG. 15</figref> in the context of the communications layers used for web services (as described in connection with <figref idref="DRAWINGS">FIG. 6</figref>).
0130The communication between the two applications is shown with the help of two sets of arrows. The first arrow set is associated with the “Stock Enquiry” application. Arrows distinguished by <b>1</b> and <b>1</b>′ is a request by the “Stock Enquiry” application to the “Stock Quote” application. Similarly, Arrows distinguished by <b>2</b> and <b>2</b>′ is the response from the “Stock Quote” application.
0131Below is an explanation of arrows <b>1</b> and <b>2</b> on the “Stock Enquiry” application <b>1502</b> side to explain the how the message changes in each step, within each block of the SPD.
0132Arrow <b>1</b> in <figref idref="DRAWINGS">FIG. 15</figref> corresponds to:
0133C++ to SOAP message conversion
0134Arrow <b>2</b> in <figref idref="DRAWINGS">FIG. 15</figref> corresponds to:
0135SOAP to C++ message conversion
0136The details of C++ to SOAP and SOAP to C++ conversions at the “StockEnquiry” application <b>1502</b> side are described in detail below. It will be understood that the details of Arrow <b>1</b>′ and <b>2</b>′ are similar, so these arrows are not separately described below.
0137<figref idref="DRAWINGS">FIG. 16</figref> is a block diagram showing the architecture of a SOAP processing device <b>1600</b> and the processing flow used to process a C++ request from the “StockEnquiry” application <b>1502</b> shown in <figref idref="DRAWINGS">FIG. 15</figref>. <figref idref="DRAWINGS">FIG. 16</figref> shows the SPD architecture from <figref idref="DRAWINGS">FIG. 10</figref> with additional indicia to show the steps and message formats that are used in the various blocks of the SPD during the processing of the C++ request from the “StockEnquiry” application.
0138<figref idref="DRAWINGS">FIG. 16</figref> shows 8 steps. These steps are highlighted with dashed lines/arrows. A legend is included to show the conversion.
0139The invocation of the getStockQuote( ) happens on the application tier of the first system. This is shown by step <b>1</b>, which is coded as per the legend. The Interface Unit <b>1006</b> of the SPD receives this request, as shown by step <b>2</b>. Here, the SPD checks whether the request is a C++ request or a SOAP request.
0140This request basically carries a “C++ string”, which is the Stock Symbol. In step <b>3</b>, the subsystem may make additional calls, either to the local system or to a remote system. This is to ensure the appropriate choice of the SOAP processing or any other requirement that demands local or remote input. The Communication Subsystem <b>1008</b> of the Interface Unit <b>1006</b> will then dispatch this message to the Marshaller/UnMarshaller Unit <b>1002</b>, which would start building the SOAP message. This is shown as Step <b>4</b>. This is an important step. Here, the conversion of the “C++ String”, which is the Stock Symbol, to the SOAP String takes place. SOAP String is a built-in datatype (for example, as per “XML Schema Part 2: Datatypes” Specification. Ref: http://www.w3c.org/TR/SOAP. Section 5.2). This datatype is then handed over to the SOAP Engine Unit <b>1004</b>.
0141The SOAP Engine Unit <b>1004</b> now starts building the SOAP request. This makes use of the Request Packager and Dispatcher subsystem <b>1014</b> to build the SOAP request. Here, the engine ensures the SOAP request is properly built as per the SOAP specification(s). This unit may also provide a choice of selecting different specifications that can be used to build the SOAP message. Creating appropriate Envelope element(s), Header element, Body element, Header Entries, Body entries, their appropriate sequencing as per the specifications is taken care of by this SOAP Engine Unit <b>1004</b>. This is shown by Step <b>5</b>.
0142In Step <b>6</b>, the SOAP Engine <b>1004</b> ensures that the SOAP request is layered on top of the appropriate transport protocol and forwards the request to the Interface Unit <b>1006</b>.
0143In Step <b>7</b>, the Interface Unit <b>1006</b> examines the SOAP request and then dispatches the same to the remote system.
0144<figref idref="DRAWINGS">FIG. 17</figref> is a block diagram showing the architecture of a SOAP processing device <b>1700</b> and the processing flow used to process a SOAP message being returned to the “StockEnquiry” application shown in <figref idref="DRAWINGS">FIG. 15</figref> according to an embodiment of the present invention. <figref idref="DRAWINGS">FIG. 17</figref> shows the SPD architecture from <figref idref="DRAWINGS">FIG. 10</figref> with additional indicia to show the steps and message formats that are used in the various blocks of the SPD during the processing of the SOAP message.
0145<figref idref="DRAWINGS">FIG. 17</figref> shows 7 steps. These steps are highlighted with dashed lines/arrows. A legend is included to show the conversion. For purposes of this example, we assume that the SOAP request reaches the remote system (System on the right-hand side of <figref idref="DRAWINGS">FIG. 15</figref>) and successfully executes the “Stock Quote” application <b>1504</b> on the remote system. The result now reaches the “Stock Enquiry” System <b>1502</b>, and this is a SOAP response.
0146The SPD receives the message, as in Step <b>1</b>. The Interface Unit <b>1006</b> examines the message for the type of input and determines that this is a SOAP response, as shown in Step <b>2</b>. Again, as shown in Step <b>3</b>, the Interface Unit <b>1006</b> communication subsystem may make additional calls to ensure the appropriate choice of the SOAP processing or any other requirement that demands local or remote input. The SOAP message is then forwarded to the Marshaller/Unmarshaller Unit <b>1002</b>, as shown in Step <b>4</b>.
0147The Marshaller/Unmarshaller Unit <b>1002</b> now converts the SOAP data to the Application requirement type. In this particular example, the SOAP response contains the Stock Price of the Symbol, which is a “float” type. The Marshaller/Unmarshaller Unit <b>1002</b> converts this “SOAP float” type to the “C++ float” type. It is then forwarded to the Response Packager <b>1012</b> subsystem, as shown in Step <b>5</b>.
0148In the next step, the SOAP Engine Unit <b>1004</b> gets the Response Packager <b>1012</b> subsystem to forward the result directly to C++ application through the Interface Unit <b>1006</b>. This is shown in Step <b>6</b>. In Step <b>7</b>, the result is forwarded to the local application and the C++ application would receive the “C++ float” data as the response.
0149The above description also applies to the case where the SPD is used in a “local” setup where the device is used for forward and reverse translations without having to communicate over the internet. This may be the case when messages are sent between applications executing on the same host. In this embodiment, the Interface Unit <b>1006</b> may resolve and arbitrate between the request and response mechanisms targeting the host device itself.
0150Exemplary Business Text Processing (BTP) Embodiment. The following describes a simplified embodiment (referred to as “BTP”) that illustrates selected aspects of the present invention in connection with <figref idref="DRAWINGS">FIGS. 18, 19</figref>, <b>20</b> and <b>21</b>. This embodiment illustrates a specific implementation for SOAP text processing without attachments. This simplified embodiment handles only RPC calls (no messaging), interfaces only with SCI and PCI interfaces and does not process binary operations. However, alternate embodiments may support these features.
0151<figref idref="DRAWINGS">FIG. 18</figref> is a flow chart that illustrates the overall operation of the BTP device. In this embodiment, the device is a dedicated board with a PCI interface that can be plugged into a free PCI slot on a computer system. The board uses an AMCC S5935 PCI controller to facilitate communication between the BTP and the computer system. The top level logic is coded in VHDL on a Spartan 2E FPGA with 300K gates.
0152In this embodiment, the host software first writes the SOAP schema and the SOAP input (for SOAP to Text conversion) into appropriate buffers of the PCI board. It then informs the BTP that input is ready for processing. The BTP waits for indication from the host that data has been made available for it to work on (WAIT_PCI_INTERRUPT <b>1802</b>).
0153The BTP then begins by copying this input into its internal buffers (RAM blocks within the FPGA for easier access and speed). This occurs during the COPY_BUFFERS <b>1804</b> state shown in <figref idref="DRAWINGS">FIG. 18</figref>. This triggers the top-level logic in the BTP (TRIGGER_TOP_LEVEL_LOGIC <b>1806</b>) which decides whether the text-to-soap or the soap-to-text VHDL process should be initiated. This decision is made based on the first few characters of the input itself.
0154<figref idref="DRAWINGS">FIGS. 19, 20</figref> and <b>21</b> show additional information regarding the states SCHEMA_PARSE <b>1808</b>, BTP_XML_INPUT <b>1810</b> and TEXT_TO_SOAP <b>1812</b> respectively. Once the results are available from the individual processes, an internal interrupt is sent back to the top-level-logic (DISPATCH_RESULT <b>1811</b>) and the results are copied to the output buffer of the PCI board (COPY_BUFFER <b>1813</b>). The size of the output is written to the appropriate register of the AMCC controller and a PCI interrupt is provided to the host (SEND_PCI_INTERRUPT <b>1814</b>).
0155The operations of the BTP are brought to a halt by a dedicated interrupt line. As long as the shutdown interrupt is not asserted, the BTP process returns to its default operation or waiting for indication that data is available for processing (WAIT_PCI_INTERRUPT <b>1802</b>).
0156<figref idref="DRAWINGS">FIG. 19</figref> is a state diagram showing the parsing of an XML Schema document in the BTP. The Schema itself is an XML document and is parsed using the XML Parser described in connection with <figref idref="DRAWINGS">FIG. 20</figref>; however, an additional step of collecting and building an internal grammar tree of allowed elements, attributes, and their types as they appear in the XML document is also performed.
0157Processing starts with the Schema being checked for XML versions, and valid W3C headers (PARSE_HEADER <b>1902</b>). The true-body of a schema document begins with its element definitions. As soon as the string ‘element’ (with the appropriate namespace) is seen in the schema (ELEMENT <b>1904</b>), the parsing engine begins to collect its attributes.
0158This occurs during the COLLECT_TYPE <b>1906</b> state. All elements with simple data types are directly processed. Complex data types are handled by a recursive switch to the ELEMENT <b>1904</b> state. Once the complete information about a given element is available, the internal, easily accessible data structure is updated (STORE_ELEMENT <b>1908</b>). All local namespaces encountered in the schema document are collected separately for easier type processing (LOCAL_NAMESPACES <b>1910</b>). This process continues until all of the element schema definitions have been processed. The BTP then parses and validates the XML documents (BTP_XML_INPUT <b>1812</b>) referring to this parsed schema.
0159<figref idref="DRAWINGS">FIG. 20</figref> shows a state diagram for parsing an XML document with schema validation, in accordance with the simplified BTP embodiment. This process is triggered after the successful parsing of the schema document (BTP_XML_INPUT state <b>1810</b>) supplied as one of the inputs to the BTP.
0160The operation begins with validating supported XML versions, ensuring W3C headers and availability of the schema document (PARSE_HEADER <b>2002</b>). In the BTP, the schema is made available locally. In alternative embodiments, the schema may be automatically fetched from the internet or other network as necessary. This is the schema against with the rest of the document will be validated.
0161The body of the XML document is built using a root level element tag (ELEMENT <b>2004</b>), with associated attributes (ATTRIBUTES <b>2006</b>). The internal database of elements and their attributes are quickly referred to see if they are legal (VALID_ELEMENT <b>2008</b> and VALID_ATTRIBUTE <b>2010</b>). The trickier sub-types or containment is checked in a separate state (VALID_TYPE <b>2012</b>). This might need a recursive handling of further elements down the line (HANDLE_SUBTYPES <b>2014</b>, ELEMENT <b>2004</b> transitions). Once the type has been successfully validated, the values arriving in the XML document against that tag are extracted <b>2016</b> and dispatched (DISPATCH_RESULTS <b>1818</b>).
0162<figref idref="DRAWINGS">FIG. 21</figref> shows a state diagram for converting text input to SOAP document in accordance with the simplified BTP embodiment. In this example, a SOAP1.1 envelope is used as the template. Blanks are created in the template using escape sequences and place holder indicators. The application supplies input values that are filled into these blanks and an instance of a SOAP message is generated. The input for translation is supplied as parameters indexed with their corresponding indicators in the template.
0163The operation starts by waiting for availability of input (WAIT_INPUT <b>2102</b> state) from the Interface Unit. The input is a SOAP template and the input values are concatenated and demarcated with the character ‘@’ in a new line of its own. The input is immediately read into internal buffers (COPY_TEMPLATE <b>2106</b> and COPY_INPUT <b>2108</b>).
0164Conversion begins (PARSE_TEMPLATE <b>2110</b>) with copying the template as-is into the output zone, as long as the read in ASCII data is not the input indicator escape sequence (‘\\’). Once the escape sequence is found (IS_ESCAPE <b>2112</b>), the indicator key is collected (end of demarcation is the immediate next occurrence of the same escape sequence). The SOAP input zone is now scanned for this key (FETCH_INPUT_VALUE <b>2114</b>). The value found is transferred to the output zone (COPY_OUTPUT <b>2116</b>). This operation is repeated until the whole of the template zone has been transferred to the output zone with all input indicators correctly replaced with their corresponding value found in the SOAP input zone. Sometimes, an indicator requires that multiple values be read in from the SOAP input zone (IS_MULTI_VALUED <b>2118</b>).
0165As soon as the data is successfully translated to the output zone, an indication is sent to the Interface Unit <b>1811</b> and the state machine returns to a wait state as before, waiting for the next conversion call.
0166While the above embodiments are implemented using ICs or cards, it should be understood that blocks of the SPD may be implemented in software or firmware that is executed by the SPD or a host processor. In some embodiments, a SOAP processor may be implemented as software executing on a host processor. Unlike a conventional SOAP toolkit, however, embodiments of the present invention may accept input from multiple disparate applications using different application specific formats. The SOAP processing software may support multiple application specific formats and thereby provide a common SOAP processor across multiple applications. The SOAP processor may be implemented as object code resident in the host system memory or in a peripheral card or device, which call provide SOAP processing for separate applications without requiring compilation or modification for different types of applications on the host system.
0167While preferred embodiments of the present invention have been shown and described herein, it will be obvious to those skilled in the art that such embodiments are provided by way of example only. Numerous variations, changes, and substitutions will now occur to those skilled in the art without departing from the invention. It should be understood that various alternatives to the embodiments of the invention described herein may be employed in practicing the invention. It is intended that the following claims define the scope of the invention and that methods and structures within the scope of these claims and their equivalents be covered thereby.
Contents7
23 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US7808975B2 | Cited by | United States of America | Search report |
| US2008225827A1 | Cited by | United States of America | Pre-grant |
| US2009327868A1 | Cited by | United States of America | Pre-grant |
| US2008225869A1 | Cited by | United States of America | Pre-grant |
| KR20200012901A | Cited by | Republic of Korea | Search report |
| US2007127440A1 | Cited by | United States of America | Pre-grant |
| US2015127822A1 | Cited by | United States of America | Pre-grant |
| US8971319B2 | Cited by | United States of America | Applicant |
| US2007118844A1 | Cited by | United States of America | Pre-grant |
| US8107469B2 | Cited by | United States of America | Applicant |
| US2009210384A1 | Cited by | United States of America | Pre-grant |
| US9141377B2 | Cited by | United States of America | Search report |
| US2008225828A1 | Cited by | United States of America | Pre-grant |
| US9509628B2 | Cited by | United States of America | Search report |
| US2002107992A1 | Cites | United States of America | Pre-grant |
| US2003023633A1 | Cites | United States of America | Pre-grant |
| US2003041302A1 | Cites | United States of America | Pre-grant |
| US2003105884A1 | Cites | United States of America | Pre-grant |
| US2003137693A1 | Cites | United States of America | Pre-grant |
| US2003177270A1 | Cites | United States of America | Pre-grant |
| US2003200349A1 | Cites | United States of America | Pre-grant |
| US2003204612A1 | Cites | United States of America | Pre-grant |
| US2003212690A1 | Cites | United States of America | Pre-grant |
| US2004054690A1 | Cites | United States of America | Pre-grant |
| US2004221001A1 | Cites | United States of America | Pre-grant |
| US2005044197A1 | Cites | United States of America | Pre-grant |
| US2005050228A1 | Cites | United States of America | Pre-grant |
| US7007094B1 | Cites | United States of America | Pre-grant |
| US7085841B2 | Cites | United States of America | Pre-grant |
| US7136913B2 | Cites | United States of America | Pre-grant |
| US7194733B2 | Cites | United States of America | Pre-grant |
| US7246358B2 | Cites | United States of America | Pre-grant |
| US7392237B2 | Cites | United States of America | Pre-grant |
| US7467391B2 | Cites | United States of America | Pre-grant |
| US7769825B2 | Cites | United States of America | Pre-grant |
3 members in 2 offices
Priority claims4
| Document | Office | Kind | Date |
|---|---|---|---|
| 2005000032 | India | W | |
| 2005000032 | India | W | |
| PCTIN0500032 | – | – | – |
| WO2005IN00032 | – | – | – |
Members3
| Document | Office | Kind | |
|---|---|---|---|
| WO2006080026A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US2008098405A1 | United States of America | A1 | |
| US8156505B2 | United States of America | B2 |
60 transactions on the USPTO file
Allowed after 2 non-final rejections, 1 final rejection and 1 RCE.
- Non-final rejections
- 2
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Email NotificationEML_NTR | EML_NTR | |
| Filing Receipt - CorrectedFLRCPT.C | FLRCPT.C | |
| Supplemental Papers - Oath or DeclarationC600 | C600 | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail PUB other miscellaneous communication to applicantMM327-D | MM327-D | |
| PUB Other miscellaneous communication to applicantM327-D | M327-D | |
| Email NotificationEML_NTR | EML_NTR | |
| Filing Receipt - CorrectedFLRCPT.C | FLRCPT.C | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| New or Additional Drawing FiledC614 | C614 | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Response after Non-Final ActionA... | A... | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Sent to Classification ContractorPGPC | PGPC | |
| Cleared by OIPE CSRL194 | L194 | |
| Waiting LR clearancePGPW | PGPW | |
| Notice of DO/EO Acceptance MailedM903 | M903 | |
| 371 Completion Date371COMP | 371COMP | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Initial Exam Team nnIEXX | IEXX |
9 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Fee payment procedurePAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS |
Numbers
- Publication
- 20080098405
- Publication, DOCDB
- 2008098405
- Publication, EPODOC
- US2008098405
- Application
- 11814900
- Application, DOCDB
- 81490005
- Application, EPODOC
- US20050814900
Titles
- English
- Protocol Processing Device And Method
Classification
- CPC, 3
- H04L69/08
- H04L67/02
- G06F16/258
- IPC, 1
- G06F19 00
- USPC, 2
- 719313000
- 707E17006