2009-08-10 41 views
6

Có lý do nào để chuyển từ phạm vi mặc định (tạm thời không?) Sang một thứ khác, ngoài việc cần phải kiểm soát phạm vi vì các lý do chức năng (ví dụ: Singleton)?Cấu trúc Sơ đồ Phạm vi/Vòng đời Hướng dẫn?

Nếu tôi gắn bó với phạm vi mặc định, mỗi phiên bản mặc định của mọi loại plugin sẽ được tạo hiệu quả trên mỗi yêu cầu (giả sử ứng dụng web), có đúng không? Điều này có ảnh hưởng đến hiệu suất đáng chú ý không?

Tôi đã xem xét việc sử dụng phạm vi phiên Http để giới hạn này cho một người dùng đăng nhập. Tuy nhiên, điều đó sẽ dẫn đến (ít nhất) một phiên bản của từng loại plugin được lưu trữ trong bộ nhớ cho từng người dùng. Sử dụng phạm vi mặc định, những trường hợp này sẽ chỉ được giữ trong bộ nhớ trong khi yêu cầu trang đang được xử lý. Tôi không chắc cái nào là thích hợp hơn.

Nếu bạn sử dụng StructureMap, bạn thường định cấu hình phạm vi cho từng loại plugin của mình như thế nào?

Thanks cho bất kỳ cái nhìn sâu sắc,

Phil

Trả lời

7

tôi rời khỏi phạm vi mặc định tại chỗ. Điều này có nghĩa rằng mỗi một yêu cầu (hoặc bởi mỗi người dùng hoặc bởi nhiều người dùng) tôi có một thể hiện của một đối tượng trong tay. Điều này có nghĩa là một yêu cầu mới được thực hiện mỗi lần. Giữ nó trong phiên là một cái gì đó mà tôi muốn có kiểm soát cụ thể hơn. Vì lý do này, tôi có thể ném một lớp bộ nhớ đệm lên lớp dịch vụ và gắn đối tượng StructureMap trả về. Sau đó tôi có thể truy vấn bộ nhớ cache cho đối tượng đã được khởi tạo (đã được tuần tự hóa) và chọn nơi để lấy các đối tượng của tôi.

Tôi sẽ làm điều tương tự cho cấu hình Singleton nơi tôi sẽ sử dụng StructureMap để lấy đối tượng thực tế ... nhưng khi nó quay trở lại đối tượng lần thứ 2, đối tượng sẽ tự tay tạo một cá thể cho chính nó (trong thuật ngữ singleton đó là). Điều này sử dụng StructureMap cho sức mạnh của nó ... nhưng không cung cấp cho nó nhiều quyền lực hơn là cần thiết.

+0

Cảm ơn phản hồi chu đáo của bạn. Việc bạn nhận đơn giản là thú vị và tôi cũng sẽ xem xét điều đó. –

Các vấn đề liên quan