Prefer the per-call instance mode.
Avoid a sessionful service.
If selecting SessionMode.Required on the contract, always explicitly set service instancing to InstanceContextMode.PerSession.
If selecting SessionMode.NotAllowed on the contract, always configure the service instancing to InstanceContextMode.PerCall.
Do not mix sessionful contracts and per-call contracts on the same service.
Avoid a singleton unless you have a natural singleton.
Use ordered delivery with a sessionful service.
Avoid instance deactivation with a sessionful service.
Avoid demarcating operations.