DI terminology
Transient objects are always different. Even when invoked from the controller and from the middleware
Scoped objects are the same for a given request but differ across each new request.
Singletone objects are the same for every request.