Question - What are the general guidelines for choosing an instancing mode?
Answer -
In general, for scalability and throughput prefer to use PerCall services where ever possible. Use PerSession services only when necessary, but keep in mind the overhead of sessions and session timeouts. Try to avoid singletons almost always. Singleton services could be useful on client machines for shared functionality. These are only general guidelines, and your selection depends on what you are trying to achieve.