【问题标题】:Writing Code for Parent & Child Processes为父子进程编写代码
【发布时间】:2013-09-01 17:59:50
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# wcf process shared-memory datacontract


    【解决方案1】:

    我制作了一个子进程管理库,其中父进程和子进程通过双向 WCF 管道进行监控。如果子进程终止或父进程相互终止,则会收到通知。 还有一个调试器助手可用,它会自动将 VS 调试器附加到启动的子进程

    项目地点:

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

    NuGet 包:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-24
        • 2012-03-04
        • 1970-01-01
        相关资源
        最近更新 更多