Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>If you do have access to the listener and you can use it to push events - then I think an approach like this would likely minimize events/API calls tremendously.</p> <ul> <li>The remote service - SalesForce</li> <li>The local service - a WCF/SOAP Kind of service</li> <li>The web application - the ASP.NET app that you are referring to</li> <li>The local cache - a caching system (could be filesystem, could be more elaborate)</li> </ul> <p>First of all you should look into creating a very simple local service who's purpose is to receive API calls from SalesForce when data is changed. It's purpose should be to receive API calls when the <em>data that matters to you</em> is changed. When such a call is received, you should update a local cache with the new values. The web application should always and first check if the item that is requested is in the local cache, if not then you can allow it to make an API call to the remote service in order to retrieve data. Once data is retrieved, update local cache and display it. Therefore, from this point forward, unless data changes (which SalesForce should push changes to you and to your local cache) you should never ever have to make an API call ever again.</p> <p>You could even evolve to pushing data when it is created in SalesForce and also doing a massive series of API calls to SalesForce when the new local service is in place and the remote service is properly configured. This will then give you a solution where the "internet could die" and you would still have access to the local cache and therefore data.</p> <p>The only challenge here is that I don't know if SalesForce outgoing API calls can be retried easily if they fail (in case the local service does go down, or the internet does, or SalesForce is not available) in order to keep eventual consistency.</p> <p>If the local cache is the Session object (which I don't recommend because it's volatile) just integrate the local service and the web application into the same umbrella (same app).</p> <p>The challenges here are</p> <ol> <li>Make sure changes (including creations and deletions) trigger the proper calls from the remote service to the local service</li> <li>Make sure the local cache is up to date - eventual consistency should be fine as long as it only takes minutes to update it locally when changes occur - a good design should be within 30 seconds if all services are operating normally</li> <li>Make sure that you can push back any changes back to SalesForce?</li> <li>Don't trust the network - it will eventually fail - account for that possibility</li> </ol> <p>Good luck, hope this helps</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload