Continuation Server is different from the normal servers in a way that they invert the control from the client to the server. In a typical web application server scenario, the client request is processed by the server and responds back to the client. And the focus is only about that request and response and the application as such do not maintain the state of the application at any point of time. This can be best realized when most of the times we struggle with the back button issue. The application on the server cannot differentiate between a browser’s back button and the one that comes from a link on the page. If not handled through a mechanism this could potentially be catastrophic. For example in my online banking site, there is a feature to transfer the funds to another account. On the screen where I enter the details I find a note like the one below.
In case you are re-trying, first please click here to check the status of your previous payment.
What it really means is once a transaction is submitted and say due to some reason the transaction was successful but the response did not reach the browser (say a blank page is displayed and the browser says it’s done). If you clicked on the refresh button, the same transaction might get invoked again and you end up transferring the amount twice. That is why the above statement is a caution to the users to check if the transaction happened and you are not attempting it again because of incomplete response.
The issue is because the server’s do not store the state of an application but only the state of a request. Through the help of frameworks and session management this could be attacked but would require considerable effort and would increase the complexity of the application. Continuation servers are the ones which stores the state of the application in entire. It is something like every client has its own server and full attention is given to the client. So in the above example when the browser’s back button is pressed the server restores back the state of the application to the previous state which would involve rolling back the transaction. Though the concept is still at an early stage with not so many implementations this could pick up down the line. The continuation server tutorial in BrainBell.com site explains the concept in detail.