웹 서비스의 정적 변수가 서버에서 실행중인 모든 웹 서비스 호출간에 공유됩니까? 내 경우ASP.NET 웹 서비스의 정적 필드
나는 서버 전체 동기화 잠금을 원하고, 나는 하나의
private static Object syncHandle = new Object();
으로 그 작업을 수행 할 수 믿습니다 것이 맞습니까?
웹 서비스의 정적 변수가 서버에서 실행중인 모든 웹 서비스 호출간에 공유됩니까? 내 경우ASP.NET 웹 서비스의 정적 필드
나는 서버 전체 동기화 잠금을 원하고, 나는 하나의
private static Object syncHandle = new Object();
으로 그 작업을 수행 할 수 믿습니다 것이 맞습니까?
예, 모두 AppDomain마다 공유되므로 일반적으로 사용해서는 안됩니다.
일반적으로 제대로 사용되지 않을 것이므로 일반적으로 사용해서는 안됩니다. 또한 HttpContext.Cache 또는 세션 상태와 같은 안전한 대안이 있기 때문에.
여전히 이러한 정적 멤버에 대한 모든 액세스를 캡슐화하고 올바르게 잠금을 처리하면 모든 스레드가 공유 리소스와 경쟁하면서 병목 현상이 될 수있는 안전한 구현을 갖게됩니다. 없이는 정말 좋습니다.
또한 ASMX 웹 서비스를 의미하는 것처럼 보이지만 ASMX 또는 WCF를 지정해야합니다.
동일한 프로세스에서 실행되는 동안 공유됩니다. 따라서 동일한 서버에서 요청하는 두 사람은 동일한 개체 인스턴스를 갖게됩니다. 그러나 IIS의 다른 프로세스에서 다른 응용 프로그램을 실행할 수 있습니다.이 경우 객체에 대한 인스턴스가 공유되지 않을 것이라고 확신합니다.
웹 가든을 제외하고 모두 공유됩니다. 웹 가든은 단일 응용 프로그램을 다루는 다중 호스트 프로세스입니다. 이 경우 각 호스트마다 자체 정적 데이터가 있습니다.
왜 사용하면 안되나요? 나는 정적 인 객체가 특히 공유 된 데이터를 캐싱 할 목적으로 웹 애플리케이션에서 매우 유용하다고 말하고 싶다. – Kibbee
응용 프로그램 캐시에 공유 데이터를 캐시하려는 경우 – JoshBerke