sbmandav
sbmandav

Reputation: 1221

Notifications from Salesforce to .net application

We are building an asp.net web application which completely pushes the data to salesforce and is a forms authenticated website. to minimize no.of API calls to Salesforce and reduce the response time to end user in the website, when a user login, we store all the contact information in session object. But, the problem is, when some one changes information in Salesforce, how can i get to know in the asp.net web application to have the updated information queried again and update the session object.

I know there is salesforce listener we can use to have the notifications send interms of outbound messages. But, just wondering how can i manage to update my current running session object of a contact in the asp.net web application.

Your inputs are valuable to me.

Upvotes: 1

Views: 789

Answers (2)

Karell Ste-Marie
Karell Ste-Marie

Reputation: 1052

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.

  • The remote service - SalesForce
  • The local service - a WCF/SOAP Kind of service
  • The web application - the ASP.NET app that you are referring to
  • The local cache - a caching system (could be filesystem, could be more elaborate)

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 data that matters to you 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.

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.

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.

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).

The challenges here are

  1. Make sure changes (including creations and deletions) trigger the proper calls from the remote service to the local service
  2. 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
  3. Make sure that you can push back any changes back to SalesForce?
  4. Don't trust the network - it will eventually fail - account for that possibility

Good luck, hope this helps

Upvotes: 1

Servy
Servy

Reputation: 203812

Store the values in the cache, and set the expiration time of the entry to be something low enough that when a change is made, the update will be noticed quickly enough. For you that may be a few hours, it may be less, or it could be days.

Upvotes: 0

Related Questions