在 dapr 中使用 ORM

Using ORM in dapr

目前正在学习Dapr,觉得它对微服务开发很强大,但是看多了,发现了一些局限性,其中最重要的就是“状态管理”。

我们如何使用 EF Core 或 Dapper 等工具与 Dapr 中的数据库进行交互? DaprClient class 是与数据库交互的唯一方式吗?

您应该继续将这些 ORM 与 Dapr 一起使用,因为它不能替代它们。 ORM 已经充当关系存储数据的转换层(存储库层)。状态管理是简单的 KVP 存储,具有一些最小的查询能力。将您的状态想象成一个 Dictionary,其中 object 可以是任何简单或复杂的东西。这非常适合 Redis、DynamoDB、MongoDB、Cassandra 等技术。同样,您要放入缓存的内容就是您要放入状态存储的内容。因此,您仍然可以(并且应该)在您的服务中为关系数据使用 ORM,并为提供程序、连接字符串等传入运行时配置,同时能够通过 DaprClient、HTTPClient 或 GRPC 客户端使用 Dapr 的所有其他功能.

奖金,在 EFCore/EF 中有许多提供商,您可以添加跟踪 headers (https://github.com/opentracing-contrib/csharp-netcore),它将无缝地插入 Dapr 免费提供的跟踪中。这样,您将看到整个状态和关系数据的完整 e2e 跟踪