0

次の問題に対して誰かが過去に取った可能性のある最善のアプローチについて助けが必要です...

サード パーティの COM を呼び出す Windows サービスを介して WCF をホストします。残念ながら、COM は STAThead であり、1 つのプロセス スコープで実行されたときに 1 つのコアしか使用しないことを意味します。

この問題を回避するには、Windows サービス (インストール中に異なるサービス名を使用して簡単に実行できます) を複製して、別のプロセス スコープを作成し、COM 相互運用機能が別のコアを使用するようにします。

問題: クライアントが WCF メソッドを使用したいサービスを呼び出すことができるように、各サービスを異なるアドレスでホストするにはどうすればよいですか?

異なるエンドポイントを使用し、各 Windows サービスを別のサービスに向けると、各ベース アドレスに対して 1 つのホストしか許可されないというエラー メッセージが表示されます。

同じプロトコルに複数のベース アドレス (おそらく異なるポート) を追加し、それらを異なるホスト サービスにリンクすることはできますか?

例は素晴らしいでしょう:)。

4

1 に答える 1

0

この COM オブジェクトの複数のインスタンスを WCF サービスで使用する必要があるように思えます。一度に複数の COM オブジェクトを使用できるように、独自の COM オブジェクトをインスタンス化して使用する新しいスレッド (各 STA) を起動できます。もちろん、結果を WCF スレッドに返す必要があります。

WCF サービスの複数のインスタンスをホストする場合は、ホスト方法によって異なります。ii6 では、別の .svc ファイルを簡単に作成できます。これにより、そのアプリケーション プール内の他のすべてのものと同じプロセスでサービスが実行されます。別のアプリケーション プールを割り当てることにより、サービスを別のプロセスで実行することができます。.svc ベースでこれを実行できるかどうかはわかりません。IIS 7 を使用している場合は、.svc を実行するか、IIS7 で Windows プロセス アクティベーション サービス (WAS) サポートを使用できます。その場合、基本的に構成内に別の要素を作成します。IISを実際に使用しなくても、Windows Server 2008 R2でWASを使用できると思います...

于 2012-08-01T15:26:03.570 に答える