Introducing the RAW stack
With this post I am introducing the RAW stack. Why the RAW stack? Well it is kind of the equivalent of the MEAN stack. Not that there is anything wrong with the MEAN stack, quite the opposite, but being a .NET developer I really like to keep using .NET where it's strengths lie and where it is suitable. Now there are plenty of places where it isn't but C# on the server is still quite awesome.
So what is the RAW stack?
Basically the RAW stack consists of three parts.
Why these three?
Well RavenDB is an excellent document database for .NET developers. It is fast and it's safe by default design principal make it an excellent replacement for MongoDB in the MEAN stack. Of course using MongoDB would be perfectly possible but RavenDB with it's native .NET client is so much cleaner. In general I really like document databases like RavenDB. No need to worry about schema, just store your objects as you see fit and retrieve them whenever you need. And you don't have to sacrifice speed as most of these document databases, and RavenDB especially, are blazingly fast.
And whether it is the winner or not really doesn't matter to me. I have been using it for quite some time now and am really liking it. Productivity is way up and it is really flexible and fast. Of course it doesn't solve all my problems but it is pretty good and there is an active community out there.
That leaves WebAPI or to be honest both ASP.NET MVC and ASP.NET WebAPI on the server. WebAPI is a great framework for doing REST style HTTP services. It's fast and easy to work with yet quite extensible. And ASP.NET MVC on the server is still useful, even with an MVC framework like AngularJS on the client. Not that I will be doing a lot of data binding on the server. That will mostly be done client side with AngularJS and data coming in through the WebAPI end points. But that doesn't mean that server side processing isn't useful anymore. There are still places where using MVC and Razor on the server is easier. And the one thing I like to be about this is pragmatic, use wherever technology is most appropriate in a given situation and not force one solution onto every problem.
What will I be doing
Using this RAW stack I am going to be building some sample applications to show how to combine these technologies. There is no clear roadmap so lets see what will happen. And if you are looking for something specific feel free to let me know or, even better yet, create a pull request on GitHub.
Other technologies I will be using
Of course I will be using other technologies with the sample I will be building using this stack. For one I really like using Twitter Bootstrap as the CSS framework or choice. And given the power of LESS I will be using the LESS source instead of the generated CSS. When using AngularJS there is a nice open source project to combine the Bootstrap widgets with AngularJS as directives. With ASP.NET on the server I get bundling and minification which is another nice to have. And I am sure there will be more like SignalR and others :-)
All the source code will go up on GitHub. There isn't much yet but more will follow. The running application itself will be on Windows Azure here. Again there is not much yet but more will follow.