캐시 객체를 사용하여 XMLDocument 객체를 보유하고있었습니다. 는 구체적으로, 코드는 다음과 같습니다거의 읽기 전용 객체가있는 ASP.NET 스레드 안전 캐시 객체 사용
XmlDocument xDoc = new XmlDocument();
if (HttpRuntime.Cache.Get("AuthorizationXML") == null)
{
string file = GetAuthorizationXmlFilePath();
xDoc.Load(file);
HttpRuntime.Cache.Insert("AuthorizationXML", xDoc, new CacheDependency(file));
}
else
{
xDoc = (XmlDocument)HttpRuntime.Cache.Get("AuthorizationXML");
}
return xDoc;
어쨌든, 내 팀 리더가 캐시 개체는 스레드로부터 안전하기 때문에, 그것은 낭비가 거의 읽기 전용 목적을 위해 사용하는 것이며,을 구현하기 위해 더 좋을 것이라고 제안 객체를 응용 프로그램 객체의 싱글 톤 프리 스레드 객체로 캐시합니다. 이 문장은 합법적이라고 보입니까? 스레드 안전이란 캐시 개체가 잠금으로 구현된다는 의미입니다. 시스템이 느려 집니까? 캐시에서 읽는 중일 때 잠금 기능이 적용됩니까? 의견을 보내 주시면 감사하겠습니다.
코드에 경쟁 조건이 있습니다. 처음 체크했을 때 캐쉬 항목이 null이 아니므로 'else' 절로 이동하면 항목이 캐시에서 사라질 수 있습니다. – LukeH
고마워요.하지만 Null로 변경하려고하지 않을 것입니다. 한 번만로드되고 null로 설정된 코드가 없으므로 그냥 읽어야합니다. – Tomer