Imagine you have some exchange of data between two endpoints (webservices or let's call URL). Data can travel in any way (Xml, Json, GET, POST) it doesn't matter.
I've got the source code of the first endpoint (I drawed it on the left). The second one is from a third party and will call back my infrastructure on a third endpoint (which is also part of my infrastructure).
I would like to implement some session / state to relate the first call to their callback. And I would also like to add distributed logging, support for problem solving in a production environment, configuration, performance monitoring, a dashboard, and so on.
What kind of consideration should I do in facing the design of this kind of architecture?
Let me clarify with an example (which answers to @SparKotॐ comment)
I should log the first call and understand if the third party is calling me back or not.
I can do this only if my "3rd party" caller Class (the white box higher on the lef) and the Class called from the "3rd party" (the white box lower on the lef) shares some logging infrastructure. How would you implement this?
- Share a database
- Share a message queue
- Share a WCF service
- Share some AppFabric cache
- What else?
Which consideration would you make about this tracking service? Should both my class being hosted on the same server? What kind of question would drive you to design the architecture which transform two simple WebClient.Open request into something which is more traceable and fault tolerant?