COM+ 개체를 사용하도록 설정하면 두 개의 DLL 호스트가 시작됩니다.

  • 아티클
  • 2023. 07. 17.
  •  

이 문서의 내용

  1. 요약
  2. 이 동작이 발생하는 이유
  3. 상태

이 문서에서는 COM+ 애플리케이션에 대해 애플리케이션 풀링을 사용할 때 두 DLL 호스트가 시작되는 동작에 대해 설명합니다.

원래 제품 버전: Winsock
원래 KB 번호: 3148846

요약

COM+ 애플리케이션이 애플리케이션 풀링을 사용하도록 구성된 경우 두 개의 DLL 호스트가 하나의 호스트 시작 대신 시작됩니다.

이 동작이 발생하는 이유

COM+ 애플리케이션에 애플리케이션 풀링을 사용하도록 설정하면 개체 만들기 요청이 RPC 서비스를 통해 라우팅됩니다. 애플리케이션 풀링에서는 라운드 로빈 알고리즘을 사용하여 시작된 DLL 호스트 프로세스에 개체 만들기 요청을 보냅니다.

COM(구성 요소 개체 모델) 개체를 만들 때는 주로 해당 또는 CoCreateInstanceEx 함수를 CoCreateInstance 사용합니다. COM 개체를 만드는 두 번째 방법은 DLL에서 클래스 팩터리를 가져와서 클래스 팩터리 개체를 사용하는 것입니다. 이 메서드는 한 번에 둘 이상의 COM 개체를 만들 때 가장 자주 사용됩니다.

CoCreateInstance 는 단일 개체 만들기 요청으로 계산됩니다. 클래스 팩터리 접근 방식을 사용하는 경우 두 개의 개체 만들기 요청으로 계산됩니다. 첫 번째 생성은 클래스 팩터리 개체용이기 때문입니다. 애플리케이션 풀링을 사용하도록 설정한 경우 이 구성은 두 개의 Dllhost.exe 프로세스를 시작합니다.

.NET은 클래스 팩터리 메서드를 사용하여 COM 개체를 만듭니다. 따라서 대상 COM+ 애플리케이션에서 개체를 만들 때 .NET 클라이언트에서 두 개의 DLL 호스트가 시작됩니다.

상태

이것은 의도적으로 설계된 동작입니다.

Posted by gurupia
,