如何在Service Fabric基于ASP.NET 5的服务中扩展从StatelessService派生的类?

时间:2016-02-18 08:12:27

标签: c# asp.net .net asp.net-core azure-service-fabric

有没有办法从基于ASP.NET 5的服务订阅actor事件?我在service-fabric-dotnet-data-streaming-websockets示例中看到了类似的功能,但该示例使用基于OWIN的Web服务,并且它具有从PublicGateway派生的StatelessService类,其中可以挂钩到服务Task RunAsync覆盖。我还没有在基于ASP.NET 5的项目代码中找到任何StatelessService派生类型。看来它是自动生成的,如果要查看项目ServiceManifest.XML?

我试图实现的目标与示例相同 - 我想订阅来自actor服务的事件,以通过SignalR hub发布它们。

1 个答案:

答案 0 :(得分:1)

您所看到的差异是OWIN(Katana,确切地说)示例是Service Fabric Reliable Service(一种在Service Fabric API上编写的服务),它使用Katana打开HTTP侦听器。您看到的ASP.NET 5(现在称为ASP.NET Core 1)项目就是我们所说的“Guest Host”,它是由Service Fabric托管的单独EXE,但不实现任何Service Fabric API。目前以这种方式完成的原因是因为当前的ASP.NET Core 1托管模型难以像编程一样以编程方式打开Web服务器。

但是,这种情况正在改变。即将推出的ASP.NET Core 1的RC2将让您以编程方式轻松启动Web服务器,类似于我们使用Katana的方式,因此您可以在Service Fabric API上编写服务并从中打开ASP.NET Core 1服务器服务。以下是使用RC2构建的示例:https://github.com/weidazhao/Hosting

也就是说,你不一定需要在Reliable Service里面挂钩演员事件。集群中运行的任何代码都可以通过引入Reliable Actors NuGet包(Microsoft.ServiceFabric.Actors)和使用ActorProxy API来实现。您可以在Guest Host服务中执行此操作,您不会将RunAsync作为入口点来执行此操作。