Даже если вы разрешаете только один объектный граф (что имеет место, например, в настольном приложении), Transient все равно отличается от Singleton, потому что у вас может быть абстракция, которая используется несколькими потребителями (например, интерфейс ILog).Если время жизни - Временное, каждый потребитель получит свой собственный экземпляр, но если время жизни - Синглтон, все потребители будут использовать один и тот же экземпляр.
Совместное использование экземпляра часто предпочтительнее, поскольку использует меньше ресурсов, но может иметьпроблемы с безопасностью потоков и т. д., поэтому вам всегда нужно учитывать компромиссы.
Все это обсуждение только расширяется, когда вы рассматриваете приложения на основе запросов, такие как веб-сайты или службы.Для таких приложений синглтоны могут совместно использоваться многими различными запросами, но должен быть поточно-ориентированным, тогда как временные объекты более безопасны, но менее эффективны.
В некоторых контейнерах навеб-запрос образ жизни, чтобы обеспечить среднее решение для тех случаев, но те, которые не часто имеют иерархический или контекстный образ жизни, который можно использовать для решения того же сценария, так как вы можете создатьобласть контейнера для каждого HTTP-запроса.