【问题标题】:Web Api and web ui in same application/service同一应用程序/服务中的 Web Api 和 Web ui
【发布时间】:2016-04-14 21:49:12
【问题描述】:

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

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

【问题讨论】:

  • 我建议在完全不同的项目(例如 Azure WebApp)中部署(或管理)AngularJS 代码,而不是放置其中一个 Service Fabric 的东西。
  • @Youngjae 我想使用两个不同的项目。但我不知道在 Azure Service Fabric 中创建两个独立的无状态服务来分离这些东西是否可行或有用。
  • 前端文件为什么需要Fabric?不要那样做。
  • @Mikhail 我使用微服务框架“Azure Service Fabric”来创建微服务应用程序。对于那个应用程序,我也有一个 web api 服务。作为前端,我使用 angularJS。我的问题是,我是否可以或应该将 web api 代码和前端代码放在同一个服务中?
  • @CPA 我明白你的问题,但你还没有回答我的问题。您使用 Fabric 的事实并不意味着您必须将它用于所有事情,甚至用于提供静态 JS 文件...

标签: c# angularjs azure asp.net-web-api azure-service-fabric


【解决方案1】:

正如其他人所提到的,您可以在任何您喜欢的地方托管您的 Angular 网络应用程序; 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

带有自托管 API 的单页 jQuery 应用程序:https://github.com/Azure-Samples/service-fabric-dotnet-management-party-cluster/tree/master/PartyCluster

关于为什么需要 Service Fabric 来托管前端文件的问题。这里有取舍。假设前端是一个 Web 应用程序,它是一个更大的 Service Fabric 应用程序的一部分 - 就像你的情况一样 - 使用同一 SDK 上的一组工具和相同的部署过程将所有东西放在一个地方是很好的托管在同一个集群上,而不是为您的应用程序的一部分拥有完全独立的进程、工具、SDK 和托管环境。您还可以获得 Service Fabric 的所有优点,例如滚动升级、运行状况监控、高可用性和自动故障转移等。缺点是您无法获得用于 Web 应用程序的超级易用工具,例如 Azure应用服务。

【讨论】:

  • 我还将在 Service Fabric 中托管前端应用程序。如果我对 API 使用一种无​​状态服务,对前端应用使用一种无​​状态服务,是否会出现性能问题?
  • 没有我知道的问题。如果两个服务具有非常不同的性能特征,您实际上可以通过将每个服务限制在一组单独的节点上来提高性能,这些节点旨在满足这些特征。
  • 但是如果我想使用两个服务,一个用于api,一个用于前端ui,那么我确实需要两个OwinCommunicationListener 对吗?每个服务一个。但是我会遇到问题,因为两者都在同一个端口上监听!?
猜你喜欢
  • 2013-10-16
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 2018-06-24
  • 2016-06-05
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
相关资源
最近更新 更多