WebAPI性能优化建议

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

WebAPI性能优化建议

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. 服务端收到消息后首先对接收到的客户端数据包中每个字段值进行解析(解析分为取数,赋值,触发值更新事件,调用表单服务等),所以尽可能精简Josn数据包里面的字段。

2. 尽量使用批量保存代替保存接口,因为保存接口会多走beforeSave和aftereSave事件,并且每次只能处理一条数据,
而批量保存接口不仅可以批量处理还可以开后台线程并发执行。 但是调用批量保存接口BatchCount(服务端开启线程数)建议控制在5个之内。

3.业务层面在WebAPI调用时候,一些取价服务、取折扣服务可以考虑禁用,具体参考销售订单、销售出单相关说明:

https://vip.kingdee.com/article/11179

https://vip.kingdee.com/article/42071

4. 客户端可以开多个线程调用,但是线程数量不易太多,一般3到5个即可。需要注意的是如果开启了多个线程并发调用批量保存接口,那么批量保存接口参数里面BatchCount(服务端开启线程数)建议设置为1或2,否则可能造成服务器端请求阻塞。举个例子,5个线程并发调用,BatchCount设置为5,那么服务器端会产生25个线程并发处理,这种情况很容易造成阻塞。

5.避免每次调用增删查改接口之前都调用登录接口(会话默认超时是20分钟,没有必要每次都调用登录接口,登录接口本身也是一个耗时的操作)。一次登录多次使用简单示例https://vip.kingdee.com/article/317608720198648320

6. 也是最重要的一点,星空的请求默认是同步模式,是有状态的。在同一个会话下,前一个请求没有结束,后一个请求即使发起了,也是要等待的。如果是不同的会话,相互间就没有影响。第三方集成调用接口,如果在本地做会话保持,并且用单用户调用,比较容易在客户端出现卡顿。可以考虑使用多端多用户多站点(尽量批量调用接口缓解并发调用压力)的方式来调用星空的接口。例如可以在不同的端发起星空的请求,不同端发起请求可以使用同一个用户;如果在一个端发起请求,则建议对请求进行业务区分,不要用一个用户调用所有请求,需要在集成端使用多个用户来调用星空的接口,缓解同一会话导致请求排队的问题。另外也可以增加多站点的调用机制来解决请求排队的问题。


WebAPI性能优化建议

webapi数据处理过程:1. 首先对接受到的客户端数据包中每个字段值进行解析(解析分为取数,赋值,触发值更新事件,调用表单服务等)2. 解...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息