只要十步,你就可以应用表达式树来优化动态调用(二)( 九 )
另外 , 晋级难度为 SSS , 验证 IEnumerable<> 中所有的元素 。 开发者可以尝试 。
支持链式 API难度:SSS
思路:
形如 EntityFramework 中同时支持 Attribute 和链式 API 一样 , 添加链式设置验证的特性 。
这需要增加新的接口以便进行链式注册 , 并且原来使用 Attribute 直接生成表达式的方法也应该调整为 Attribute -> 注册数据 -> 生成表达式 。
实现一个属性修改器难度:SSS
思路:
实现一条规则 , 手机号码加密 , 当对象的某个属性是满足长度为 11 的字符串 , 并且开头是 1 。 则除了前三位和后四位之外的字符全部替换为 * 。
建议从头开始实现属性修改器 , 不要在上面的代码上做变更 。 因为验证和替换通常来说是两个不同的业务 , 一个是为了输入 , 一个是为了输出 。
这里有一些额外的要求:
- 在替换完成后 , 将此次被替换的所有值的前后情况输出在日志中 。
- 注意 , 测试的性能要与直接调用方法相当 , 否则肯定是代码实现存在问题 。
本文通过构建委托的方式实现了一个模型验证器的需求 。 生产实际中还可以用于很多动态调用的地方 。
掌握表达式树 , 就掌握了一种可以取代反射进行动态调用的方法 , 这种方法不仅扩展性更好 , 而且性能也不错 。
本篇内容中的示例代码 , 均可以在以下链接仓库中找到:
最近作者正在构建以反应式、Actor模式和事件溯源为理论基础的一套服务端开发框架 。 希望为开发者提供能够便于开发出 “分布式”、“可水平扩展”、“可测试性高” 的应用系统 ——Newbe.Claptrap
本篇文章是该框架的一篇技术选文 , 属于技术构成的一部分 。
【只要十步,你就可以应用表达式树来优化动态调用(二)】联系方式:
- Github Issue
- Gitee Issue
- 公开邮箱 newbe-claptrap@googlegroups.com (发送到该邮箱的内容将被公开)
- Gitter
- QQ 群 610394020
理论入门篇
- Newbe.Claptrap - 一套以 “事件溯源” 和 “Actor 模式” 作为基本理论的服务端开发框架
- Actor 模式
- 事件溯源(Event Sourcing)
- Claptrap
- Minion
- 事件 (Event)
- 状态 (State)
- 状态快照 (State Snapshot)
- Claptrap 设计图 (Claptrap Design)
- Claptrap 工厂 (Claptrap Factory)
- Claptrap Identity
- Claptrap Box
- Claptrap 生命周期(Claptrap Lifetime Scope)
- 序列化(Serialization)
- Newbe.Claptrap 框架入门 , 第一步 —— 创建项目 , 实现简易购物车
- Newbe.Claptrap 框架入门 , 第二步 —— 简单业务 , 清空购物车
- Newbe.Claptrap 框架入门 , 第三步 —— 定义 Claptrap , 管理商品库存
- Newbe.Claptrap 框架入门 , 第四步 —— 利用 Minion , 商品下单
- 构建一个简易的火车票售票系统 , Newbe.Claptrap 框架用例 , 第一步 —— 业务分析
- 在线体验火车票售票系统
- 谈反应式编程在服务端中的应用 , 数据库操作优化 , 从 20 秒到 0.5 秒
推荐阅读
- 小米11迎强敌,配120W超充,0到100%只要15分钟
- 只需799元就可以把旧iPad换成新款iPad?是真的!但这羊毛可没那么容易薅
- 马化腾这招太高明!网友:只要我改名的速度够快,禁令就追不上我
- 飞腾桌面腾锐D2000 CPU发布:最高2.6GHz、八核只要25W
- 苹果官网产品出现 Bug 价:上千元产品显示只要一两百元
- 华为手机为什么耗电快?只要关闭手机这6个开关,2天1充不是梦
- 苏宁易购双十二10亿补贴引爆吃货狂欢,西贝明星单品只要9.9
- 别错过,双节钜惠还有2天结束
- 人群|出差旅行也能带呼吸机?M1 Mini就可以
- 瑞士宽带商TWiFi可提供18年免费上网服务
