If a lot depends on what your service does. Usually you choose a singleton if there is some kind of general condition, and such synchronization around this state can lead to the appearance of bottle necks that will affect scalability. If there is no general state, you can still go to singleton, but you must be careful that at some point in time you do not enter any general state (or if you do this, you actually block it).
If you return a new instance of the service each time, then you do not need to worry about this, and this may lead to better scalability / flexibility in the future, although returning a new instance may also lead to scalability if this instance has a resouces deficit (for example, db- connections).
So, I think the real answer is "it depends." If you look at how the infrastructure handles this, it’s usually some kind of intermediate solution, such as maintaining a service pool (for example, db connection pools) or a “per session” Wcf model.
source share