But it has a few overheads which literally kills its advantages specially in certain distributed and enterprise communication models.
- It requires both parties to be online, it requires both parties to under go connection overhead.
- It requires both parties to maintain session of communication.
- To maintain session, both parties have to consume CPU resources for whole of 'live' time.
- Fault detection gets difficult as it is difficult to detect where the fault occured, is it at A, between A and B request communication, at B, or between B and A response communication.
- Fault Tolerance can be achieved by incarnating multiple service entities, but it requires to maintain their sessions also, it also requires have pools of them, and all this assuming it is stateless. If the service is statefull it gets more difficult.
- As seen from Fault Tolerance and session points, it is not a scalable approach.