为父母编写代码&子进程

时间:2013-08-29 10:35:38

标签: c# wcf process shared-memory datacontract

我有一个项目,它使用一个持续进程生命周期的组件(参见Force Disposal of an Inaccessible Static Object)。为了避免该组件持久存在,我需要将其包装在子进程中并调用它。

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

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

2 个答案:

答案 0 :(得分:2)

我已经创建了一个子进程管理库,其中由于双向WCF管道而监视父进程和子进程。如果子进程终止或父进程终止,则通知对方。 还有一个调试器助手可以自动将VS调试器连接到已启动的子进程

项目网站:

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

NuGet包:

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

答案 1 :(得分:1)

remoting approach让许多AppDomain透明地协同工作,但我会避免它,因为它太复杂而且方法更简单。

另一个好方法是使用消息队列并对其进行描述,这样可以很容易地协调各种过程。

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

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