Over het algemeen wil je in een web-app dat de status zo veel mogelijk binnen het bereik van het verzoek ligt.
Alleen in het geval van optimalisaties op een zeer laag niveau, is de kans groot dat u ooit een geval tegenkomt waarin het gepast is om singleton-objecten te maken (en zelfs dan is de kans groot dat u dergelijke caching / sharing-logica naar een andere klasse trekt die wordt binnengehaald als een afhankelijkheid van uw andere [request scope]-objecten en maak dat eentons bereik). Onthoud dat een singleton in de context van een web-app meerdere threads betekent die dezelfde objecten gebruiken. Dit is zelden goed nieuws.
Op dezelfde basis is het tijdelijke bereik de meest eenvoudige standaard (en daarom maakt Ninject 2 het zo) - het verzoekbereik zou alleen in de vergelijking moeten komen wanneer iets moet worden gedeeld om prestatieredenen, enz. (of omdat dat gewoon de context is van het delen [zoals vermeld in het andere antwoord]).