对于我的AngularJS Web应用程序,我使用Azure Service Fabric作为后端。为此,我创建了一个无状态的Web api服务。
我是否必须将前端/客户端AngularJS代码放入相同的应用程序类型或相同的无状态服务中?为Web ui创建另一个无状态服务有用吗?
正如其他人提到的那样,您可以在任何喜欢的地方托管Angular Web应用程序。Service Fabric在这方面没有施加任何限制。
就是说,在您的情况下,一个简单的解决方案是使前端Web应用程序和Web api处于同一无状态服务中。基本上,您将其视为常规的旧ASP.NET MVC应用程序,而ASP.NET MVC使得在同一MVC项目中拥有API和Web UI变得相当容易。这是几个例子:
具有API和UI的ASP.NET 5 MVC应用程序:https : //github.com/Azure-Samples/service-fabric-dotnet-getting-started/tree/master/Services/Chatter
单页jQuery应用程序,其API由Katana自托管:https://github.com/Azure-Samples/service-fabric-dotnet-management-party-cluster/tree/master/PartyCluster
关于为什么您需要Service Fabric托管前端文件的问题。这里需要权衡。假设前端是一个Web应用程序,该应用程序将成为较大的Service Fabric应用程序的一部分-正如您所遇到的情况-最好使用同一SDK上的一组工具,以相同的部署过程将所有内容都放在一个位置托管在同一群集上,而不是为应用程序的一部分提供完全独立的流程,工具,SDK和托管环境。您还可以获得所有Service Fabric优势,例如滚动升级,运行状况监视,高可用性和自动故障转移等。缺点是您没有像Azure这样的Web应用程序获得超级易于使用的工具应用服务。