如何在基于 Service Fabric ASP.NET 5 的服务中扩展从 StatelessService 派生的类?
Posted
技术标签:
【中文标题】如何在基于 Service Fabric ASP.NET 5 的服务中扩展从 StatelessService 派生的类?【英文标题】:How do I extend class derived from StatelessService in Service Fabric ASP.NET 5 - based service? 【发布时间】:2016-05-30 07:10:12 【问题描述】:有没有办法从基于 ASP.NET 5 的服务订阅参与者事件?我在 service-fabric-dotnet-data-streaming-websockets 示例中看到了类似的功能,但该示例使用基于 OWIN 的 Web 服务,并且它具有派生自 StatelessService
的 PublicGateway
类,其中可以挂钩到服务 Task RunAsync
覆盖。我在基于 ASP.NET 5 的项目代码中没有找到任何 StatelessService
派生类型。如果查看项目 ServiceManifest.XML,似乎它是自动生成的?
我试图实现的目标与示例相同 - 我想订阅来自参与者服务的事件以通过 SignalR 集线器发布它们。
【问题讨论】:
【参考方案1】:您看到的不同之处在于,OWIN(准确地说是 Katana)示例是一个 Service Fabric Reliable Service - 一种在 Service Fabric API 上编写的服务 - 它使用 Katana 打开 HTTP 侦听器。您看到的 ASP.NET 5(现在称为 ASP.NET Core 1)项目就是我们所说的“来宾主机”,它是由 Service Fabric 托管的单独 EXE,但不实现任何 Service Fabric API。目前这样做的原因是因为当前的 ASP.NET Core 1 托管模型使得我们很难像使用 Katana 那样以编程方式打开 Web 服务器。
但是,这种情况正在改变。即将推出的 ASP.NET Core 1 RC2 将让您以编程方式轻松启动 Web 服务器,类似于我们使用 Katana 的方式,因此您可以在 Service Fabric API 上编写服务并打开 ASP.NET Core 1 服务器服务。以下是使用 RC2 构建的示例:https://github.com/weidazhao/Hosting
也就是说,您不一定需要在 Reliable Service 中才能挂接到 actor 事件。集群中运行的任何代码都可以通过拉入 Reliable Actors NuGet 包 (Microsoft.ServiceFabric.Actors) 并使用 ActorProxy API 来实现。您可以在来宾主机服务中执行此操作,只是不会将 RunAsync 作为入口点来执行此操作。
【讨论】:
嗯,Guest Host 是有道理的。 但是您能否详细说明从 ASP.NET 5 项目代码订阅事件?因为我尝试在服务器启动代码中这样做,但无法从我的 Actor 接收事件。而且我对订阅例如更加好奇。控制器代码。最终,当事件引发时,我怀疑 Fabric 应该找到订阅者分区,将事件发送到侦听器端口,并且应该始终有正在运行的进程在分区进程中侦听端口。这在 Guest Host 案例中是否可行? 只要Guest Host在同一个集群中运行应该是可以的。按照本指南订阅演员事件。请注意,该指南并不假定订阅者本身就是任何类型的服务。它只需要是一些继承了具有事件契约的 IActorEvents 接口的类。 azure.microsoft.com/en-us/documentation/articles/…以上是关于如何在基于 Service Fabric ASP.NET 5 的服务中扩展从 StatelessService 派生的类?的主要内容,如果未能解决你的问题,请参考以下文章
Azure Service Fabric 中 ASP.NET Core 应用程序中的 WebpackDevMiddleware
ASP.NET Core 404 响应中的 Service Fabric 反向代理集成
用于 asp.net 核心的 Service Fabric 中 docker 中的 HTTPS 不起作用
在 Azure Service Fabric 中,无状态 Web API 和 ASP.NET Core Web API 之间有啥区别?