2011-06-14 7 views
2

우리는 DAL이 많은 여러 프로젝트를 운영하고 있습니다. C# 클래스에 반영된 고객, 판매 업체, 제공 업체와 같은 많은 쉐어 포인트 목록. 우리는 각 객체가 추상적 인 마더 클래스를 통해 IDisposable을 구현하도록합니다.전체 응용 프로그램 수명주기 동안 동일한 SPWeb 및 SPSite를 유지 하시겠습니까?

public Customer(int spListItemID):base(LIST_URL) 
    { 
     try 
     { 
      spli = Liste.GetItemById(spListItemID); 
     } 
     catch(ArgumentException) 
     { 
      spli = null; 
     } 
    } 

과의 : 그리고 우리가 개체의 인스턴스마다 호출 코드가 spweb 처분하고 객체를 인스턴스화하는 데 사용 spsite customer.Dispose()를 호출 할 필요가 예를 들어 목록에서 고객을 얻을 수 있습니다 생성자 기본 클래스에는 spsite 및 spweb 전역 변수가 인스턴스화되며 dispose 함수도 있습니다.

나는 전체 셰어 포인트 응용 프로그램에 대해 동일한 spweb 및 spsite를 사용하는 것이 어떻습니까? 우리의 모든 프로젝트는 싱글 톤 패턴을 따라 spsite와 spweb을 인스턴스화 할 수있는 프로젝트를 알고 있습니다. 그리고 우리는이 spsite와 spweb를 "영원히"사용할 것입니다. 우리는 그것들을 닫지 않고 모든 객체에 대해 동일한 것을 사용하지 않을 것입니다. 객체를 인스턴스화 할 때마다 개폐 프로세스를 저장합니다!

미친 아이디어라고 생각하십니까? 나는 아주 오랫동안 동일한 spweb을 사용한다는 것을 의미한다. 즉, 서버가 켜져있는 시간을 말하는 것이다. 그것은 그렇게 나쁜 생각인가? 각 인스턴스에 대해 하루에 수천 회의 폐회 spweb를 여는 대신에? spweb에 제한된 생존 기간이 있습니까? (그것에 대한 많은 개발과 함께 큰 셰어 포인트 응용 프로그램입니다)

답변

3

가장 큰 위험은 SPWeb이 쓸모 없게 될 수 있다는 것입니다. 다중 사용자 환경에서 첫 번째 왕복 (예 : 웹 제목)에서 가져온 SPWeb 속성은 다른 사용자가 변경할 수 있지만 새로 인스턴스화하지 않으므로 이전 값을 계속 유지합니다. 여러 SPWeb 및 SPSite 인스턴스를 적절히 처분 할 수 있도록 만들면됩니다.

+0

감사합니다. 제목, 설명 및 웹 사이트의 기타 정보 (기본 정보)를 제외하고는 변경 될 수 없거나 새로 고침해야 할 항목이 있거나 다음과 같은 이유로 필연적으로 충돌 할 수있는 항목이 있습니까? 다중 사용자 환경? 그들은 이벤트 리시버, 타이머 작업, 워크 플로우 등을 추가, 삭제, 편집하고 있습니다. : – KitAndKat

+0

어쨌든 당신 말이 맞을 것입니다. CurrentUser와 같이 충돌 할 수있는 많은 속성이 있습니다. 예를 들어, 어떤 경우에 현재 사용자가 될 것인가 ..., 수업은 너무 거대하고 복잡합니다 (반사경이 보여줍니다!), 여러 달 동안 동시에 여러 사람이 사용하는 것이 불가피하게 충돌합니다 ... – KitAndKat