Concurrency is tied to how many threads access the service instance (InstanceContext).
In percall instancing, each call creates a new instance of the service and its associated resources, as in ASP.Net. When the call is completed, this instance is invalid. Moreover, this instance will not be available with any other thread, even from the same session.
So, the reason for the statement is "in PerCall instancing, concurrency doesn't matter."
For your scenario , in Duplex MEP, let's say that A is a client and B is a service.
When A calls B, an instance of the service is created. In a duplex MEP, the response must be through another channel (callback channel), and execution must go to another instance (the client instance that you installed during the creation of the proxy) to execute. Upon completion of this action, he must return to the original instance of the service and continue from where he left.
So, in order for the duplex MEP to be successful, it must keep the original service instance alive and re-injectable when it moves to the callback channel to execute. With percall increments this is not possible.
In this case, the duplex channel searches for Reentrant / Multiple concurrency and PerSession InstanceContextMode
Also note that when you do not specify an instance context mode, the default is PerSession.
source share