リスナーにアクセスでき、それを使用してイベントをプッシュできる場合、このようなアプローチにより、イベント/API 呼び出しが大幅に最小限に抑えられる可能性が高いと思います。
- リモートサービス - SalesForce
- ローカル サービス - WCF/SOAP の種類のサービス
- Web アプリケーション - 参照している ASP.NET アプリ
- ローカル キャッシュ - キャッシュ システム (ファイル システムの場合もあれば、より複雑な場合もあります)
まず、データが変更されたときに SalesForce から API 呼び出しを受け取ることを目的とする非常に単純なローカル サービスの作成を検討する必要があります。その目的は、重要なデータが変更されたときに API 呼び出しを受け取ることです。このような呼び出しを受信したら、ローカル キャッシュを新しい値で更新する必要があります。Web アプリケーションは常に、要求されたアイテムがローカル キャッシュにあるかどうかを最初に確認する必要があります。そうでない場合は、データを取得するためにリモート サービスへの API 呼び出しを許可することができます。データが取得されたら、ローカル キャッシュを更新して表示します。したがって、この時点から、データが変更されない限り (SalesForce が変更をユーザーとローカル キャッシュにプッシュする必要があります)、二度と API 呼び出しを行う必要はありません。
SalesForce でデータが作成されたときにデータをプッシュし、新しいローカル サービスが配置され、リモート サービスが適切に構成されているときに、SalesForce に対して大量の一連の API 呼び出しを実行するように進化することもできます。これにより、「インターネットが死ぬ可能性がある」という解決策が得られ、ローカルキャッシュにアクセスできるため、データにアクセスできます。
ここでの唯一の課題は、SalesForce 発信 API 呼び出しが失敗した場合 (ローカル サービスがダウンした場合、インターネットがダウンした場合、または SalesForce が利用できない場合) に、結果整合性を維持するために簡単に再試行できるかどうかわからないことです。 .
ローカル キャッシュが Session オブジェクト (揮発性であるためお勧めしません) の場合は、ローカル サービスと Web アプリケーションを同じアンブレラ (同じアプリ) に統合するだけです。
ここでの課題は
- 変更 (作成と削除を含む) がリモート サービスからローカル サービスへの適切な呼び出しをトリガーすることを確認します。
- ローカル キャッシュが最新であることを確認します。変更が発生したときにローカルで更新するのに数分しかかからない限り、結果整合性は問題ありません。すべてのサービスが正常に動作している場合、適切な設計は 30 秒以内である必要があります。
- 変更を SalesForce にプッシュバックできることを確認しますか?
- ネットワークを信頼しないでください - 最終的には失敗します - その可能性を考慮してください
頑張ってください、これが役に立てば幸いです