Service Fabric刚刚在构建会议上宣布。我正在阅读有关它的稀缺文档,我有一个问题。
我正在评估Service Fabric以托管CRUD,就像目前在ASP.NET WebApi中构建的微服务一样。
Service Fabric是否主要用于托管接收数据,处理数据并返回结果的小功能,而不是托管CRUD WebApi类型的应用程序?
答案 0 :(得分:10)
Service Fabric可以创建无状态和有状态的微服务。
顾名思义,如果节点发生故障,由无状态服务实例维护的任何状态都将丢失。一个新的,新的实例将简单地在集群中的其他地方旋转。
有状态服务提供了在不依赖外部存储的情况下持久保存状态的能力。存储在Reliable Collection中的任何数据都将自动复制到群集中的多个节点上,从而确保状态对故障具有弹性。
一种常见的模式是使用无状态服务作为应用程序的面向客户端的网关,然后让该服务将流量引导到应用程序的分区有状态服务。这隐藏了从客户端解析分区的工作,允许它们针对所有请求定位一个逻辑端点。
请查看WordCount sample以获取有关其工作原理的示例。 WordCount.WebService无状态服务充当应用程序的前端。它只是根据传入的请求解析分区,然后将其发送。 WordCount.Service有状态服务(基于单词的第一个字母分区)立即将这些传入请求放入ReliableQueue中,然后在后台处理它们,将结果存储在ReliableDictionary中。
有关详细信息,请参阅Reliable Services Overview。
注意:目前,向客户端公开WebAPI端点的最佳方法是在无状态服务中自托管OWIN服务器。很快就会支持ASP.NET 5项目。
答案 1 :(得分:0)
此视频回答了我自己的问题:http://channel9.msdn.com/Events/Build/2015/2-704。总之,我们应该使用无状态服务来托管基于ASP.NET的站点或将数据保存到外部数据存储的API。
答案 2 :(得分:0)
如果您没有州(或外部拥有州),则无国籍服务是开始的方式。
对原始问题的回答是“两者”。基本上,任何具有main()函数(具有几个与Service Fabric交互的扩展契约方法)的东西都可以是Service Fabric世界中的服务。