C# 同一应用程序/服务中的Web Api和Web ui

C# 同一应用程序/服务中的Web Api和Web ui,c#,angularjs,azure,asp.net-web-api,azure-service-fabric,C#,Angularjs,Azure,Asp.net Web Api,Azure Service Fabric,对于我的AngularJS web应用程序,我使用Azure Service Fabric作为后端。为此,我创建了一个无状态web api服务 我是否必须将前端/客户端AngularJS代码放在相同的应用程序类型或相同的无状态服务中?为web ui创建另一个无状态服务有用吗?正如其他人所提到的,您可以在任何地方托管Angular web应用程序;服务结构在这方面没有施加任何限制 也就是说,在您的情况下,一个简单的解决方案是将前端web应用程序和web api放在同一个无状态服务中。基本上,您将其

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


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

正如其他人所提到的,您可以在任何地方托管Angular web应用程序;服务结构在这方面没有施加任何限制

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

具有API和UI的ASP.NET 5 MVC应用程序:

单页jQuery应用程序,带有Katana自托管的API:


至于为什么需要ServiceFabric来承载前端文件的问题。这里有权衡。假设前端是一个web应用程序,它是一个更大的Service Fabric应用程序的一部分-就像您的情况一样-在同一个集群上托管相同部署过程的同一SDK上使用一组工具将所有东西都放在一个地方,而不是拥有一个完全独立的过程、工具、SDK,以及应用程序某一部分的托管环境。您还可以获得所有的服务结构优势,如滚动升级、运行状况监视、高可用性和自动故障切换等。缺点是您没有为web应用程序提供超级易于使用的工具,例如Azure应用程序服务。

我建议部署(或管理)AngularJS代码位于完全不同的项目中,例如Azure WebApp,而不是将其中一个用于服务结构。@Youngjae我想使用两个不同的项目。但我不知道在Azure Service Fabric中创建两个独立的无状态服务来分离这些东西是否可能或有用。为什么前端文件需要Fabric?不要这样做。@Mikhail我使用微服务框架“Azure服务结构”来创建微服务应用程序。对于该应用程序,我还提供了一个web api服务。作为前端,我使用angularJS。我的问题是,我是否可以或应该将web api代码和前端代码放在同一个服务中?@CPA我理解你的问题,但你没有回答我的问题。事实上,你使用Fabric并不意味着你必须在所有事情上都使用它,即使是为静态JS文件提供服务……我也将在ServiceFabric中托管前端应用程序。如果我为API使用一个无状态服务,为前端应用程序使用一个无状态服务,是否存在性能问题?据我所知,没有问题。如果两个服务具有非常不同的性能特征,您实际上可以通过将每个服务限制为一组单独的节点来提高性能。但是如果我想使用两个服务,一个用于api,一个用于前端ui,那么我确实需要两个OwinCommunicationListener,对吗?每种服务一个。但是我会遇到问题,因为它们都在同一个端口上侦听!?