When shall we go for wsDualHttpBinding?
Your service need to perform lot of operation after getting the information from the client side, which consume more time to return result back to the client.
Normally time consuming operation in server side will block the client to perform other operation. So ‘wsDualHttpBinding’ will be ideal solution for this kind of problem.
Suppose if your client not depend on the result produce by the service at that time we can go for ‘wsDualHttpBinding’ .
If you need to implement callback between client and service at that time we can go for ‘wsDualHttpBinding’.
Because of some operation (or) result taking place in server side must not affect the client side access or other request the ideal choice is ‘wsDualHttpBinding’
wsDualHttpBinding is binding which sends the request in one http channel and response will be sent back to the client in another http channel
If you are using ‘dualHttpBinding’ you need to create two interface one interface is to get the request from the client and one more is send the response back to the client as callback
The below mentioned interface is to send the response back to the client and the ‘OperationalContract’ used to send the response back to the client must be decorated with the property ‘IsOneWay=true’ as shown below.
Another Interface mentioned below is to get the request from the client, this interface must also be decorated with the property ‘IsOneWay=true’ inside the ‘OperationalContract’ attribute as mentioned below. Also we need to refer using which interface (or) channel we are going to send the response back to the client. We already declare the callback interface now need to establish relationship with the ‘ServiceContract’ as mentioned below.
In the above code we are mentioned ‘INotificationServiceCalback’ as the callback interface by using ‘CallbackContract’ property of ServiceContract.
In the web.Config we need to specify ‘wsDualHttpBinding’ in the binding property.
The Implementation of service contract
You can find the Code sample here