Hãy xem tài liệu thực hành tốt nhất trên disposing objects in SharePoint 2010 từ Microsoft, tuy nhiên có opposing views.
Có một vài takeaways chính cho các dự án SharePoint:
- Luôn đoạt SPWeb/SPSite đối tượng của bạn -> bộ nhớ bị rò rỉ
- Make sử dụng SPContext.Current ... khi bạn chắc chắn mã của bạn đang chạy trong một bối cảnh SharePoint
- Unit Tests nghĩa là không có Sharepoint bối cảnh
- tiện ích bên ngoài có nghĩa là không có bối cảnh Sharepoint
- Powershell nghĩa là không có ngữ cảnh SharePoint (ví dụ: kích hoạt một tính năng với tính năng nhận có thể thất bại)
- Đừng vứt bỏ SPContext.Current ... nhưng tạo đối tượng của riêng bạn (một lần nữa
using
)
Bạn có thể có problems with consistency với nhiều SP của bạn .. đối tượng .
Cuối cùng, SPSite site = SPContext.Current.Web.Site;
là tốt trong một số trường hợp, nhưng bạn không có quyền kiểm soát đối tượng site
này - đó có thể là vấn đề. Nếu bạn đi theo số new SPSite(...)
, bạn sẽ luôn có SPSite
và không phải thứ gì đó mà SharePoint đã tạo và quản lý cho bạn.
Cá nhân tôi hầu như luôn đi theo cấu trúc using
để tất cả các đối tượng được xử lý đúng cách sau đó. Hoặc tôi sử dụng SPContext.Current.Web
mà không cần xử lý.
Nguồn
2011-11-08 17:24:51
Hãy nhìn vào một câu hỏi tương tự từ tôi: http://sharepoint.stackexchange.com/questions/20192/using-spcontext-current-or-using-static-url –
Cảm ơn bạn đã liên kết. Tôi đã cập nhật câu hỏi của mình. –
Trên các dự án lớn hơn, đôi khi bạn có các tiện ích bên ngoài không chạy trong SharePoint. Một ví dụ khác là các bài kiểm tra đơn vị cũng không chạy trong SharePoint. Nếu bạn chỉ đơn giản là phát triển webparts trực quan và không kiểm tra đơn vị - mã của bạn chạy trong SP. –