网络 Api 和网络 ui 在同一个 application/service

Web Api and web ui in same application/service

对于我的 AngularJS Web 应用程序,我使用 Azure Service Fabric 作为我的后端。为此,我创建了一个无状态网络 api 服务。

是否必须将前端/客户端 AngularJS 代码放在相同的应用程序类型或相同的无状态服务中?为网络创建另一个无状态服务有用吗ui?

正如其他人所提到的,您可以在任何您喜欢的地方托管您的 Angular 网络应用程序; Service Fabric 在这方面没有施加任何限制。

也就是说,在您的情况下,一个简单的解决方案是让您的 front-end 网络应用程序和您的网络 api 在同一个无状态服务中。基本上,您将其视为常规的旧 ASP.NET MVC 应用程序,并且 ASP.NET MVC 使得在同一个 MVC 项目中拥有 API 和 web UI 相当容易。这里有几个例子:

ASP.NET 5 MVC 应用程序,带有 API 和 UI:https://github.com/Azure-Samples/service-fabric-dotnet-getting-started/tree/master/Services/Chatter

Single-page jQuery 带有 API self-hosted 和 Katana 的应用程序:https://github.com/Azure-Samples/service-fabric-dotnet-management-party-cluster/tree/master/PartyCluster

关于为什么需要Service Fabric来托管一个front-end文件的问题。这里有trade-offs。假设 front-end 是一个 Web 应用程序,它是一个更大的 Service Fabric 应用程序的一部分——就像你的情况一样——最好在同一个 SDK 上使用一组工具将所有内容放在一个地方托管在同一集群上的部署过程,而不是为应用程序的一部分使用完全独立的过程、工具、SDK 和托管环境。您还可以获得 Service Fabric 的所有好处,例如滚动升级、健康监控、高可用性和自动故障转移等。缺点是您没有获得 Azure 附带的用于 Web 应用程序的超级 easy-to-use 工具应用服务。