1

プロセスの存続期間中持続するコンポーネントを使用するプロジェクトがあります (アクセスできない静的オブジェクトの強制破棄を参照)。そのコンポーネントが持続しないようにするには、それを子プロセスでラップして呼び出す必要があります。

理想的には、スレッドと同じようにプロセスを使用したいと考えています。コンパイラーがこのプロセスの作業を支援してくれます。ただし、Windows がプロセスを管理する方法により、これは不可能です。

共同作業を意図したプロセスを設計するための推奨されるアプローチはありますか? つまり、子プロセスを呼び出す方法、子から親に例外を返す方法、および共有メモリ/ WCF /その他の方法を使用して2つのプロセスが互いに通信できるようにする方法に関するベストプラクティス? 理想的には、同じ VS2012 ソリューションで両方のプロセスのコードを操作し、コンパイラに 2 つのプロセスの互換性を確保するためにできる限りのことをさせたいと考えています。

4

2 に答える 2

2

親プロセスと子プロセスが双方向の WCF パイプによって監視される子プロセス管理ライブラリを作成しました。子プロセスが終了した場合、または親プロセスが終了した場合は、互いに通知されます。開始された子プロセスに VS デバッガーを自動的にアタッチするデバッガー ヘルパーも利用できます。

プロジェクトサイト:

http://www.crawler-lib.net/child-processes

NuGet パッケージ:

https://www.nuget.org/packages/ChildProcesses https://www.nuget.org/packages/ChildProcesses.VisualStudioDebug/

于 2015-04-08T23:25:01.453 に答える
1

多くの作業を透過的に行うためのリモーティングアプローチAppDomainがありますが、複雑になりすぎて簡単なアプローチがあるため、私はそれを避けます。

もう 1 つの適切な方法は、メッセージ キューを使用してサブスクライブすることです。これにより、さまざまなプロセスを簡単に調整することができます。

また、ASP.NET Web API セルフ ホストは、WCF セルフ ホストに比べて使用および実装が簡単です。

私の意見では、ASP.NET Web API アプローチを使用します。

于 2013-08-29T10:43:08.347 に答える