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

时间:2012-10-04 20:43:30

标签: asp.net asp.net-web-api webforms

是否有一种优雅的方法可以在同一个工作进程中并排运行两个独立的ASP.NET Web项目中的代码?

背景

我的团队维护着一个庞大的ASP.NET WebForms应用程序。我们还在开发使用API​​的Android / iOS应用程序,我们使用Microsoft的新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

选项

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

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

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

这甚至可行吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

如果您需要更多详细信息,请与我们联系。