我们有一个 ASP.NET 应用程序,它使用一个 .NET 组件(我们创建),该组件引用了一个看起来很容易泄漏的非托管第三方 COM DLL。第三方 DLL 是一个仅 32 位的组件,在大量使用时会分配大量内存。最终我们遇到了致命错误,需要关闭托管组件的 w3wp 进程(通常通过 IISReset),大概是因为无法在 32 位进程的内存空间中分配更多内存。
我的问题是,是否有一种相对简单的方法可以将我们的 ASP.NET 应用程序和/或 .NET 组件转换为在进程外运行,以便单个实例或实例池将在单独的进程中运行并且 1) 更少受32 位内存限制;和 2) 更能够通过终止主机进程进行清理?我想我可以使用 System.Diagnostics.Process.Create 来创建一个简单的进程外壳,该外壳可以创建并向客户端提供实例。但是我不确定如何在客户端和服务器之间建立连接。也许我必须以某种方式使用 WCF,但是我对如何在进程中汇集对象的控制较少,对吗?只是为了让某些东西在一个单独的进程中运行,这似乎是一个很大的复杂性开销。我们将不胜感激有关最简单路径的建议。
编辑:以前创建进程外 COM 组件不是很简单吗?纯 .NET 中有没有这么简单的东西?