O'Reilly logo

Programming WCF Services by Juval Lowy

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Instance Management

The contract session mode and the service instance mode have a paramount effect on the behavior of the queued calls, the way the calls are played back to the service, and implications on the overall program workflow and allowed assumptions.

Per-Call Queued Services

In the case of a per-call service, the client has no way of knowing that the calls will eventually end up played to a queued per-call service. All that the client sees is the session mode on the contract. If the SessionMode on the contract is either SessionMode.Allowed or SessionMode.NotAllowed, the queued call (over the NetMsmqBinding) is considered to be sessionless. All calls to such sessionless endpoints are placed in separate MSMQ messages, where each call on the proxy yields a single separate MSMQ message.

Nontransactional clients

When a client without an ambient transaction calls a sessionless queued endpoint (as in Example 9-11), the MSMQ messages generated for each call are posted to the queue immediately after each call. If the client has an exception, the messages posted up to that point are not rejected and are delivered to the service.

Example 9-11. Nontransactional client of a sessionless queued endpoint

using(TransactionScope scope =
                             new TransactionScope(TransactionScopeOption.Suppress))
{
   MyContractClient proxy = new MyContractClient( );

   proxy.MyMethod( );//Message posts to queue here
   proxy.MyMethod( );//Message posts to queue here

   proxy.Close( );
}

Transactional clients

With a transactional ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required