c# – CQRS和主键:guid或不是?
对于我的项目,这是一个潜在的大型网站,我选择将命令界面与查询界面分开.因此,提交命令是不返回结果的单向操作.这意味着客户端必须提供密钥,例如:
service.SubmitCommand(new AddUserCommand() { UserId = key,... }); 显然,我不能使用一个int的主键,所以一个Guid是一个合乎逻辑的选择 – 除了我读到的任何地方,它的性能影响,这吓到我:) 但是,随后我还阅读了关于COMB Guids的信息,并且他们如何提供Guid的优势,同时仍然表现良好.我也在这里找到了一个实现:Sequential GUID in Linq-to-Sql?. 所以在我采取这个重要决定之前:有人有这方面的经验,有建议吗? 非常感谢! 路德 解决方法
您可能已经拥有一个自然键(如用户名,用于唯一标识用户),而不是向Guid提供Guid(对域可能无意义).这个自然键使用户的命令更加有意义:
>创建用户时,您将知道用户名,因为您将其作为命令的一部分提交. 如果您正确地索引用户名列表,则可能不需要GUID.验证这一点的最好方法是运行测试 – 插入一百万个用户记录,并了解CreateUser和Login如何执行.如果你真的看到一个严重的性能打击,你已经验证不利地影响业务,不能通过缓存来解决,然后添加一个Guid. 如果您正在进行DDD,则需要集中精力保持域干净,以便代码易于理解并反映实际的业务流程.引入一个人造钥匙是违背了这个目标的,但是如果你确定它为企业提供了实际的价值,那么继续. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |