如何部署具有多个项目的单个解决方案?

How to deploy a single solution with multiple projects?

我使用 WebAPI 和 AngularJS 开发了一个解耦良好的网站,如下所示:

SOLUTION
  |—— WEB.API Project  
  |—— Website pages Project
  '—— Other projects related to functionalities

这个设置是在我自己的电脑上。

现在我想部署到我的 Web 服务器(iis 7.5,私有,已安装 WebDeploy)。可以将两个项目部署在一个网站上吗? (其他项目是 class 个库,所以没有麻烦)

据我所知,我必须将 WebAPI 部分部署到一个网站,并将 UI 部分部署到另一个网站。我可以将它们放在一个网站上吗?

您可以将 Web API 项目放在主网站下的虚拟目录中。这就是我们在当前项目中实际做的事情。

可以,但是当文件冲突时你应该担心。例如,如果两个项目都有一个 web.config,这可能会破坏其中一个。

如果没有,应该可以,但我不会立即推荐它。我会将它们拆分到单独的虚拟目录中,这样您就可以轻松地维护这两个单独的项目。

我有一个几乎相同的项目设置。我个人选择了 2 个单独的应用程序,我有一个带负载平衡器的多服务器设置 - 如果我有一个服务器或预期流量较低,选择可能会有所不同。

这样的好处是: 我预计我的 WebAPI 比网页有更多的流量,因为移动客户端也使用 WebAPI 以及前端网页。因为 API 在它自己的网站上,它有自己的应用程序池——这意味着每个应用程序都有自己的资源池(应用程序可以增长以使用更多内存并且 CPU 更好),而不是像共享他们将在虚拟目录中。

缺点: 因为有两个单独的应用程序池,所以我将一个绑定到端口 80,另一个绑定到端口 8080。因为我有一个大型服务器场来部署它,所以我已经在网络服务器前面有一个负载平衡器 - 因此URL 漂亮(即从 URL 中删除端口 8080)我添加了一个负载均衡器配置以允许流量进入端口 80 上给定的 url 并重定向到端口 8080在内部网络服务器上。如果您不介意 URL 中的端口,这不是真正的问题。

您还可以使用 OWIN自托管 Web API,这样您就不需要在 IIS 等中设置项目然后你可以让多个客户与同一个 API.

交谈

有一个更高级的教程here