ASP.NET Web api,同一主机名下的多个应用程序

时间:2016-04-07 12:17:58

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

假设我有多个内部ASP.NET web api应用程序。即

我想在通用主机名下公开这些不同的服务

我正在考虑这种设置的原因是允许每个服务运行不同的中间件集,但为客户端提供统一的URL结构以供使用。然后,每个服务都可以独立升级。

理想情况下,这应该使用最新版本的ASP.NET并可能托管在Service Fabric上。它不必在新的核心堆栈上运行,完整的.NET框架是可以接受的。

我已经读过WebListener支持端口共享,所以这是我正在考虑的事情。

建议?

2 个答案:

答案 0 :(得分:1)

是的,您可以使用Service Fabric中的ASP.NET应用程序执行此操作:

service 1: http://something.com/service1/bob/bill
service 2: http://something.com/service2/pete
service 3: http://something.com/service3/dancing/dragon

只要您使用支持端口共享的Web堆栈即可。在Windows上,这意味着使用使用http.sys内核驱动程序的Web堆栈。以下是Service Fabric上当前可用于ASP.NET的Web托管选项:

  • ASP.NET Core 1中的WebListener主机基于使用http.sys的HttpListener,因此可以使用。
  • ASP.NET Core 1中的Kestrel并非基于http.sys,据我所知,它不支持端口共享,因此无法工作。
  • Katana使用HttpListener,因此也可以使用。

答案 1 :(得分:0)

即使在Azure Fabric中,每个服务都应具有不同的端口 - 端口共享可用于服务副本(statefull)或同一服务的多个实例(无状态)。 https://azure.microsoft.com/en-us/documentation/articles/service-fabric-service-manifest-resources/

拥有统一URL结构的常用方法是创建Api Gateway,它将调用其他服务。 http://microservices.io/patterns/apigateway.html