CQRS:CQRS+AJAX架构 之 查询(Q)模型设计

背景

准备采用CQRS架构,之前也简单的应用过(只是把读和写在程序级别进行了分离),这篇文章是我最近几天的思考,写下来希望大家多提意见。这篇文章不会涉及Command端的设计,重点关注如何设计查询

真心的希望大家看完后能给出你们的意见和想法。

什么是CQRS

CQRS:Command Query Responsibility Separation。我喜欢职责分离,这也是我采用这种架构的原因,确实能带来单一职责的优点。

简单的CQRS

 

复杂的CQRS

 

CQRS的常见查询需求

下面是系统的一些查询需求:

查询面板

 

高级查询

 

数据行级别的权限

如:个人、部门、分公司、品种。

固定约束

如:启用、合法、租户ID。

需求总结

 

CQRS的查询设计

充分利用SQL和动态类型的优势,不做太多无谓的封装。

关键决策:

    1. 直接查询数据库返回Dynamic类型,不需要定义强类型。
    2. 直接用SQL,支持动态查询面板和动态数据行权限。目前没有找到封装SQL的理由,最多是在外围再封装一层,但是不会隐藏SQL(我之前写过一个简单的查询对象)。
    3. 利用一些策略防止SQL注入和权限提升(这篇文章不介绍)。

示例代码

下载地址:http://happy.codeplex.com/SourceControl/latest。

AJAX程序

 
 
 Ext.onReady(      query =         TableOrViewName: 'Users'         WhereClause: "Name NOT LIKE '%段%'"
  
          url: 'TestDynamicQuery/Fetch'         method: 'POST'          success:     
     query =         TableOrViewName: 'Users'         WhereClause: "Age >= 20 AND Age <= 27"
  
          url: 'Tes…………………………………………………………………………

转载:http://www.verydemo.com/demo_c107_i12316.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值