2013-02-27 4 views
2

내 웹 응용 프로그램의 클래스를 가리키는 .asmx 확장자를 가진 webservice가 있습니다. 애플리케이션 시작시 디버그 로그를 출력하는 코드를 추가 한 후 사용자가 페이지를 방문 할 때마다 새로운 디버그 로그가 생성되는 것을 볼 수 있습니다.단일 클래스 인스턴스를 공유하는 ASMX 서비스

나는 오직 하나의 인스턴스 만 사용하도록이 웹 서비스를 구성 할 수 있기를 바랬습니다.

의미, 첫 번째 사용자가 사이트를 방문하면 내 웹 서비스의 인스턴스가 만들어지며 이후의 모든 요청은 동일한 클래스를 통해 라우팅되어 같은 상태를 공유합니다.

이것도 가능합니까?

+0

웹 서비스의 여러 인스턴스가 필요합니다. 그렇지 않으면 각 인바운드 HTTP 요청은 앞에있는 모든 요청에 ​​의해 차단됩니다. 정적 변수를 사용하여 특정 정보를 저장할 수 있지만 보존하려는 데이터 만 사용하지 않도록주의하십시오. – Mike

답변

1

웹 사이트는 본질적으로 상태 비 저장됩니다. 의미, 각 요청은 일반적으로 다른 요청과 관련이 없습니다.

즉, 로그를 global.asax 파일의 정적 변수로 설정할 수 있습니다. 스레딩 문제를 알고 있어야합니다.

또는 Elmah을보실 수 있습니다.

1

많은 문제가있는 것 같습니다.

우선, ASMX 기술은 모두 쓸모가 없으므로 새로운 개발에 사용해서는 안됩니다. 대신 WCF를 사용해야합니다.

다음으로, 예, 클래스에 동일한 인스턴스를 공유하는 서비스를 여러 번 호출 할 수 있습니다. 그러나 스레드 안전하지 않은 한이 클래스에 대한 동시 액세스를 방지해야합니다. 같은 클래스 인스턴스를 동시에 호출하기 위해 여러 서비스 호출이 필요합니다.

마지막으로 ASMX는 싱글 톤 웹 서비스를 지원하지 않습니다. 가장 좋은 방법은 여러 서비스 호출이 모두 같은 객체를 공유하도록하는 것입니다 (신중하게 잠근 상태).

+0

할 수 있으면 WCF를 사용 하겠지만 이전 시스템과 호환되는 시스템을 만들려고합니다. – NoPyGod

+0

WCF가 호환되지 않는 이유는 무엇입니까? –

+0

WCF가 .SVC 확장 프로그램을 말하는 것입니까? 또는 다른 것? – NoPyGod