SAP Fiori for iOS SDK-OData请求性能降低

2020-09-18 20:01发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们正在使用SAP Fiori for iOS SDK 2.0开发本机iOS应用程序。 根据此处可用的教程,该应用程序已离线启用。 但是,当我们在设备在线时向后端执行OData请求时,即使对于小型实体集,响应也非常慢。 我怀疑延迟是在离线商店的开放或下载步骤中造成的。 我缺少任何设置会降低在线请求的速度吗?

设备处于脱机状态时-性能比预期的要好得多,因为它在本地查询数据。 直接执行在线请求时-在不打开离线商店的情况下,性能也很好。 该代码类似于本教程中的示例:

 func requestEntities(completionHandler:@escaping(Error?)-> Void){
    //仅请求前20个值。 如果要修改请求的实体,可以在此处进行。
     deliveryServiceOffline.open {错误
         警卫错误==无其他{
             返回;
         }


         self.appDelegate.isStoreOpened = true


         self.deliveryServiceOffline.download {错误
             警卫错误==无其他{
                 让查询= DataQuery()。selectAll()。top(20)
                 self.deliveryServiceOffline.fetchPackages(matching:query){包,错误
                     警卫队让包=其他包{
                         completeHandler(错误!)
                         self.appDelegate.closeOfflineStore()
                         返回
                     }
                     self.entities =包裹
                     completeHandler(无)
                     self.appDelegate.closeOfflineStore()
                 }
                 返回
             }


             让查询= DataQuery()。selectAll()。top(20)
             self.deliveryService.fetchPackages(matching:query){包,错误
                 警卫队让包=其他包{
                     completeHandler(错误!)
                     self.appDelegate.closeOfflineStore()
                     返回
                 }
                 self.entities =包裹
                 completeHandler(无)
                 self.appDelegate.closeOfflineStore()
             }
         }
     }
 }


 

如果您对为什么会发生这种情况有任何想法,我将不胜感激。

非常感谢您!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们正在使用SAP Fiori for iOS SDK 2.0开发本机iOS应用程序。 根据此处可用的教程,该应用程序已离线启用。 但是,当我们在设备在线时向后端执行OData请求时,即使对于小型实体集,响应也非常慢。 我怀疑延迟是在离线商店的开放或下载步骤中造成的。 我缺少任何设置会降低在线请求的速度吗?

设备处于脱机状态时-性能比预期的要好得多,因为它在本地查询数据。 直接执行在线请求时-在不打开离线商店的情况下,性能也很好。 该代码类似于本教程中的示例:

 func requestEntities(completionHandler:@escaping(Error?)-> Void){
    //仅请求前20个值。 如果要修改请求的实体,可以在此处进行。
     deliveryServiceOffline.open {错误
         警卫错误==无其他{
             返回;
         }


         self.appDelegate.isStoreOpened = true


         self.deliveryServiceOffline.download {错误
             警卫错误==无其他{
                 让查询= DataQuery()。selectAll()。top(20)
                 self.deliveryServiceOffline.fetchPackages(matching:query){包,错误
                     警卫队让包=其他包{
                         completeHandler(错误!)
                         self.appDelegate.closeOfflineStore()
                         返回
                     }
                     self.entities =包裹
                     completeHandler(无)
                     self.appDelegate.closeOfflineStore()
                 }
                 返回
             }


             让查询= DataQuery()。selectAll()。top(20)
             self.deliveryService.fetchPackages(matching:query){包,错误
                 警卫队让包=其他包{
                     completeHandler(错误!)
                     self.appDelegate.closeOfflineStore()
                     返回
                 }
                 self.entities =包裹
                 completeHandler(无)
                 self.appDelegate.closeOfflineStore()
             }
         }
     }
 }


 

如果您对为什么会发生这种情况有任何想法,我将不胜感激。

非常感谢您!

付费偷看设置
发送
2条回答
ZJXianG
1楼 · 2020-09-18 20:48.采纳回答

尼古拉,

该演示/教程代码试图以非常紧凑的形式解释在构建脱机应用程序时需要调用的不同生命周期和数据访问方法。 在真实的应用程序中,您确实不应该在每次尝试访问数据时都执行"下载"。 我认为这是导致您观察到性能下降的原因。

在真实应用中,您需要对此进行一些重构,并在适当的位置找到合适的位置进行数据上载/下载。 根据您的情况,可能会在不同的场合出现-可能是每次应用启动时,每次应用联机时,或者仅当用户按下"同步"按钮时。 因此,这归结为在应用启动时打开商店,在适当时(但很少)进行下载/上传,在应用停止时关闭商店。

希望有帮助。

感谢
安德烈亚斯

打个大熊猫
2楼-- · 2020-09-18 20:36

嗨安德烈亚斯,

感谢您的澄清和明确的回答。 这很有道理,对我们有很大帮助! 作为一般反馈,将其包含在教程中可能会很好,因为目前我还不太清楚:)

非常感谢!

此致

尼古拉

一周热门 更多>