I want to discuss aboue Asynchronous & Synchronous when it comes to an interface design.
After working a while with PI, I come to a "Use asynchronous when you can, use synchronous when you have to" mind.
I mean it's better to have asynchronous interfaces if the business proces allows it, but for interfaces that require realtime response, we go for synchronous.
This is because asynchronous interfaces do not depend on the connection and the availability of the receiver. For the sender, it will be like fire and forget. It sends the data and it can assume the data will be received by the receiver successfuly. So, from the sender, receiver and developer point of view, asynchronous is better for interfaces that do not require fast response as the message could be monitored in PI.
Synchronous on the other hand has the advantage of being able to give response in real-time but it has a dependency to the network and receiver availibility. If the message fails, the sender would have to re-send the data again which might require human interaction. I'm feeling to use synchronous interfaces only when I should for realtime interfaces.
Would there be any other considerations regarding to asynchronous & synchronous?
I'd really like to hear from you.