WebAPI性能优化原创
金蝶云社区-eris
eris
11人赞赏了该文章 6290次浏览 未经作者许可,禁止转载编辑于2021年05月31日 13:46:48

webapi数据处理过程:
1. 首先对接受到的客户端数据包中每个字段值进行解析(解析分为取数,赋值,触发值更新事件,调用表单服务等)
2. 解析完,调用APP层操作服务(其中保存接口还会走mvc层中维护插件的beforeSave和aftereSave事件,其他接口不会走维护插件事件)
3. APP层操作服务,主要对数据进行验证,触发操作插件事件,执行关联的业务流程(比如是否走反写引擎)等。
4. 最后,KSql引擎解析sql,通过DB层把数据保存或更新到数据库。
页面数据处理过程:
1.首先用户点击菜单,mvc层接受到菜单动作,触发相应的维护插件事件,调用菜单对应的业务层操作,
业务层的操作服务根据各种配置执行相关的业务逻辑,比如保存后是否提交,提交是否触发工作流等。
2. 业务层的操作服务同样要调用对应的APP操作服务,App层操作服务跟webapi调用的相同,
3. 调用完了APP层服务可能还有其他业务处理,比如提交后是否审核等。
webapi数据处理过程 VS 页面数据处理过程主要区别
1. webapi需要对字段值进行解析,页面不需要
2. webapi不会走业务逻辑层,页面会走
根据上面区别,我们可以从下面几点来做性能优化:
1. 使解析的字段尽量少,也就数据包只包含必要的字段,每少一个字段,就少一份解析。
2. 尽量使用批量保存代替保存接口,因为保存接口会多走beforeSave和aftereSave事件,并且每次只能处理一条数据,
而批量保存接口不仅可以批量处理还可以开后台线程并发执行。
3. 根据具体的业务,尽量减少解析调用的服务,比如销售订单的取价服务,
可以参考业务帖子:https://vip.kingdee.com/article/11179
4. 如果非常清楚业务,可以通过自定义接口,定制化操作,避免字段解析和APP层验证等。

下图为批量保存接口性能调优参数BatchCount在不同值下,测试100次得到的平均耗时数据,结果仅供参考实际性能指标和最优参数值需要根据实际环境测试得出
测试环境:销售订单,局域网,8G内存,IIS服务器,酷睿I5,4内核。
调优参数值:服务端所开的线程数。

image.png