View CQRS:我的视图存储使用什么后端?

View CQRS:我的视图存储使用什么后端?,view,azure,cqrs,View,Azure,Cqrs,我的基于CQRS的体系结构目前有4个组件。它更像是一个原型,所以还没有什么是一成不变的 CommandProcessor:获取命令、执行命令等(duh^^), 发布事件。是基于Azure的吗 视图处理器:获取视图请求, 以视图进行响应。订阅事件以更新视图存储。是 基于Azure的 WebClient:AJAX重型web门户,发送命令和 请求(json-)视图。基于Azure的 桌面客户端:没什么好说的, 还发送命令和请求视图(如果是json或其他视图,则尚未确定) 其他格式)。显然不是基于az

我的基于CQRS的体系结构目前有4个组件。它更像是一个原型,所以还没有什么是一成不变的

  • CommandProcessor:获取命令、执行命令等(duh^^), 发布事件。是基于Azure的吗
  • 视图处理器:获取视图请求, 以视图进行响应。订阅事件以更新视图存储。是 基于Azure的
  • WebClient:AJAX重型web门户,发送命令和 请求(json-)视图。基于Azure的
  • 桌面客户端:没什么好说的, 还发送命令和请求视图(如果是json或其他视图,则尚未确定) 其他格式)。显然不是基于azure的
我最初的方法是使用InMemory Viewstore。Azure虚拟机有相当多的可用内存,我认为没有必要添加复杂的Blob存储等。 此外,我正在尝试最小化命令执行延迟,以至少部分地解决整个异步UI问题,这样我就可以(在需要的地方)模拟带有(快速)回调的同步UI(我希望这句话有意义^^)

在创建web客户端时,我注意到我的计划中存在一个潜在的缺陷。ViewProcessor的url明显不同于WebClient url,因此json请求会因为相同的源策略而失败。像jsonp这样的替代方案/解决方案似乎没有那么吸引人,因为它们无法解决固有的安全问题。实现以WebClient本身为目标的ajax请求将是一个选项,但这样我就有了冗余的功能(WebClient和viewprocessor中的视图存储)

我想将视图保存在blob存储中可以解决这个问题,但我无法摆脱忽略重要/明显内容的感觉

Client --command-- CommandProcessor CommandProcessor --event-- ViewProcessor ViewProcessor --view-- Blob (ViewProcessor or CommandProcessor) --notification-- Client Blob --view-- Client 客户机--命令--命令处理器 CommandProcessor--事件--视图处理器 ViewProcessor--view--Blob (ViewProcessor或CommandProcessor)--通知--客户端 Blob——视图——客户端
这种情况会有相当大的延迟:|

我会再次查看blob存储选项。我们将序列化视图对象存储在blob存储中,它非常快速和稳定。blob存储是否有一些方面与您有关


Erick

从那时起,我也转而使用基于blob的方法来存储视图。支持和反对内存视图存储的争论层出不穷,但就目前而言,基于blob的存储似乎更容易。但出于特定的有界上下文或性能原因(为了“可搜索的东西”),我可能会重新考虑内存中的想法。