1

我们正在构建一个 asp.net Web 应用程序,它将数据完全推送到 salesforce,并且是一个经过表单验证的网站。为了最大限度地减少对 Salesforce 的 API 调用次数并减少对网站最终用户的响应时间,当用户登录时,我们将所有联系信息存储在会话对象中。但是,问题是,当有人在 Salesforce 中更改信息时,我如何才能在 asp.net Web 应用程序中了解以再次查询更新的信息并更新会话对象。

我知道我们可以使用 salesforce 监听器来让通知发送出站消息。但是,只是想知道如何在 asp.net Web 应用程序中更新我当前正在运行的联系人会话对象。

您的意见对我很有价值。

4

2 回答 2

1

如果您确实可以访问侦听器并且可以使用它来推送事件 - 那么我认为这样的方法可能会极大地减少事件/API 调用。

  • 远程服务 - 销售队伍
  • 本地服务 - 一种 WCF/SOAP 服务
  • Web 应用程序 - 您所指的 ASP.NET 应用程序
  • 本地缓存 - 缓存系统(可能是文件系统,可能更精细)

首先,您应该考虑创建一个非常简单的本地服务,其目的是在数据更改时接收来自 SalesForce 的 API 调用。它的目的应该是在对您重要的数据发生更改时接收 API 调用。当收到这样的调用时,您应该使用新值更新本地缓存。Web 应用程序应始终并首先检查所请求的项目是否在本地缓存中,如果没有,则可以允许它对远程服务进行 API 调用以检索数据。检索到数据后,更新本地缓存并显示它。因此,从现在开始,除非数据发生更改(SalesForce 应该将更改推送给您和您的本地缓存),否则您永远不必再进行 API 调用。

您甚至可以演变为在 SalesForce 中创建数据时推送数据,并在新的本地服务到位并且正确配置远程服务时对 SalesForce 进行大量 API 调用。然后,这将为您提供一个解决方案,其中“互联网可能会死”,您仍然可以访问本地缓存并因此访问数据。

这里唯一的挑战是,我不知道如果 SalesForce 传出 API 调用失败(以防本地服务中断、互联网中断或 SalesForce 不可用)是否可以轻松重试,以保持最终的一致性.

如果本地缓存是 Session 对象(我不推荐它,因为它是易失的),只需将本地服务和 Web 应用程序集成到同一个保护伞(同一个应用程序)中。

这里的挑战是

  1. 确保更改(包括创建和删除)触发从远程服务到本地服务的正确调用
  2. 确保本地缓存是最新的 - 最终的一致性应该没问题,只要在发生更改时只需几分钟即可在本地更新它 - 如果所有服务都正常运行,一个好的设计应该在 30 秒内
  3. 确保您可以将任何更改推回给 SalesForce?
  4. 不要相信网络——它最终会失败——解释这种可能性

祝你好运,希望这会有帮助

于 2012-12-20T14:59:00.587 回答
0

将值存储在缓存中,并将条目的到期时间设置为足够低,以便在进行更改时,更新将足够快地被注意到。对你来说,这可能是几个小时,可能更少,也可能是几天。

于 2012-12-19T16:52:26.703 回答