オブジェクト プーリング

COM+ オブジェクト プーリング サービスを利用すると、各オブジェクトを最初から作成する際のオーバーヘッドを回避できます。オブジェクトがアクティブになると、そのオブジェクトはプールから取り出されます。オブジェクトが非アクティブになると、そのオブジェクトはプールに戻され次の要求を待ちます。

オブジェクト プーリングを設定するには、ObjectPoolingAttribute 属性を、System.EnterpriseServices.ServicedComponent クラスから派生したクラスに適用します。

ObjectPoolingAttribute を適用し、そのプロパティを設定する手順については、「方法 : プールされるオブジェクトを作成しサイズ制限とタイムアウト制限を設定する」を参照してください。

接続プーリングを使用して最大接続数を制御するのに対して、オブジェクト プーリングを使用すると、使用する接続の数を制御できます。次に、オブジェクト プーリングと接続プーリングの重要な違いについて説明します。

  • 作成。接続プーリングを使用している場合、作成は同じスレッド上で行われます。そのためプールに何も存在しない場合、接続が作成されます。オブジェクト プーリングでは、プールで新しいオブジェクトを作成できます。ただし最大値に達している場合、オブジェクト プーリングによって次に利用可能なオブジェクトが提供されます。オブジェクトの作成に時間がかかるが、そのオブジェクトを長時間使用しない場合、これは重要な動作になります。

  • 最小値と最大値の適用。これは、接続プーリングでは行われません。オブジェクト プーリングの最大値は、アプリケーションをスケーリングしようとするときに非常に重要になります。何千もの要求をごくわずかなオブジェクトに多重送信することが必要な場合があります(TPC/C ベンチマークは多重送信を利用します)。

COM+ のオブジェクト プーリングは、.NET Framework マネージ SQL クライアントの接続プーリングとほとんど同じです。たとえば、作成は別のスレッドで行われ、最小値および最大値が適用されます。

Noteメモ :

アプリケーション ドメインは、オブジェクト プーリングの動作に影響します。Windows 2000 では、アプリケーション アクティベーションがライブラリに設定され、複数のアプリケーション ドメインが存在する場合は、プールされるオブジェクトはすべて、既定のアプリケーション ドメイン内で作成され複数のクライアント間で共有されます。同じ状況の Windows XP および Windows Server 2003 では、アプリケーション ドメインごとに 1 つのオブジェクト プールが用意されています。複数のアプリケーション ドメインが存在し、アプリケーション アクティベーションがサーバーに設定されている状態で、いずれかのオペレーティング システムを使用すると、アウトプロセス クライアントは、既定のアプリケーション ドメイン内でオブジェクト プールを使用します。

Noteメモ :

一般的に、サービス コンポーネントを使用する場合は、クライアントから DisposeObject を呼び出す必要がありません。ただし、Just-in-Time (JIT) アクティベーション サービスが有効ではない場合に COM+ のオブジェクト プーリング サービスを使用している場合は、呼び出す必要があります。この場合、オブジェクトをプールに戻しても安全であることを確認するために、オブジェクトの処理が終了したときに COM+ に通知する必要があります。一般的に、プールするオブジェクトで 1 度に 1 つだけ呼び出しを行う場合は、オブジェクト プーリングと共に JIT アクティベーションを有効にすることをお勧めします。参照を取得して、それについて複数の呼び出しを実行する場合、JIT アクティベーションを使用せずにオブジェクト プーリングを使用すると、パフォーマンスが向上することがあります。

関連項目

タスク

方法 :プールされるオブジェクトを作成しサイズ制限とタイムアウト制限を設定する

参照

ObjectPoolingAttribute
System.EnterpriseServices Namespace

概念

利用可能な COM+ サービスの概要

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.