As you can see in the title. End of story. Period.

Maybe it’s just bad luck, but within few last weeks I had quite a few similar experiences - I was looking for a component to be integrated (as on-premise) in larger solution and usually there were plenty of solutions available, but none of the options were available on Windows (or .NET platform - when I was looking for a library).

It has started with my search for two-factor authentication hardware token solution. I’ve already described my OATH-related “adventures” in separate post, so I’m not going back into this whine of mine, but when I gave up on OATH to try a typical vendor-proprietary solution, it was just a bit better: there was only one option available (Vascohttp://www.vasco.com/). Sure, I could try to wrap one of Java-based products (there are plenty of those), but IKVM.NET (http://www.ikvm.net/) breaks all reasonably shaped license agreements and bridges like JNBridge Pro (http://www.jnbridge.com) can be a bit pricey.

And that pretty much leaves me with setting up a Java-based service host with some services exposed to be called from .NET app.

In the meantime, we were planning to move session-specific data for large web app into store more reasonable than MS SQL Server. This data is temporal, doesn’t have to be archived, it may not survive the outage (if users get logged off once, … well, no big deal :>), but it should be shardable (to keep availability as high as possible), very fast and has to synchronize between nodes.

And … there’s no solution other than AppFabric Cache that meets these requirements and is available on Windows.And AFC has one basic drawback (except for no persistence support at all, but it’s not an important factor for now) - I don’t trust it much (due to some painful experience in past). All the renown and respect in-memory solutions are just not-available on Windows at all: Redis (http://redis.io/), Riak (http://basho.com/), Cassandra (http://cassandra.apache.org). In other words, I have to set one of these on Linux and use generic (WS-based) or .NET remote client (if available).

It’s time to face it - Windows IT ecosystem doesn’t expand widely enough and what is more - with sufficient velocity. Majorly, I blame the weakness of OSS on Windows (so, indirectly I blame Microsoft itself) - smart people have already appreciated all the pros of OSS and that’s why open OSes and programming platforms are their products of choice.

It seems that Microsoft has realized that already (as you’ve probably noticed, they had started to OSSize their products recently) - we’ll see if they manage to get out of their silo.