개체 풀링(Object Pooling)은 COM+에서 제공하는 자동 서비스로, 구성 요소를 요청하는 모든 클라이언트에서 사용할 수 있도록 자체 인스턴스가 풀에서 활성 상태로 유지되도록 구성 요소를 구성할 수 있습니다. 지정된 구성 요소에 대해 유지 관리되는 풀을 관리적으로 구성하고 모니터링하여 풀 크기 및 생성 요청 제한 시간 값과 같은 특성을 지정할 수 있습니다. 애플리케이션이 실행 중일 때 COM+는 사용자가 지정한 기준에 따라 개체 활성화 및 재사용에 대한 세부 정보를 처리하여 풀을 관리합니다.
특히 재사용을 최대한 활용하기 위해 작성된 경우 이러한 방식으로 개체를 다시 사용하면 매우 중요한 성능 및 크기 조정 이점을 얻을 수 있습니다. 개체 풀링을 사용하면 다음과 같은 이점이 있습니다.
- 각 클라이언트에 대해 개체 사용 시간을 단축하여 개체가 클라이언트에 대해 수행하는 실제 작업에서 시간이 많이 걸리는 초기화 및 리소스 획득을 고려할 수 있습니다.
- 모든 클라이언트에서 비용이 많이 드는 리소스를 획득하는 비용을 공유할 수 있습니다.
- 클라이언트 요청이 들어오기 전에 애플리케이션이 시작될 때 개체를 미리 할당할 수 있습니다.
- 예를 들어 관리 풀 관리에서 리소스 사용을 제어할 수 있습니다. 예를 들어 적절한 최대 풀 수준을 설정하면 라이선스가 있는 만큼의 데이터베이스 연결만 열어 둘 수 있습니다.
- 사용 가능한 하드웨어 리소스가 변경됨에 따라 풀 구성을 쉽게 조정할 수 있는 사용 가능한 하드웨어 리소스를 최대한 활용하도록 풀링을 관리적으로 구성할 수 있습니다.
- 리소스가 클라이언트에 전용되는 방식을 의도적으로 제어하는 동시에 JIT(Just-In-Time) 활성화사용하는 개체의 활성화 시간을 단축할 수 있습니다.
풀 가능한 개체 작성
단일 개체 인스턴스를 여러 클라이언트에서 사용할 수 있도록 하려면 풀 가능 개체가 특정 요구 사항을 충족해야 합니다. 예를 들어 클라이언트 상태를 유지하거나 스레드 선호도를 가질 수 없습니다. 또한 트랜잭션 개체에는 풀된 개체가 보유한 관리되는 리소스를 트랜잭션에 수동으로 등록해야 한다는 특정 요구 사항이 있습니다.
풀된 개체는 IObjectControl 구현하여 재사용 방법을 제어할 수 있습니다. 이렇게 하면 지정된 컨텍스트에서 활성화될 때 초기화를 수행하고, 비활성화 시 클라이언트 상태를 정리하고, 다시 사용할 수 없는 상태에 있는 경우를 나타낼 수 있습니다.
종종 생성자 문자열을 사용하여 관리적으로 사용자 지정할 수 있도록 풀링 가능한 개체를 다소 일반적인 방식으로 작성하는 것이 유용합니다. 예를 들어 생성자 문자열에 관리적으로 지정된 특정 DSN을 사용하여 제네릭 ODBC 연결을 보유하도록 개체를 작성할 수 있습니다.
다음 표에 설명된 이 섹션의 항목에서는 COM+에서 개체 풀링이 작동하는 방식에 대한 정보와 풀링 가능한 개체를 작성, 구성 및 구현하는 방법에 대한 정보를 제공합니다.
| 주제 | 설명 |
|---|---|
|
개체 풀링 작동 방식 |
기본 개념을 제시합니다. |
|
개체 풀링 성능 향상 |
개체 풀링을 가장 효과적으로 사용하는 방법에 대한 구체적인 세부 정보를 제공합니다. |
|
풀링 가능한 개체에 대한 요구 사항 |
풀화할 개체를 작성하는 방법에 대한 세부 정보를 제공합니다. |
|
풀링 트랜잭션 객체 |
풀 가능한 트랜잭션 개체에 적용되는 특별한 요구 사항에 대한 세부 정보를 제공합니다. |
|
객체 수명과 상태 제어 |
풀된 개체를 구현하여 다시 사용하는 방법을 제어하는 방법을 설명합니다. |