singleton vs transient vs scoped
SINGLETON: Same object for every controller and request.
SCOPED: Same within a request but different across different requests.
TRANSIENT: Always different. A new instance is created on every controller and every service (can be resource hungry).