Hi,
I need to develop a dedicated caching service ( either a WCF service or a .Net remoting service or other implementation) to cache the data (monitoring data of .net3.5 Latency measuring application) from Database ( SQL Server 2005) which can then be consumed by 2-3 windows services( .net 3.5 WCf services) so that they do not need to call DB repeatedly. So basically it is a additonal level of service layer between these services and DB to reduce the performance penalty of calling DB The data in Database is large and very dynamic (events continously inserted in DB during the day) which we want to cache. Each of the consuming windows service is dependent on another ( one service is retrieving data from one Table in Db and aggegating the data and putting in another table in DB which would then be consumed by another service) . we have the following requirements :
- Could have either Push or Pull model for pushing or retrieving data to/from DB and Services.
- The cache must reduce the overall impact to the DB and load data by delta, rather than reloading the data completely
- The cache data must be updated if the source data in DB has changed. Sql cache expiration policy must be defined.
- Should have asynchronous method calls for Data retrieval from DB and cache update to minimise wait times
- The cache must support parallel requests to a single DB
- CPU and Memory Utilization should be kept at optimum levels so it does not negatively affect other services.
We do not have a clustered or a distributed environment and is not meant to be a very highly scalable solution.
I want to know what is the best way of implementing this based on several technologies available to avoid making it overly complicated:
- .Net Framework Caching
- Coherence caching
- Velocity
- Rest based services for WCF
Any suggestions and guidance would be very invaluable.
regards, KK