在同一工作进程中运行ASP.NET WebForms项目和WebAPI项目



有没有一种优雅的方法可以在同一个工作进程中同时运行来自两个独立的ASP.NET web项目的代码?

背景

我的团队维护一个大型ASP.NET WebForms应用程序。我们还在开发使用API的Android/iOS应用程序,我们使用微软新的WebAPI框架构建了该应用程序。

WebForms应用程序和API目前在IIS中设置为单独的站点,但这不是一个可行的长期解决方案。我们的应用程序处理多个租户,每个租户都有一个不同的数据库。我们大量使用NHibernate,每个客户端都需要自己的重SessionFactory对象。因此,WebForms应用程序占用了大量内存,并且将API作为单独的IIS站点运行基本上会使每个客户端所需的内存增加一倍。

在WebForms应用程序中托管API应能够共享NHibernate资源并减轻内存压力。

目前,web应用程序和API位于不同的解决方案文件中,但它们都有一个指向通用业务逻辑/数据访问项目Core的链接。

我们的web应用程序解决方案如下(简化):

MyWebFormsApplication
- Core
- WebFormsProject
- AnotherProject
- AnotherProject1
- AnotherProject2
- AnotherProject3

我们的API解决方案如下:

MyAPI
- Core
- WebAPIProject

理想情况下,我希望Webforms应用程序和API能够在同一个解决方案中共存:

MyHappyCombinedApplication
- Core
- WebFormsProject
- WebAPIProject
- AnotherProject
- AnotherProject1
- AnotherProject2
- AnotherProject3

选项

我们可以在WebForms项目中添加每个API文件作为链接,但这将是一个主要的维护麻烦。

我唯一能想到的其他选择就是完全放弃单独的API项目,合并API和WebForms项目。

我更愿意将API保留在自己的项目中的原因是,我们可以继续从一个较小的解决方案文件中开发API,该文件没有我们主要解决方案的所有额外负担,这意味着更快的构建。

这是否可行?

这是一篇相当古老的帖子,不确定它是否仍然相关-但我现在才遇到这个问题-这是我的建议:

我建议您将WebForms转换为webApp——这是一个相当简单且非常健壮的过程(我已经做过几次了)。

一旦webforms成为webApp,您就可以在同一网站下的同一工作IIS进程中使用它运行其他应用程序,这不会使您的内存翻倍。

如果你需要更多细节,请告诉我。

最新更新