Solution Platform
개발 시 유의 사항(코딩)
하얀전쟁^^
2009. 7. 23. 23:18
Best Practices
다음 과 같이 소스는 메모리를 많이 사용한다고 한다.
그리고 IIS 에서의 리사이클 주기를 짧게 하여 성능 상의 문제를 일으킨다고 한다.
다음 과 같이 소스는 메모리를 많이 사용한다고 한다.
그리고 IIS 에서의 리사이클 주기를 짧게 하여 성능 상의 문제를 일으킨다고 한다.
public void GetNavigationInfo() { SPWeb oSPWeb = SPContext.Web; // .. Get information oSPWeb for navigation .. foreach(SPWeb oSubWeb in oSPWeb.GetSubWebsForCurrentUser()) { // .. Add subweb information for navigation .. } }아래와 같이 Dispose 를 권장한다.
public void GetNavigationInfo() { SPWeb oSPWeb = SPContext.Web; foreach(SPWeb oSubWeb in oSPWeb.GetSubWebsForCurrentUser())) { // .. Add subweb information for navigation .. oSubWeb.Dispose(); } }캐쉬 데이타를 사용할 경우에는 Lock 을 하자 아래의 소스 처럼 캐쉬 데이터를 사용할 경우 동 시간대의 접속 자들은 같은 오브젝트에 같은 데이터를 업데이트를 하려고 한다. 이 경우 캐쉬데이타의 깨짐 현상이 일어 날수 있다고 한다.
public void CacheData() { SPListItemCollection oListItems; oListItems = (SPListItemCollection)Cache["ListItemCacheName"]; if(oListItems == null) { oListItems = DoQueryToReturnItems(); Cache.Add("ListItemCacheName", oListItems, ..); } }이 현상을 방지 하기 위해서 다음과 같은 locking 처리가 필요하다.
public void CacheData() { DataTable oDataTable; SPListItemCollection oListItems; lock(this) { oDataTable = (DataTable)Cache["ListItemCacheName"]; if(oDataTable == null) { oListItems = DoQueryToReturnItems(); oDataTable = oListItems.GetDataTable(); Cache.Add("ListItemCacheName", oDataTable, ..); } } }