2010-01-02 3 views
2

내 응용 프로그램은 ASP에서 호출되는 VB6 DLL로 구성됩니다. 그것은 (비표준) 데이터베이스에 대한 연결 풀을 관리해야합니다. 전역 변수를 사용하여이를 구현했지만 ASP 설정으로 인해 응용 프로그램이 충돌하기 때문에 매 20 분마다 다시 설정됩니다.클래식 ASP에서 호출 된 DLL의 주소 공간

previous poster said ASP의 DLL은 모두 자체 주소 공간에서 만들어 지므로 각 페이지 액세스가 고유 한 전역 변수를 갖기 때문에 글로벌 변수 솔루션을 완전히 사용할 수 없게 만듭니다.

DLL이 유휴 시간 제한에 도달 할 때까지 전역 변수가 존재한다는 내 관찰에 맞지 않습니다.

우리 중 누가 맞습니까? DLL 전역에서 어떤 범위를 사용할 수 있습니까?

+1

"ASP의 DLL은 모두 자신의 주소 공간에서 생성되었습니다"라고 말한 곳을 보지 못합니까? 어느 것이 당연히 이해하지 못한다. 주소 공간을 소유하고있는 프로세스는 dll이 주소 공간을 생성 할 수 없다. – AnthonyWJones

답변

1

각 요청에서 전역 변수의 자체 복사본을 가져 오는 아이디어는 False입니다.

그러나 VB6 dll을 스레드로 아파트와 메모리 설정에서 보유로 asp에서 사용하도록 컴파일하는 것이 좋습니다.

스레드은 자체 변수의 복사본을 갖습니다. 따라서 요청이 다른 스레드에서 실행되는 경우 여러 요청에서 반드시 동일한 전역 변수가 표시되지는 않습니다.

IIS6을 관찰하면서 같은 시간에 실행되는 요청이 거의없는 테스트 상황에서 동일한 스레드가 후속 요청에 사용된다는 사실을 발견했습니다. 이것이 글로벌 변수의 단일 세트를 가지고있는 것으로 보이는 이유 일 수 있습니다. 생산 과정에서 이것은 사실이 될 수 없습니다.

관련 문제