views:

293

answers:

1

I've seen there is a plenty of them. NCache, Velocity and so forth but I haven't found a table comparing them.

What's the best considering the following criterias:

  1. Easy to understand.
  2. Is being maintained lately.
  3. Is free or has a good enough free version.
  4. Works.
+2  A: 

I can't speak for what's best or worst, but I'll throw in my experience with NCache in case it helps.

Disclaimer: NHibernate and I had some disagreements, we have since gone our separate ways :)

The Good

  • The performance was great
  • The support was great, it's well maintained (I'm speaking to status as of ~6 months ago)
  • It has a free version (caveats below)
  • It worked as well as possible, but I had issues with the base level 2 cache provider implementation...but this was a problem on the NHibernate side with HQL, not the NCache side.

The Bad (For reference look here)

  • The free version had it's limitations, they are strategically put there no doubt, but for our project ultimately we couldn't use the free version because of some key features not available. The below restrictions are on the FREE version.
    • Key Based Dependency is not included
    • None of the database dependencies are included
    • No 64-bit version

Those were the sticking points on 2 different projects for me...however aside from those, no problems and I was happy with the simplicity of install and configuration. If the above aren't sticking points/requirements for you, I do recommend giving it a shot. It took me less than 10 minutes to get a server up and functioning as our L2 cache.

Nick Craver
I appreciate your attention Nick. Let me ask you a question: I have an object A' of type A in cache that has a collection Bs of objects of type B. If I take B'' that does not belong to Bs and change it so that it should now belong to Bs, will A'.Bs.Count change? Note A' is in cache.
Ciwee
@André Pena: Yes it will, provided you have the `<cache usage="read-write"/>` directly under **both** the `<class name="A">` and the `<bag name="Posts">` within it. If you have a local copy of A and are not re-fetching A then it will not, since you are dealing with a separate copy....but if you fetch A at any point (or are adding to the local A) after adding B, it should have an accurate count.
Nick Craver
@Nick: +1 thank you for valuable information :)
Ciwee