CQRS:我的View-Store使用什么后端?

时间:2012-03-31 13:53:40

标签: view azure cqrs

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

  • CommandProcessor :获取命令,执行命令等。(duh ^^), 发布活动。是基于Azure的
  • ViewProcessor :获取视图请求, 以视图回应。订阅事件以更新视图存储。是 基于Azure
  • WebClient :AJAX密集型门户网站,发送命令和 请求(json-)视图。基于Azure
  • DesktopClient :不多说, 还发送命令和请求视图(如果是json或某些,则未定 其他格式)。显然不是天蓝色的。

我最初的方法是使用InMemory-Viewstore。 Azure虚拟机有相当多的可用内存,我没有真正看到需要添加复杂性Blob-Storage等。 此外,我试图最小化命令执行延迟,以至少部分绕过整个异步UI问题,以便我可以(在需要时)模拟具有(快速)回调的同步UI(我希望句子有意义^^)

在创建Web客户端时,我发现我的计划存在潜在缺陷。 ViewProcessor的URL显然与WebClient-url不同,因此json请求会因为Same-Origin-Policy而失败。替代方案/像jsonp这样的解决方案似乎并不具有吸引力,因为它们无法解决固有的安全问题。实现ajax请求以定位WebClient本身是一个选项,但我会有冗余功能(webclient和viewprocessor中的视图存储)。

我想在blob-storage中保存视图可以解决这个问题,但我无法摆脱我忽略重要/显而易见的事情的感觉。

    Client --command-- CommandProcessor
    CommandProcessor --event-- ViewProcessor
    ViewProcessor --view-- Blob
    (ViewProcessor or CommandProcessor) --notification-- Client
    Blob --view-- Client

这种情况会有相当长的延迟:|

1 个答案:

答案 0 :(得分:1)

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

埃里克