我有一个C#应用程序(foo),我从中调用另一个C#应用程序(bar)。目前我通过使用C#的Process类创建新进程来从foo应用程序调用bar应用程序。
最近我开始了解.net AppDomains。我想知道使用AppDomain而不是进程是否有任何性能优势?
谢谢和问候,
答案 0 :(得分:2)
在Windows中,仅仅创建一个新进程有一些非微不足道的开销,是的。这就是为什么CGI在Windows上的表现不如在其他操作系统上表现得那么好(而且是开发FastCGI的一个重要原因)
但是,我会问您多久会创建一些额外的“工作”?如果它会非常频繁,有没有理由你不能简单地使用线程池线程?如果它根本不会频繁发生,那么与您花费时间计算如何使其发挥作用相比,您获得的好处将是微不足道的。
IMO,单独的AppDomains往往会有一些特定情况需要在整个进程或简单线程上使用它们。通过这种方式或其他方式通常会更好。
答案 1 :(得分:0)
在.net框架中创建进程不是托管进程,CLR必须咨询底层操作系统以启动新进程,并且启动新进程有一些已定义的步骤,因此可能会有一些性能下降但是有多少,没有测量。
但是,如果您将DLL加载到新的AppDomain中,那将在您的应用程序进程中,并且不需要完整的Flash进程集。
这取决于你,你好吗