문제

한 번에 둘 이상의 프로세스에서 사용할 수 있는 어셈블리가 있습니다.정적 클래스를 사용하는 경우 여러 프로세스가 모두 해당 클래스의 동일한 "인스턴스"를 사용합니까?

프로세스가 분리되어 있으므로 서로 다른 애플리케이션 도메인에서 실행되므로 정적 "인스턴스"가 분리되어 있습니까?

여기에서 자세히 설명된 푸딩은 메시지를 병렬 배치로 처리하도록 설정된 사용자 지정 BizTalk 어댑터에서 어셈블리를 사용하고 있다는 것입니다.이것이 제가 위에서 "다중 프로세스"라고 부르는 것입니다.

도움이 되었습니까?

해결책

여러 스레드가 인스턴스를 공유합니다.이러한 이유로 정적 클래스는 스레드 간에 상태를 전달하는 데 편리할 수 있지만 경쟁 조건을 도입하지 않도록 매우 주의해야 합니다(Monitor 또는 lock 귀하의 재산).

그러나 여러 프로세스 별도의 AppDomain에 있어야 하므로 각각 고유한 인스턴스를 갖습니다.

다른 팁

정적 클래스는 애플리케이션 도메인별로 1 회 존재합니다. 귀하의 경우, 어댑터가 동일한 응용 프로그램 도메인에서 여러 스레드를 사용하여 (정적 클래스의 단일 인스턴스를 공유) 여러 프로세스 (따라서 정적 클래스의 별도 인스턴스를 갖는)를 사용하는지 여부에 따라 다릅니다.

"한 번에 하나 이상의 프로세스에서 사용할 수있는 어셈블리가 있습니다. 정적 클래스를 사용하는 경우 여러 프로세스가 해당 클래스의 동일한"인스턴스 "를 사용합니까?"

아니요, 모두 별도의 인스턴스가 있습니다.

"프로세스는 분리되어 있으므로 차이 응용 프로그램 영역에서 실행되므로 정적"인스턴스 "개별?"

예.

정적 클래스의 범위는 응용 프로그램 도메인으로 제한됩니다. 각 앱 도메인에는 자체 정적 변수의 사본이 있습니다. "프로세스"가 동일한 앱 도메인 내의 스레드 인 경우 정적 값을 공유합니다. 그러나 실제 별도의 Windows 프로세스 인 경우 다른 앱 도메인이 있으므로 별도의 사본이 있습니다.

싱글 톤 패턴을보고 싶을 수도 있습니다. 요지는 서비스 인스턴스 수를 제어하고 싶은 것 같습니다.

모든 클라이언트 요청을 서비스하는 별도의 DLL/프로젝트를 원한다고 생각합니다. 정적 클래스/싱글 톤/멀티 톤을 사용하여 원하는 기능을 구현할 수 있습니다. 그것은 당신이 성취하려는 것에 달려 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top