Dear Sandesha developers, Thanks for making Sandesha2 a reality and providing WS-RM and WS-RX implementations for the WS community.
This is my first post in the sandesha mail list. I have a question regarding the usage of WS-RM. To me, WS-RM is amazingly similar to TCP protocol in TCP/IP model. But the difference is that the WS-RM (RM layer) is a sub-layer below Application layer in TCP/IP model. TCP itself is a transport layer protocol. *TCP protocol* ensures that all the *data packets* which belongs to the *same application message* are transmitted to the destination with the insurance that the delivery is in-order, once-and-only-once. The *WS-RM* ensures that all *SOAP requests* which belongs to the *same sequence* are sent to the WS destination with the insurance that the delivery is once-and-only-once and optionally in-order. I have three scenarios: 1) My WS client invokes the WS using HTTP/SOAP, and the underlying transport is TCP. Every invocation is independent of each other. In this case, do I still need WS-RM? >From my understanding, WS-RM is totally unnecessary in this scenario because the TCP itself is reliable, so the single invocation (SOAP request) can be reliably sent to the destination. Is my understanding correct? 2) Again, in this scenario, the transport is TCP. In one session (or one sequence), there are three request-response message exchanges. The second request will not be sent out if the first response has not arrived. If the first request succeeds but the second request fails, there is no transaction issue (rollback) required. The application has the choice to either retry the second request or just abort the response of the first request. The web service provider will not know whether the client will retry the second web service. In this scenario, is WS-RM still necessary? If we use WS-RM, will the three message exchanges in one sequence? >From my understanding, we are not able to apply WS-RM in this request-response message exchanges. The messages in a sequence should be asynchronous request message, or non-blocking invocation. 3) Again, in this scenario, the transport is TCP. In this scenario, both application source and application destination may be web service provider and consumer. In the first message exchange, the application source sends one request to the destination, only requiring an acknowledgment of receipt of the request. The actual business response is generated after the destination processes the request. The business response is sent back to the application source through another WS invocation. The application source exposes one web service to receives response from application destination. The processing time incurred at the application destination may be quite long, say 5 minutes. In this scenario, do I need to use WS-RM? How can I use WS-RM? Thanks for reading my long questions. I hope I have made my questions clear. Regards, Andrew
