2

.NET コンポーネント (私たちが作成したもの) を使用する ASP.NET アプリケーションがあります。このコンポーネントは、非常にリークが多いように見える、管理されていないサード パーティの COM DLL を参照します。サード パーティの DLL は 32 ビットのみのコンポーネントであり、頻繁に使用すると大量のメモリが割り当てられます。最終的に、コンポーネントをホストしている w3wp プロセスを (通常は IISReset を介して) シャットダウンする必要がある致命的なエラーが発生します。これは、おそらく 32 ビット プロセスのメモリ空間にこれ以上のメモリを割り当てることができないためです。

私の質問は、ASP.NET アプリケーションおよび/または .NET コンポーネントをプロセス外で実行するように変換して、個々のインスタンスまたはインスタンスのプールが個別のプロセスで実行され、1) による制約が少なくなる比較的簡単な方法があるかどうかです。 32 ビットのメモリ制限。2) ホスト プロセスを終了することでクリーンアップできるか? System.Diagnostics.Process.Create を使用して、インスタンスを作成してクライアントに提供できるプロセスの単純なシェルを作成できると思います。しかし、クライアントとサーバー間の接続を確立する方法がわかりません。代わりにWCFを使用する必要があるかもしれませんが、プロセス内でオブジェクトがどのようにプールされるかを制御することはできませんか? また、何かを別のプロセスで実行するだけでも、複雑なオーバーヘッドがかなりかかるようです。最も単純なパスに関するアドバイスをいただければ幸いです。

編集:プロセス外の COM コンポーネントを作成するのは本当に簡単でしたか? 純粋な .NET でこれほど単純なものはありますか?

4

1 に答える 1