views:

434

answers:

3

I am currently looking at a distributed cache solution.

If money was not an issue, which would you recommend?

+2  A: 

Out of your selection I've only ever attempted to use memcached, and even then it wasn't the C#/.NET libraries.

However memcached technology is fairly well proven, just look at the sites that use it:

...The system is used by several very large, well-known sites including YouTube, LiveJournal, Slashdot, Wikipedia, SourceForge, ShowClix, GameFAQs, Facebook, Digg, Twitter, Fotolog, BoardGameGeek, NYTimes.com, deviantART, Jamendo, Kayak, VxV, ThePirateBay and Netlog.

I don't really see a reason to look at the other solution's.

Good Luck, Brian G.

Brian Gianforcaro
There's always a reason to look elsewhere - popularity is hardly the best indicator of applicability. The .NET libraries for memcached are difficult to use (I seem to have misplaced my sources, but I've read this in several blogs).
Erik Forbes
Elijah Manor
A: 

You could also add Oracle Coherence to your list. It has both .NET and Java APIs.

Kevin Hakanson
A: 

One thing that people typically forget when evaluating solutions is dedicated support.

If you go with memcached then you'll get none, because you're using completely open source software that is not backed by any vendor. Yes, the core platform is well tested by virtue of age, but the C# client libraries are probably much less so. And yes, you'll probably get some help on forums and the like, but there is no guarantee responses will be fast, and no guarantee you'll get any responses at all.

I don't know what the support for NCache or the ScaleOut cache is like, but it's something that's worth finding out before choosing them. I've dealt with many companies for support over the last few years and the support is often outsourced to people who don't even work at the company (with no chance of getting to the people who do) and this means no chance of getting quality of timely support. On the other hand I've also dealt with companies who'll escalate serious issues to the right people, fix important issues very fast, and ship you a personal patch.

One of those companies is Microsoft, which is one of the reasons that we use their software as our platform. If you have a production issue, then you can rely on their support. So my inclination would be to go with Velocity largely on this basis.

Possible the most important thing though, whichever cache you choose, is to abstract it behind your own interface (e.g. ICache) which will allow you to evaluate a number of them without holding up the rest of the development process. This means that even if your initial decision turns out not to work for you, you can switch it without breaking much of the application.

(Note: I'm assuming here that all caches have sufficient features to support what you need from them, and that all caches have sufficient and broadly similar performance. This may not be a valid assumption, in which case you'll need to provide more detail in your question as to why it isn't).

Greg Beech