시스템 제공 서로게이트 사용
DLL 서버에서 시스템 제공 서로게이트를 사용하려면 레지스트리의 DllSurrogate 값에 대해 빈 문자열 또는 NULL을 지정하는 DLL을 등록합니다. 지정된 대로, DLL 서버에 대한 활성화 요청이 COM에 오면 COM은 별도의 호출을 방지하기 위해 내부적으로 실행 명령줄에서 CLSID를 지정하여 기본 서로게이트 프로세스와 요청된 DLL을 동시에 시작합니다. (서로게이트 프로세스에서 둘 이상의 DLL 서버를 실행하는 방법에 대한 자세한 내용은 서로게이트 공유를 참조하세요.)
서로게이트 프로세스의 기본 구현은 혼합 스레딩 모델 스타일의 의사-COM 서버입니다. 여러 DLL 서버가 단일 서로게이트 프로세스에 로드되는 경우 이 프로세스를 통해 각 DLL 서버가 해당 서버의 레지스트리에 지정된 스레딩 모델을 사용하여 인스턴스화됩니다. 로드된 모든 무료 스레드 서버는 다중 스레드 아파트에 함께 상주하는 반면, 각 아파트 스레드 서버는 단일 스레드 아파트에 상주합니다. DLL 서버가 두 스레딩 모델을 모두 지원하는 경우 COM은 다중 스레딩을 선택합니다.
이 서로게이트 프로세스는 COM이 DLL 서버의 언로드와 서로게이트 프로세스의 종료를 모두 처리할 수 있도록 작성되었습니다. 프로세스 수명은 주로 서로게이트의 마샬링된 개체 수에 의해 제공되며, 이는 프로세스에서 외부 종속성의 경험적 측정값 역할을 합니다. 외부 종속성을 나타내기 위한 기능이지만 이 수명 모델은 프로세서 내부 마샬링과 프로세서 외부 마샬링을 구분하지 않습니다. 아파트 간 마샬링을 통해 또는 전역 인터페이스 테이블 또는 IAgileReference와 같은 in-proc 마샬링 기반 메커니즘을 통해 의도치 않게 서로게이트를 고정하지 않도록 주의하세요.
시스템 제공 서로게이트는 대부분의 개발자에게 매우 유용할 뿐만 아니라 사용도 매우 쉽습니다. 그러나 특별한 고려 사항이 있는 개발자에게는 사용자 지정 서로게이트가 필요할 수도 있습니다. 자세한 내용은 사용자 지정 서로게이트 작성을 참조하세요.