1

我有一个项目,它使用了一个持续进程生命周期的组件(请参阅强制处置不可访问的静态对象)。为了避免该组件持续存在,我需要将其包装在子进程中并调用它。

理想情况下,我想以与线程相同的方式使用进程;让编译器帮助我处理这个过程;尽管由于 Windows 管理进程的方式,这是不可能的。

是否有推荐的方法来设计旨在协同工作的流程?即关于如何调用子进程、将异常从子进程返回给父进程以及使用共享内存/WCF/其他方法以允许两个进程相互通信的最佳实践?理想情况下,我希望能够在同一个 VS2012 解决方案中使用两个进程的代码,并让编译器尽其所能确保这两个进程的兼容性。

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工作透明地协同工作,但我会避免它,因为它变得太复杂并且有更简单的方法。

另一个好方法是使用消息队列并订阅它们,因此它可以成为轻松协调各种进程的好方法。

此外,与 WCF 自托管相比, ASP.NET Web API 自托管更易于使用和实现。

在我看来,我会采用 ASP.NET Web API 方法。

于 2013-08-29T10:43:08.347 回答