如果您确实可以访问侦听器并且可以使用它来推送事件 - 那么我认为这样的方法可能会极大地减少事件/API 调用。
- 远程服务 - 销售队伍
- 本地服务 - 一种 WCF/SOAP 服务
- Web 应用程序 - 您所指的 ASP.NET 应用程序
- 本地缓存 - 缓存系统(可能是文件系统,可能更精细)
首先,您应该考虑创建一个非常简单的本地服务,其目的是在数据更改时接收来自 SalesForce 的 API 调用。它的目的应该是在对您重要的数据发生更改时接收 API 调用。当收到这样的调用时,您应该使用新值更新本地缓存。Web 应用程序应始终并首先检查所请求的项目是否在本地缓存中,如果没有,则可以允许它对远程服务进行 API 调用以检索数据。检索到数据后,更新本地缓存并显示它。因此,从现在开始,除非数据发生更改(SalesForce 应该将更改推送给您和您的本地缓存),否则您永远不必再进行 API 调用。
您甚至可以演变为在 SalesForce 中创建数据时推送数据,并在新的本地服务到位并且正确配置远程服务时对 SalesForce 进行大量 API 调用。然后,这将为您提供一个解决方案,其中“互联网可能会死”,您仍然可以访问本地缓存并因此访问数据。
这里唯一的挑战是,我不知道如果 SalesForce 传出 API 调用失败(以防本地服务中断、互联网中断或 SalesForce 不可用)是否可以轻松重试,以保持最终的一致性.
如果本地缓存是 Session 对象(我不推荐它,因为它是易失的),只需将本地服务和 Web 应用程序集成到同一个保护伞(同一个应用程序)中。
这里的挑战是
- 确保更改(包括创建和删除)触发从远程服务到本地服务的正确调用
- 确保本地缓存是最新的 - 最终的一致性应该没问题,只要在发生更改时只需几分钟即可在本地更新它 - 如果所有服务都正常运行,一个好的设计应该在 30 秒内
- 确保您可以将任何更改推回给 SalesForce?
- 不要相信网络——它最终会失败——解释这种可能性
祝你好运,希望这会有帮助