2009-12-16 5 views
1

정적 변수를 사용하는 C# 라이브러리 클래스가 있습니다. 필자는이 라이브러리 클래스를 데스크톱 및 웹 응용 프로그램 모두에 사용합니다. 문제는 방금 발견 한 바와 같이 웹 서버에서 정적 변수가 너무 좋아지지 않는다는 것입니다. 값은 웹 사이트를 사용하는 모든 세션에서 공유됩니다!데스크톱과 웹 모두에 사용되는 라이브러리에서 정적 변수를 처리하는 방법은 무엇입니까?

내 웹 서버의 각 세션에 이러한 변수에 대한 자체 독립 값이 있는지 확인하면서 내 데스크톱 앱에 사용할 정적 변수의 기능을 유지하려면 어떻게해야합니까?하지만 세션 자체 내에서 여전히 실제로 동작합니다. 정적처럼?

답변

5

정적 변수 값은 응용 프로그램 도메인의 모든 스레드에서 공유됩니다. ASP.NET 응용 프로그램에서 현재 사용자와 관련된 데이터를 저장하는 권장 방법은 Session입니다.

이 공유 라이브러리의 코드를 수정할 수 있으면 값을 저장하는 메커니즘을 제공하는 정적 변수에서 인터페이스를 추출하는 것이 좋습니다. 이렇게하면 각 응용 프로그램이 자체 구현을 제공 할 수 있습니다. Windows 응용 프로그램의 경우 내부적으로 정적 변수를 사용하는 구현을 사용할 수 있습니다. ASP.NET 응용 프로그램의 경우 Session을 사용할 수 있습니다. 그러나 모든 경우에 인터페이스 만 노출합니다. 또한 코드를 단위 테스트에 쉽게 적용 할 수 있다는 긍정적 인 부작용이 있습니다.

+0

알아요. 그러나 나는이 라이브러리를 웹과 데스크톱 모두에서 사용하고 싶다. 두 라이브러리 모두에서 작업 할 수 있도록 라이브러리를 민첩하게 유지할 수있는 방법에 대한 제안을 찾고 있습니다. –

+1

필자는이 라이브러리가 다중 쓰레드 환경에서 사용되는 ** **이 아니라고 가정합니다. 왜냐하면이 라이브러리는 정적 변수에 의존하여 사용자 상태를 저장하기 때문입니다. –

+0

+1 수정 된 답변 :) –

관련 문제