云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

金山云_使命召唤4百度云_稳定性好

小七 141 0

金山云_使命召唤4百度云_稳定性好

在修改由事务SEGW中创建OData服务生成的运行时工件时,是否遇到问题?

好吧,这篇博文是来帮忙的。它的目的是通过SADL框架和您自己实现的自定义代码来解开关于不可触碰的泛型代码的常见误解。换句话说,它为修改OData服务生成的运行时工件时出现的问题提供了解决方案。

SADL生成的运行时工件帮助您获得更好的性能,甚至确保数据检索或数据修改的功能。框架为您提供了这些特性,这是非常简单的。然而,一旦你想用其他特定于应用程序的特性来修改或增强服务,可能正是这些生成的工件造成了麻烦,因为你甚至不清楚它们是做什么的,以及它们是如何做的。

我收集了一些当用户操作一个用它创建的服务时出现的常见问题SEGW。找到你的特殊"麻烦",并用提供的解决方案解决它。

在混合场景中使用查询选项$expand时,响应时间出现性能冲突混合场景中使用$batch时的短转储;UI中的错误消息"默认变更集实现只允许一个操作"从应用程序实现的(非SADL)实体集到SADL实现的实体集的导航或$expand失败执行$expand时,将忽略方法GET\u ENTITY和GET\u ENTITY\u SET的重新定义消息或异常丢失且未出现在UI

使用SEGW生成OData服务的一般注意事项

建议使用事务SEGW创建OData服务时仅使用引用数据源(RDS)。通过RDS,SADL框架自动实现了在数据提供者类(DPC)中使用OData检索修改数据所需的方法。应用程序开发人员不得更改DPC的这些方法。当只使用RDS时,啥叫人工智能,它们会在功能和性能方面自动优化。如果您需要修改您的服务,并且要重新定义方法,使用DPC_EXT类。

有关使用RDS创建的OData服务的更多信息:基于引用数据源(RDS)创建OData服务。

如果服务基于映射数据源(MDS)提供,返利怎么使用,则DPC包含仅基于RDS生成的其他方法。使用RDS时SADL自动提供的一些方法,例如GET_EXPANDED_ENTITY(在使用查询选项$expand时优化性能),在DPC中没有生成MDS。因此,您可能希望在特定于应用程序的DPC\扩展中手动实现这些方法的功能。

有关使用MDS创建的OData服务的更多信息:基于映射的数据源创建OData服务

对于混合场景也是如此。如果您使用RDS创建一个服务,然后将基于MDS的实体添加到该服务中,那么我们将讨论混合场景。DPC包含与MDS相同的方法。

同样,个人大数据,如果您的服务包含非SADL实体,DPC自动生成的优化方法不能用于这些外部实体。这些实体的处理必须由应用程序开发人员在DPC\ U EXT中手动执行,因为SADL不知道这些实体是服务的一部分。

请记住,DPC\ U EXT中的重新定义是应用程序开发人员的责任。一旦您在DPC\u EXT中重新定义了一个方法,您就有责任在DPC中包含SADL提供的任何消息处理或异常处理。

故障排除

在执行包含查询选项$expand的OData请求时,端到端响应时间超过正常值。

在仅RDS的场景中,生成的DPC使用SADL expand,对$expand请求执行性能优化。通过使用非RDS实体操作服务,DPC将覆盖仅在RDS场景中生成的DPC的GET_EXPANDED_ENTITY和GET_EXPANDED_ENTITYSET方法,默认实现为$expand requests By Gateway。网关运行时执行多个单往返,性能明显下降

注意:虽然MDS场景的DPC也定义了expand方法GET\u EXPANDED\u ENTITY和GET\u EXPANDED\u ENTITYSET,它们只调用gateway生成的超类的方法

为了避免在涉及的每个实体之间循环而导致性能问题,需要在DPC\u EXT中重新定义expand方法GET\u EXPANDED\u entity和GET\u EXPANDED\u ENTITYSET,必须实现改进的SADL expand逻辑。有关如何执行此操作的详细说明,请参阅"改进OData$expand性能"一章中的指南"微调基于SADL的网关服务的执行"。

当执行包含$batch的OData请求时,系统将转储消息"不允许在变更集处理期间提交工作",或显示UI错误消息"Default changeset implementation allows only one operation"。

在仅RDS的场景中,生成的DPC实现用于执行$batch请求的方法:changeset\u BEGIN和changeset\u PROCESS。当使用非RDS实体操作服务时,淘客返利,DPC不实现这些批处理方法,而是调用超类。一旦变更集包含多个操作,就无法处理变更集,因为超级方法仅处理具有一个操作的变更集。因此,$批处理请求无法执行,系统转储。

您需要在DPC\ U EXT.中实现负责批处理的方法进行重新定义,使用IF\u SADL\u GW\u DPC\u UTIL~ GET\u DPC()~ CHANGESET\u BEGIN和IF\u SADL\u GW\u DPC\u UTIL~ GET\u DPC()~ CHANGESET\u进程调用SADL框架,向服务添加完整的批处理逻辑。

使用$expand或使用导航属性执行OData请求时,您收到错误CX\u SADL\u CONTRACT\u infliction.