次の方法で共有


コンポーネントなしのCOM+サービスの概念

COM+1.5では、コンポーネントなしでCOM+サービスを使用する機能が導入されています。 これにより、コンポーネントを使用しない環境からCOM+サービスを使用する場合のパフォーマンスコストが大幅に削減され、これらのサービスを使用する際の複雑さも解消されます。 IIS 6.0以降、IISとASPでは、コンポーネントなしでCOM+サービスを使用する利点があります。

COM+サービスは、もともとCOM+コンポーネントと共に使用するように設計されています。 ただし、一部のプログラミング環境はコンポーネントベースではないため、COM+サービスを使用するにはかなりのオーバーヘッドが必要でした。 たとえば、COM+1.5のリリース前に、IISはASPページでCOM+トランザクションサービスを使用できるようにするためだけにshimオブジェクトを作成する必要がありました。 これらのオブジェクトを作成することによるパフォーマンスコストには、IISメタベースとCOM+登録データベース (RegDB) の両方に構成データを格納することと、構成データを効果的に管理するために必要なIISメタベースとCOM+RegDB間の余分な通信が含まれます。

IISで同期などの2番目のCOM+サービスを使用する必要がある場合は、まったく異なるshimオブジェクトを作成する必要がありました。 COM+トランザクションと同期の両方を使用するには、3番目の種類のshimオブジェクトが必要になります。 このアプローチの複雑さはO (n2) としてスケーリングされ、新しいサービスの実装が非常に困難になります。

コンポーネントを使用せずにCOM+サービスを導入すると、必要なサービスはクラスからインスタンス化されたオブジェクトを使用して構成されます。 CServiceConfigクラスは、さまざまなサービスを構成するために必要なインターフェイスを実装するとともに、複数のサービスを同時にサポートする柔軟性と、将来において新しいサービスをサポートするための機能を提供します。

構成したサービスは、2つの異なるメカニズムで使用できます。1つ目はCoCreateActivity関数を使用する方法で、関数により作成されるアクティビティを通じて送信されるすべての作業にサービスを適用します。2つ目は、CoEnterServiceDomain関数とCoLeaveServiceDomain関数の呼び出しの間のサービスを使用する作業を埋め込む方法です。 これらの関数はいずれも、COM+のサービスを使用するために新しいコンポーネントの作成を必要としません。必要になるのはCServiceConfigオブジェクトのみです。

コンポーネントを使用しないCOM+サービスのタスク