只有一个OData数据源更好吗?

只有一个OData数据源更好吗?,odata,sapui5,Odata,Sapui5,我的应用程序的控制器大多调用一个没有问题的数据源 然而,其中一个使用三个独立的数据源,有时在访问它们时返回403个禁止的错误 “数据源”:{ “ZSV_调查_SRV”:{ “uri”:“/SAPUI5-ABAP-SFI/sap/opu/odata/sap/ZSV_SURVEY_SR/”, “类型”:“OData”, “设置”:{ “odataVersion”:“2.0”, “localUri”:“localService/metadata.xml” } }, “ZRUI_COMMON_SRV”:

我的应用程序的控制器大多调用一个没有问题的数据源

然而,其中一个使用三个独立的数据源,有时在访问它们时返回403个禁止的错误

“数据源”:{
“ZSV_调查_SRV”:{
“uri”:“/SAPUI5-ABAP-SFI/sap/opu/odata/sap/ZSV_SURVEY_SR/”,
“类型”:“OData”,
“设置”:{
“odataVersion”:“2.0”,
“localUri”:“localService/metadata.xml”
}
},
“ZRUI_COMMON_SRV”:{
“uri”:“/SAPUI5-ABAP-SFI/sap/opu/odata/sap/ZRUI\u COMMON\u SRV/”,
“类型”:“OData”,
“设置”:{
“odataVersion”:“2.0”,
“localUri”:“localService/ZRUI\u COMMON\u SRV/metadata.xml”
}
},
“ZTC商店交易日历SRV”:{
“uri”:“/SAPUI5-ABAP-SFI/sap/opu/odata/sap/ZTC\u店铺\u交易\u日历\u SRV/”,
“类型”:“OData”,
“设置”:{
“odataVersion”:“2.0”,
“localUri”:“localService/ZTC\u SHOP\u TRADING\u CALENDAR\u SRV/metadata.xml”
}
}
}
将所有方法合并到一个数据源(例如
ZSV\u SURVEY\u SRV
)会更好吗?还是三个单独的数据源都可以并且不会出现问题

如果三个数据源都正常,为什么有时会出现
403
错误


无论哪种方式都有性能优势吗?

除了您面临的403禁止错误之外,将所有内容都放在同一个服务中也有其优势:

设计视角

  • OData支持同一服务内的多个数据源 (实体集)
  • 您可以轻松实现导航属性 在你的实体之间
  • 您只需要一个ODataModel实例 在您的UI5应用程序中
  • 没有必要兑现承诺或任何承诺 确保加载所有服务的其他机制 成功地
  • 在中不需要使用复杂的绑定 UI5从两个不同的模型中获取数据
  • 这很容易想象 一个特定属性应该存在于多个OData中 服务。也有可能相信你也有 由于它们之间的不一致(长度、精度、, 比例、注释等)
  • 绩效视角

  • 因为只有一个元数据,所以只有一次往返才能获得它
  • 为所有服务缓存元数据的变化较小
  • 只使用一项服务肯定有更多的理由。作为一般规则,Fiori应用程序只在服务上使用。此外,该服务仅由上述Fiori应用程序使用。这使得维护方式更加简单

    当然也有例外,特别是在注释服务方面

    如果你真的需要三种不同的服务有一个很好的理由,不妨考虑创建一个第四个组合,所有的三个组合。在SEGW中,你可以通过在数据模型文件夹中右键单击,并使用包含> > ODATA服务(GW)选项

    来组合项目内的其他服务。
    但无论如何,在同一服务中使用不同的实体集。这是值得的。

    有趣的发现。我在一个添加了两个数据源的项目中也遇到了这个问题。第二个数据源在我发送的第一个请求中失败,禁用403。当我刷新页面并重试时,它就工作了。我没有在那里做过很多研究et,但是如果你发现了一些东西,如果你能给我一个小的更新,我会很高兴的。是的,刷新后它确实工作正常,但它根本不应该发生。如果我得到答案,我会更新。一个控制器是如何使用这三个数据源的?你什么时候得到403?在读取元数据、实体或集合时?通常是r建议具有(请参见
    4.
    )我得到了403的初始元数据读数这403错误发生在Web IDE在云中或者在部署应用程序到你的内部系统之后?如果它在云中我会仔细检查SAP云连接器并考虑报告问题SAP完全同意…管理一个以上的ODATA模型是头疼的…对我来说是最好的优势单个OData模型以其最简单的方式控制
    datarequest
    change
    dataReceived
    事件以及
    metadataFailed
    requestFailed
    事件的错误处理。