缓存SOAP响应

| 我们当前的应用程序必须以SOAP样式服务的形式与SAP PI层进行通信。不幸的是,该服务层没有实现任何形式的缓存,甚至对于后续请求也导致高响应时间。我们认为解决这个问题只有两个选择。请注意,这些是HTTP POST。 第一次调用后,缓存我们创建的java响应对象。 通过在两者之间引入缓存代理来缓存xml响应。在这里,使缓存的响应无效和检查似乎更加困难,因为这将涉及窥探请求主体。 我们想知道,如果有人对这两种方法有任何经验,或者遇到类似情况,您将如何解决?     
已邀请:
在确定缓存机制的路径之前,请记住要使用什么服务和流程(SOA和BPM)。它们旨在在基于标准的界面后抽象出某种业务功能的实际实现。 当您说响应时间长时,您是否分析了延迟的根源是什么? 网络延迟有多少延迟? 集成堆栈读写您的SOAP请求和响应多少钱? 是否还有其他开销,例如日志记录或持久保存您的请求/响应(例如,如果使用持久消息传递作为传输层)? 在SAP PI中实际处理您的请求有多少延迟? 您正在调用的服务和流程应被视为黑匣子,也就是说,您不必知道其幕后发生的事情,只需知道它正在执行您要求的功能即可。 但是,如果实现缓存,则您将假设所调用的服务没有副作用,例如更新数据,保留审计跟踪,将事件通知其他方或系统等。因此,即使您发现了技术问题,实现缓存要求的方法,实际上可能会破坏服务的实现。对于您的应用程序来说,它看起来不错,但是可能会影响其他您不知道的系统或进程。 如果您确信自己知道自己在做什么,那么一定要看一下缓存。通过存储响应对象在您的应用程序中实现它可能是最快的,但其他应用程序将无法使用它,因此性能优势将被本地化。如果采用这种方法,您可能仍要考虑建立一种选择性缓存机制,而不是将其应用于所有缓存。 一些ESB甚至XML网关/设备都具有缓存功能。例如,我知道IBM DataPower设备具有文档缓存功能,您可以在其中控制要缓存的服务/ URL,以及这些缓存的副本具有什么样的生存时间。这种方法的优势在于,可以为所有SAP服务使用者提供所需的相同性能提升。 还请记住,缓存会增加内存消耗,因此,如果您不谨慎地使用它,则可能导致您的应用程序或ESB或使用其实施的任何内容耗尽内存。 DataPower似乎有一个不幸的习惯,就是仅仅在不通知任何人的情况下就重置自己,而我们在项目中遇到这个问题! :) 希望能有所帮助。     

要回复问题请先登录注册