服务结构中是否也可以直接 RESTful 提供可靠的服务(不是单独的基于 owin 的控制器)?
Can reliable service be directly RESTful also (not a separate owin based controller) in service fabric?
Visual studio 2015 Update 2 提供了一个模板,用于在服务结构中编写基于 owin 的控制器。创建的结构向您显示无状态可靠服务和基于 owin 的控制器作为 2 个不同的 C# classes。这行得通。在这种情况下,可靠服务 class 只需注册一个 http 侦听器,所有调用都将路由到控制器 class。在某种程度上,无状态可靠服务一经创建便不在画面中,仅在服务启动期间有用。
我期待看到可靠的服务和基于 owin 的控制器,它们是一样的。目前的结构似乎是一个补丁工作。
如果我要将无状态可靠服务更改为有状态可靠服务,我实际上无法对有状态服务做任何事情,因为我的请求被路由到控制器。如果我要在我的控制器中与状态管理器进行交互,那么我必须获得对有状态服务的引用,然后再做我的事情。感觉很别扭。
有更简洁的方法吗?
该服务是您的应用程序容器。服务基础 类(StatefulService 和 StatelessService)是您应用程序的入口点。您可以直接在那些 类 中聚会并让您的所有代码都在那里,或者您可以使用该入口点到 bootstrap 一些其他应用程序框架,例如 ASP.NET MVC,或 Reliable Actors , 管他呢。 Service Fabric 通过服务基础 类(例如,ServiceContext、用于有状态服务的 IReliableStateManager 等)提供所有平台依赖项,如果那是您的代码,您也可以直接在那些 类 中使用它们是,或者您可以将这些依赖项传递给其他一些应用程序框架。
对于 ASP.NET,我们将该服务用于 bootstrap 基于 OWIN 的 Web 服务器(Katana、Kestrel、WebListener),然后我们向其提供应用程序中间件(MVC、StaticFiles 等)。 ).然后,您可以使用您最喜欢的依赖注入框架(Unity、Autofac、Ninject 或 ASP.NET Core 的内置依赖注入框架)将所有平台依赖项传递到中间件。
下面是使用 Unity 和 Katana 执行此操作的有状态服务示例:https://github.com/Azure-Samples/service-fabric-dotnet-getting-started/tree/master/Services/WordCount/WordCount.Service
Visual studio 2015 Update 2 提供了一个模板,用于在服务结构中编写基于 owin 的控制器。创建的结构向您显示无状态可靠服务和基于 owin 的控制器作为 2 个不同的 C# classes。这行得通。在这种情况下,可靠服务 class 只需注册一个 http 侦听器,所有调用都将路由到控制器 class。在某种程度上,无状态可靠服务一经创建便不在画面中,仅在服务启动期间有用。
我期待看到可靠的服务和基于 owin 的控制器,它们是一样的。目前的结构似乎是一个补丁工作。
如果我要将无状态可靠服务更改为有状态可靠服务,我实际上无法对有状态服务做任何事情,因为我的请求被路由到控制器。如果我要在我的控制器中与状态管理器进行交互,那么我必须获得对有状态服务的引用,然后再做我的事情。感觉很别扭。
有更简洁的方法吗?
该服务是您的应用程序容器。服务基础 类(StatefulService 和 StatelessService)是您应用程序的入口点。您可以直接在那些 类 中聚会并让您的所有代码都在那里,或者您可以使用该入口点到 bootstrap 一些其他应用程序框架,例如 ASP.NET MVC,或 Reliable Actors , 管他呢。 Service Fabric 通过服务基础 类(例如,ServiceContext、用于有状态服务的 IReliableStateManager 等)提供所有平台依赖项,如果那是您的代码,您也可以直接在那些 类 中使用它们是,或者您可以将这些依赖项传递给其他一些应用程序框架。
对于 ASP.NET,我们将该服务用于 bootstrap 基于 OWIN 的 Web 服务器(Katana、Kestrel、WebListener),然后我们向其提供应用程序中间件(MVC、StaticFiles 等)。 ).然后,您可以使用您最喜欢的依赖注入框架(Unity、Autofac、Ninject 或 ASP.NET Core 的内置依赖注入框架)将所有平台依赖项传递到中间件。
下面是使用 Unity 和 Katana 执行此操作的有状态服务示例:https://github.com/Azure-Samples/service-fabric-dotnet-getting-started/tree/master/Services/WordCount/WordCount.Service