首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Orleans中使用存储提供程序

如何在Orleans中使用存储提供程序
EN

Stack Overflow用户
提问于 2017-07-25 11:48:29
回答 2查看 887关注 0票数 0

我是奥尔良的新手。我想知道如何使用Orleans的谷物存储功能。我应该像使用消息队列一样使用它吗?它是否临时存储我的状态,并保持数据可用,即使它抛出异常或服务器崩溃。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2017-08-24 19:49:15

当您调用base.WriteStateAsync()时,扩展Grain<T>类并使用[StorageProvider]属性注释的Grains会将其当前状态写入指定的提供者。

如果颗粒由于任何原因被停用(包括服务器崩溃),那么在重新激活时,颗粒将被初始化为上次保存的状态。

我喜欢把它看作一个缓存,而不是一个队列。希望这会有帮助,就像前面的帖子说的那样,阅读文档,它是有用的。

票数 1
EN

Stack Overflow用户

发布于 2017-09-04 02:23:08

我写了几篇文章,指导你一步一步地习惯Storage Provider API并设置你的持久化存储:

  • Introduction to Grain Persistence with Microsoft Orleans
  • Orleans Grain Persistence with the ADO .NET Storage Provider

基本上,Orleans为您提供了一个非常简单的API (图片取自上面的第一篇文章):

您的粒度将从Grain<T>继承,其中T是您自己的类,其中包含您想要持久化的状态。Grain<T>中的State属性允许您访问它并读取/修改状态。其余的async方法允许您将更改保存到持久性存储、读回更改或清除状态。您通常不需要读取状态;它是在颗粒被激活时自动完成的。

不涉及消息队列。当您调用这三个方法中的一个时,它们将使用底层存储提供程序与您正在使用的任何数据库通信。这可能会由于特定于存储的错误(例如死锁)或由于乐观并发控制检查失败所导致的InconsistentStateException而失败。

您决定使用的任何存储(例如SQL Server、Azure Table Storage、in-memory等)都必须通过XML配置或代码进行配置,并指定一个名称。这个名称随后被用在一个[StorageProvider]属性中,该属性遍历grain类;通过这种方式,grain知道在进行持久化工作时使用哪个存储提供程序(您的系统中可能有多种存储提供程序)。

所有这一切是如何完成的细节在这里包含有一点冗长(这就是为什么我写了关于这个主题的文章)。您可以在上面链接的我的文章或Grain Persistence文档中找到有关这方面的更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45293588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档