如何使用多个项目部署单个解决方案?

时间:2015-05-19 07:24:59

标签: asp.net angularjs iis asp.net-web-api

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

Runtime rt = Runtime.getRuntime();
String[] commands = {"emulator", "-avd", "jenkins", 
                    "-scale", "96dpi", "-dpi-device", "100"};
Process proc = rt.exec(commands);

BufferedReader stdInput = new BufferedReader(new 
     InputStreamReader(proc.getInputStream()));

BufferedReader stdError = new BufferedReader(new 
     InputStreamReader(proc.getErrorStream()));

// read the output from the command
System.out.println("Here is the standard output of the command:\n");
String s = null;
while ((s = stdInput.readLine()) != null) {
    System.out.println(s);
}

// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
    System.out.println(s);
}

此设置在我自己的计算机上。

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

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我有一个几乎相同的项目设置。我个人选择了2个独立的应用程序,我有一个带有负载均衡器的多服务器设置 - 如果我有一台服务器或者预期的流量很少,那么选择可能会有所不同。

这提供了优势: 我预计我的WebAPI会比网页拥有更多的流量,因为移动客户端也会使用WebAPI以及前端网页。因为API在自己的网站中,所以它有自己的应用程序池 - 这意味着每个应用程序都有自己的资源池(应用程序可以增长以使用更多的内存和更好的CPU),而不是像在虚拟目录中那样共享。

<强>缺点: 因为有两个独立的应用程序池,我有一个绑定到端口80,另一个绑定到端口8080.由于我有一个大型服务器场来推动它,我已经在Web服务器前面有一个负载均衡器 - 因此要制作URL漂亮(即从URL中删除端口8080)我添加了一个负载均衡器配置,允许流量进入端口80上的给定URL,并被重定向到内部Web服务器上的端口8080。如果您不介意网址中的端口,这不是一个真正的问题。

答案 3 :(得分:1)

您还可以使用OWIN 自行托管 Web API,因此您不需要在IIS等中设置项目,然后您可以让多个客户端与之交谈相同的API。

有一个更高级的教程here