Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 如何使用可更新缓存实现存储库模式_Design Patterns_Repository_Domain Driven Design - Fatal编程技术网

Design patterns 如何使用可更新缓存实现存储库模式

Design patterns 如何使用可更新缓存实现存储库模式,design-patterns,repository,domain-driven-design,Design Patterns,Repository,Domain Driven Design,我正在努力在项目中应用存储库模式 要求并不复杂: 1.当客户机从服务器请求某些实体列表时,客户机会将其保存到本地数据库以进行缓存。 2.如果有缓存,客户端应该使用它们(在过期时间内)。 3.当客户机收到诸如刷新数据之类的用户操作或收到一些通知时,无论本地数据是否过期,客户机都应该从远程服务器更新本地数据 我学习了域实体的存储库模式抽象持久性。 因此,应用程序不需要知道实体来自何处。 (来自服务器或本地数据库等。) 但如何更新存储库隐藏的本地数据? 通过在repository方法参数中添加标志 f

我正在努力在项目中应用存储库模式

要求并不复杂:
1.当客户机从服务器请求某些实体列表时,客户机会将其保存到本地数据库以进行缓存。 2.如果有缓存,客户端应该使用它们(在过期时间内)。 3.当客户机收到诸如刷新数据之类的用户操作或收到一些通知时,无论本地数据是否过期,客户机都应该从远程服务器更新本地数据

我学习了域实体的存储库模式抽象持久性。
因此,应用程序不需要知道实体来自何处。 (来自服务器或本地数据库等。)

但如何更新存储库隐藏的本地数据?
通过在repository方法参数中添加标志

fun get(id: EntityId, update: Boolean)
但我认为这揭示了实现细节。

存储库是否应该侦听域事件,如
UpdateEntityRequested

我相信你回答了自己的问题。您必须以某种方式向客户端缓存指示它应该更新。这就是说,如果您通过域中的事件引入它,那么您仍然将域绑定到持久性概念中

好消息是,您可以简单地说,如果聚合有任何事件,那么您应该更新回服务器。它不一定是一个特定的事件。流中的任何事件都足以确定发生了更改


如果此答案不充分,请提供更多详细信息。

谢谢您的回复。我发现我在应用架构时犯了一个错误。对于我的应用程序,域逻辑出现在服务器中。因此,存储库只是一个缓存处理程序。我决定从服务器获取一个实体并将其保存到存储库中。