CQRS模式如何处理数据访问审核?或者可以吗?
让我给出一些背景:
我有一个分布式系统。它有几个“部分”。每个部分处理业务的一部分。(一个做订单,另一个做账单,另一个客户等等)
我曾计划让每个部门将业务事件的消息发送给对方(即创建订单、注册新客户等)。然后可以将事件存储起来,并以CQRS的方式重放。
我还为每个部门计划了一个数据库,其中包括他们从其他部门需要的数据(订单将保存一个基本的客户列表,账单将有一个简单的订单列表等等)。这些数据将通过业务事件消息获得。
我知道这不是“真实”的CQRS。但我想我的问题同样适用于CQRS。
因此,在中,审计数据访问和数据安全是如何工作的?你只需要相信所有下游系统都会正确地进行审计吗?(很长的信任范围)
出于这个原因,我的建筑师不喜欢CQRS。相反,我们将在分布式系统的每个部分中提供一个服务,用于发送数据请求。这样,审计(和安全性)就可以在中央(受控)位置进行。
--那么,CQRS是否有一种审计数据访问的策略,我没有看到?或者,CQRS仅仅适用于不需要控制数据的系统?(还是我完全忽略了CQRS的要点?)
以防万一:我正在使用Visual 2010、C# 4、.NET 4、WCF 4和NServiceBus 2.6
发布于 2013-03-25 11:22:06
我不认为模式本身有任何内置的机制,因此,正如您所说的,“您是否必须相信所有下游系统都会正确地进行审计?”-是的。
为了澄清,您是否想审计诸如“何时谁查看了什么数据”(即特定于用户的数据)之类的内容?还是要审核哪个消息是由哪个系统、何时(即系统事件数据)发送的?
无论哪种方式,我认为您可能已经在做CQRS,即使您有一个“紧密绑定”的中央服务总线--这都取决于您的类是如何设计的。CQRS和CQS只是一种分离代码的机制,赋予每个类单独的责任。THe唯一的区别似乎是"CQRS“通常涉及到”消息“推断不同的系统,而"CQS”似乎是推断“方法”的分离,推断它在一个应用程序域中。我认为有些人对于将服务总线作为解决方案被视为CQRS的“需求”有很大的意义。关于CQS和CQRS:http://codebetter.com/gregyoung/2009/08/13/command-query-separation/之间的潜在差异的论点,请参阅此解释。归根结底,分担责任似乎是个好主意。
试着回答你的具体问题:
我知道这对你来说可能太晚了,但希望它能帮助到别人。我也想听听别人对此的看法。
发布于 2014-06-09 09:24:56
由于分离了命令和查询,我发现在我们的系统中记录查询要容易得多。我选择了一个‘总线’风格的结构,我们的查询,所以我有一个中心位置所有的查询。这使得实现横切关注点(如日志记录、安全性和性能监视)变得非常容易。我已经找到了比预期更频繁运行和/或慢于预期的查询,这允许我进行优化。希望这能有所帮助。
https://stackoverflow.com/questions/9132254
复制相似问题