Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Although it’s a longtime ago, I want to follow up with the promised explanations for Issue 8:
Prolog: WS BP 1.0 prohibits the usage of rpc-encoded but explicitly allows rpc-literal. But what is rpc-literal anyway?
Rpc stands for remote procedure call. If you want to apply this technology in loosely coupled environments, you’ll get a problem: The caller must know the exact signature and method name of the target implementation; otherwise it won’t be able to call it. Although this is definitely not what we’re looking for within a Web Service enabled environment, nobody prevents you from doing so:
Rpc-literal Web Services use the rpc style of message assembling but support the literal way of describing the types that are passed by a procedure: In this case, literal means that there exists a schema for every parameter type but not for the message body itself. The message body gets constructed based on some simple rules:
- The procedure (or method) name defines the name of the message
- The different part names within <wsdl:message> are used for the argument names
Let’s have a look at the four different artifacts, the CLR signature, the wsdl message, the binding and the soap message:
A typical rpc signature for an addition request looks the following (note, there is no message):
int Add (int a, int b)
The corresponding wsdl message is named after its method and adds a part for each argument:
<message name=“Add”>
<part name=“a” type=“xsd:int”>
<part name=“b” type=“xsd:int”>
</message>
Within the wsdl bindings, the style is set to rpc and the soap body namespace must be defined (the namespace will be used for the top-level message elements):
<wsdl:binding name=“…" type="tns:…">
<soap:binding style=“rpc“ …>
<wsdl:operation name=“Add">
<wsdl:input name=“Add">
<soap:body namespace="operationNS" use="literal"/>
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
The soap message gets assembled by using the operation name and the corresponding message parts:
<soap:body>
<x:Add xmlns:x=“operationNS”>
<a>200</a>
<b>400</b>
</x:Add>
</soap:body>
The next post in this answer series is going to discuss how you can consume rpc-literal Web Services using .NET. Stay tuned…
Comments
- Anonymous
November 21, 2007
PingBack from http://manoftoday.wordpress.com/2007/11/13/network/ - Anonymous
March 28, 2008
PingBack from http://countyanimalshelterblog.info/beat-schweglers-2-cents-what-is-rpc-literal-anyway/