Nói chung trong một ứng dụng web, bạn muốn trạng thái trở thành phạm vi yêu cầu càng nhiều càng tốt.
Chỉ trong trường hợp tối ưu ở mức rất thấp, bạn mới có khả năng gặp phải trường hợp thích hợp để tạo các đối tượng singleton (và rất có thể sau đó bạn sẽ kéo logic chia sẻ / bộ nhớ đệm đó ra vào một lớp khác được kéo vào như một sự phụ thuộc vào các đối tượng [phạm vi yêu cầu] khác của bạn và làm cho điều đó phạm vi singleton). Hãy nhớ rằng một singleton trong ngữ cảnh của một ứng dụng web có nghĩa là nhiều chuỗi sử dụng các đối tượng giống nhau. Đây hiếm khi là tin tốt.
Trên cơ sở đó, phạm vi tạm thời là mặc định đơn giản nhất (và đó là lý do tại sao Ninject 2 làm như vậy) - phạm vi yêu cầu chỉ nên đi vào phương trình khi một thứ gì đó cần được chia sẻ vì lý do hiệu suất, v.v. (hoặc vì đó chỉ đơn giản là ngữ cảnh chia sẻ [như đã đề cập trong câu trả lời khác]).