The routing service uses contracts that define the shape of the channels used to receive and send messages, and therefore the shape of the input channel must match the shape of the output channel.
So, if you are routing to endpoints using the request-response channel form, then you should use a compatible contract on incoming endpoints, such as IRequestReplyRouter.
This means that if destination endpoints use contracts with multiple communication patterns (for example, mixing one-way and two-way operations), you cannot create one service endpoint that can receive and forward messages to all of them. A workaround is to use a duplex contract in a routing service such as IDuplexSessionRouter.
Literature:
http://msdn.microsoft.com/en-us/magazine/cc546553.aspx
http://msdn.microsoft.com/en-us/library/ee517422.aspx
source share