面向对象的导表程序

不清楚啥是导表,可以参考之前的文档《如何让你的程序加载Excel配置文件

我们之前的思路类似于面向过程,比如先读数据,再处理数据,最后导出数据。那么,在工具功能能够保持单一时,这么做也ok。随着功能迭代,导表工具要接受各种高级特性时,面向过程的逻辑,往往就很受伤。

比如,我们需要添加数据差异导表功能,或者需要做不同的数据源和导表先后依赖,或者要改成多线程,或多进程导表?所有的这些优化,都需要动流程或是流程的一部分。

于是我们想到能不能使用一种各面向对象的方式来实现这个过程,后期用多态+组件的方式来扩展会容易的多。

基本的组件

CodeGenAgent

一个agent对应于一个最终生成的代码问题,比如xxconfig.cs,一个agent的常规工作方式,就是加载一张表格(xlsx),然后处理格式化,并最终导出成xxconfig.cs。当存储若干个这个导出文件任务时,就会存在n个CodeGenAgent对象,通过worker线程调度就可以同时处理了。

高级特性

依赖和后处理

有的表格可能需要在另一个表之前处理后,才能处理,有一个依赖关系。这种情况就只需要配置CodeGenAgent对象依赖链就可以了,也可以通过类似数据管道的方式,来共享前一步的一些数据。

差异导表

每个实体可以维护自己上次导表的hashcode。再下次导表时,对比hashcode,判定是否直接跳过任务就可以了。

性能监控

每个CodeGenAgent可以从自己的生命期各个步奏来进行性能监控,相比于之前的导表流做法,更容易实现类似流水线的流程,可以最大化平衡io和cpu占用的问题(读数据和导出占io,处理时占cpu)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值