개체 풀링

COM+ 개체 풀링 서비스를 사용하면 각 개체를 처음부터 만드는 오버헤드를 피할 수 있습니다. 활성화된 개체는 풀에서 가져오게 되고, 비활성화된 개체는 풀로 다시 돌아가서 다음 요청이 있을 때까지 대기하게 됩니다.

System.EnterpriseServices.ServicedComponent 클래스의 파생 클래스에 ObjectPoolingAttribute 특성을 적용하여 개체 풀링을 구성할 수 있습니다.

ObjectPoolingAttribute를 적용하고 해당 속성을 설정하는 절차는 방법: 풀링된 개체의 생성과 크기 및 시간 제한 설정을 참조하십시오.

최대 도달 수치를 제어하는 연결 풀링과 달리, 개체 풀링의 경우 사용하는 연결 수를 제어할 수 있습니다. 다음은 개체 풀링과 연결 풀링 간의 주요 차이점입니다.

  • 생성. 연결 풀링을 사용할 때는 연결이 동일한 스레드에서 만들어지므로 풀에 아무 것도 없으면 자동으로 새 연결이 만들어집니다. 개체 풀링을 사용할 때는 풀이 새 개체를 만들 수 있습니다. 그러나 최대 수치에 이미 도달한 경우에는 새 개체를 만드는 대신 다음으로 사용할 수 있는 개체를 제공합니다. 이는 개체를 만드는 데 시간이 오래 걸리는 경우 매우 중요한 동작이지만, 너무 오랫동안 사용하지는 마십시오.

  • 최소값 및 최대값 적용. 이 작업은 연결 풀링에서 수행되지 않습니다. 개체 풀링의 최대값은 응용 프로그램을 확장할 때 매우 중요합니다. 수천 개의 요청을 단 몇 개의 개체로 멀티플렉싱해야 할 수도 있습니다. TPC/C 벤치마크에서는 이러한 방식에 의존합니다.

COM+ 개체 풀링은 실제로는 .NET Framework 관리 SQL 클라이언트 연결 풀링과 동일합니다. 예를 들어, 개체는 다른 스레드에서 만들어지며 최소값과 최대값이 적용됩니다.

Note참고:

응용 프로그램 도메인은 개체 풀링 동작에 영향을 줍니다. Windows 2000에서 응용 프로그램 활성화가 Library로 설정되어 있고 복수의 응용 프로그램 도메인을 가지고 있을 때, 풀링된 개체는 모두 기본 응용 프로그램 도메인에 만들어지며 여러 클라이언트가 공유합니다. 같은 상황에서 Windows XP 및 Windows Server 2003을 사용하면 응용 프로그램 도메인 하나에 개체 풀 하나가 할당됩니다. 두 운영 체제 중 하나를 복수의 응용 프로그램 도메인과 함께 사용하면서 응용 프로그램 활성화가 서버로 설정되어 있으면 out-of-process 클라이언트는 기본 응용 프로그램 도메인에 있는 개체 풀을 사용합니다.

Note참고:

일반적으로 서비스 구성 요소를 사용할 때는 클라이언트에서 DisposeObject를 호출할 필요가 없습니다. 그러나 JIT(Just-in-Time) 활성화 서비스를 사용하지 않는 동안 COM+ 개체 풀링 서비스를 사용하려면 이 개체를 반드시 호출해야 합니다. 이 경우 개체를 풀로 안전하게 반환할 수 있는지 확인하기 위해, 사용자가 개체에 대한 작업을 완료하는 시기를 COM+에 통보해야 합니다. 일반적으로 풀링된 개체에 한 번에 하나의 호출만 수행하려면 개체 풀링과 함께 JIT 활성화를 사용하는 것이 좋습니다. 참조를 가져와 여러 호출을 수행하려면 JIT 활성화 없이 개체 풀링을 사용하는 것이 성능에 더 도움이 됩니다.

참고 항목

작업

방법: 풀링된 개체의 생성과 크기 및 시간 제한 설정

참조

ObjectPoolingAttribute
System.EnterpriseServices Namespace

개념

사용 가능한 COM+ 서비스 요약

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.