2009-05-12 8 views
0

.NET Webサービスからアクセスする必要があるCOMオブジェクトがあります。COMオブジェクトプーリングと.NET Webサービス

私はSTA/MTA全体のことを知っています。私のCOMオブジェクトはMTAに変換され、グローバルな状態はありません(マルチスレッドではありません)。

これをCOM +サーバーとして設定し、オブジェクトプールを指定すると、これは各Webサービススレッドに対してCOMオブジェクトの別のインスタンスを使用することを意味しますか?キューに入れない?

ありがとうございます。

答えて

2

いくつかのことによって異なります。

プール内のオブジェクトの数に上限を設定し、Webサービスクライアントでオブジェクト参照を有効にし、JITを使用しない場合、またはメソッドでDoneフラグを設定しない場合それらがプール制限に達するとキューに入れられます。

SetCompleteを呼び出すか、メソッドのAutoComplete属性を使用してDoneフラグを設定すると、COM +コンポーネントは非アクティブになり、メソッドが返されたときにプールに戻されます。同時に実行するメソッドの数が最大プール制限に達しない限り、新しいメソッド呼び出しは決して待機する必要はありません。

+0

私はCOMオブジェクトを生き残らせるものではありませんが、単純な「火の神気のない」タイプの呼び出しになります。 COMオブジェクトに何かを尋ねるだけで、それが得られれば、接続を閉じることができます。あなたがオートコンプリート属性を言うとき - これは.NET側ですか? – Duncan

+0

いいえ、[自動完成(true)]はCOM +側に進みます。 COM +との接続を切断することもできますが、これも停止の原因になりますが、スピードが必要な場合は、COM +オブジェクトへの接続を維持し、そのメソッドを呼び出し続けます。 –

+0

さて、各Webサービススレッドは、毎回COM +オブジェクトを呼び出すだけです。あなたの経験から、パフォーマンスは吸うつもりですか? .NETからCOM +を呼び出すときにかなりのオーバーヘッドがありますか? – Duncan