只要十步,你就可以应用表达式树来优化动态调用(二)( 九 )


另外 , 晋级难度为 SSS , 验证 IEnumerable<> 中所有的元素 。 开发者可以尝试 。
支持链式 API难度:SSS
思路:
形如 EntityFramework 中同时支持 Attribute 和链式 API 一样 , 添加链式设置验证的特性 。
这需要增加新的接口以便进行链式注册 , 并且原来使用 Attribute 直接生成表达式的方法也应该调整为 Attribute -> 注册数据 -> 生成表达式 。
实现一个属性修改器难度:SSS
思路:
实现一条规则 , 手机号码加密 , 当对象的某个属性是满足长度为 11 的字符串 , 并且开头是 1 。 则除了前三位和后四位之外的字符全部替换为 * 。
建议从头开始实现属性修改器 , 不要在上面的代码上做变更 。 因为验证和替换通常来说是两个不同的业务 , 一个是为了输入 , 一个是为了输出 。
这里有一些额外的要求:

  1. 在替换完成后 , 将此次被替换的所有值的前后情况输出在日志中 。
  2. 注意 , 测试的性能要与直接调用方法相当 , 否则肯定是代码实现存在问题 。
本文总结在.net 中 , 表达式树可以用于两种主要的场景 。 一种是用于解析结果 , 典型的就是 EntityFramework , 而另外一种就是用于构建委托 。
本文通过构建委托的方式实现了一个模型验证器的需求 。 生产实际中还可以用于很多动态调用的地方 。
掌握表达式树 , 就掌握了一种可以取代反射进行动态调用的方法 , 这种方法不仅扩展性更好 , 而且性能也不错 。
本篇内容中的示例代码 , 均可以在以下链接仓库中找到:
最后但是最重要!如果读者对该内容感兴趣 , 欢迎转发、评论、收藏文章以及项目 。
最近作者正在构建以反应式、Actor模式和事件溯源为理论基础的一套服务端开发框架 。 希望为开发者提供能够便于开发出 “分布式”、“可水平扩展”、“可测试性高” 的应用系统 ——Newbe.Claptrap
本篇文章是该框架的一篇技术选文 , 属于技术构成的一部分 。
【只要十步,你就可以应用表达式树来优化动态调用(二)】联系方式:
  • Github Issue
  • Gitee Issue
  • 公开邮箱 newbe-claptrap@googlegroups.com (发送到该邮箱的内容将被公开)
  • Gitter
  • QQ 群 610394020
您还可以查阅本系列的其他选文:
理论入门篇
  1. Newbe.Claptrap - 一套以 “事件溯源” 和 “Actor 模式” 作为基本理论的服务端开发框架
术语介绍篇
  1. Actor 模式
  2. 事件溯源(Event Sourcing)
  3. Claptrap
  4. Minion
  5. 事件 (Event)
  6. 状态 (State)
  7. 状态快照 (State Snapshot)
  8. Claptrap 设计图 (Claptrap Design)
  9. Claptrap 工厂 (Claptrap Factory)
  10. Claptrap Identity
  11. Claptrap Box
  12. Claptrap 生命周期(Claptrap Lifetime Scope)
  13. 序列化(Serialization)
实现入门篇
  1. Newbe.Claptrap 框架入门 , 第一步 —— 创建项目 , 实现简易购物车
  2. Newbe.Claptrap 框架入门 , 第二步 —— 简单业务 , 清空购物车
  3. Newbe.Claptrap 框架入门 , 第三步 —— 定义 Claptrap , 管理商品库存
  4. Newbe.Claptrap 框架入门 , 第四步 —— 利用 Minion , 商品下单
样例实践篇
  1. 构建一个简易的火车票售票系统 , Newbe.Claptrap 框架用例 , 第一步 —— 业务分析
  2. 在线体验火车票售票系统
其他番外篇
  1. 谈反应式编程在服务端中的应用 , 数据库操作优化 , 从 20 秒到 0.5 秒


    推荐阅读