有没有一种优雅的方法可以在同一个工作进程中并排运行来自两个单独的 ASP.NET Web 项目的代码?
背景
我的团队维护一个大型 ASP.NET WebForms 应用程序。我们还在开发使用 API 的 Android/iOS 应用程序,该 API 是我们使用 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,该文件没有我们主要解决方案的所有额外包袱,这意味着更快的构建。
这甚至远程可行吗?