VS 2015 更新 2 中服务结构中的有状态 Web API 服务

Stateful Web API service in service fabric in VS 2015 update 2

目前 VS 2015 Update 2 提供了一种使用为服务结构应用程序创建新服务模板来创建基于 owin 的无状态 Web api 服务的简单方法。为什么只提供无状态 web api 服务模板而不提供有状态 web api 服务?如果我愿意,是否可以修改无状态 Web api 服务以派生自有状态 Web 服务?就这么简单吗?或者这种方法有什么问题吗?

Web Api 旨在成为 facade/public Service Fabric 应用程序的入口点。无状态可以让客户免于解决 partitions/addresses 和其他麻烦。

如果您愿意 - 您可以修改 Web api 服务并使其有状态。也许从模板创建有状态服务会更容易,安装缺少的包(web api 模板有),复制 OwinCommunicationListenerStartup,将它们连接到 CreateServiceReplicaListeners覆盖,并将有效的服务端点添加到 ServiceManifest.xml。 OwinCommunicationListener 将为每个副本提供唯一地址。

是的,您当然可以将其修改为有状态的。 Web API 非常适合内部服务到服务的通信以及面向 public 的 API。

我们目前正在处理一个警告:无状态的 Web 主机使用 Kestrel,这给多个副本共享同一进程的有状态服务带来了一些困难,因为 Kestrel 没有相同的端口共享基于 http.sys 的主机所具有的功能。我们正在研究一种解决方案,可以更轻松地将 Kestrel 用于有状态,但与此同时,您始终可以使用 WebListener 主机,即基于 http.sys 的主机。

如果您有兴趣,我正在开展一个项目,该项目将包含 ASP.NET Core 1 有状态服务(以及其他很酷的东西),您可以在此处跟踪:https://github.com/vturecek/service-fabric-xray