REST Raiding. OpenRasta

 
event

I had very high hopes for this one. I was really, really, ready to like it. I had the preconceived idea that this was going to be the one to be chosen. But…

Get It!

I really do not want to be mean or sound (too) rant-y. But I need to tell the whole story.

Let’s face it, looks matter. Compare these two sites. If they were a web-shop, from which you would buy from? If they were a web framework, which one projects quality and care? I do not intend to be cheap, but… seriously?

 OpenRasta_Home_2 nancy_home


Ok, dodgy as it looks I bit the bullet and tried my luck finding a NuGet package. None. Nil. Zero. If you want a package, go install OpenWrap and let it take over the soul and guts from your .csproj. Not an option. Not for me, at least.
Ok, let’s find a binary download… Hitting the documentation page… Looks promising. Darn! It points to an apparently outdated source code repository. Well, it links to a list of the various repositories (and no links to them?). Fine, I know how the Web works Sad smile and how to navigate GitHub, so stop complaining already! What? No binaries? I already broke my rules with this project, that is how ready to like it I was…
Cloning a couple of repositories and for once in my life I will read the doc first, as I know these guys can get funky with the build process. Oh dear, the instructions are outdated, there is no make.bat anywhere the new source tree. Some investigation tells me it is just a shortcut for msbuild. Fire it and… what is the result? An assembly with version 0.0.0.0. WTF?

Documentation

Being the most mature of the contenders I was expecting documentation to be more comprehensive and a wealth blog posts about how to get started. And I was not disappointed. I have little to none complaints in the documentation are.

The Services

Or handlers as they are called in Open Rasta are the classes that give access to our resources (the snapshots of information). They are truly POCOs, not needing any parent class, interface or attribute. Just name the methods wisely (correlating to HTTP verbs) or drive the default behavior with the configuration:

Speaking of which, one of the things that caught my attention when I first saw the framework was how much it relied in configuration and how “beautiful” was the API to handle it. I still think the effort they put in having an elegant configuration API was worthy, but having seen other frameworks in which configuration is superfluous it now seems almost like a waste. An exercise of waste, nonetheless.

And precisely with configuration came the last sin I committed with the framework. I got overconfident with the usage of the API and I forgot to include the using (OpenRastaConfiguration.Manual) statement. It may not look as much, but was capital in me giving up. Because it makes nothing work with a dreadful ArgumentNullException. Swallowing my pride again I dived in the code but could not make any sense of such a complex framework in such short period of time. So I reverted to community support, which turns out to be just StackOverflow (having read that the Google Groups is dead). I cannot complain, as I got my question answered and my thanks were given in less than a week.
By that time it was too late. I had seen enough, given up and tagged the framework as not viable for this project, thanks for asking.

Opinion

As one can imagine, I cannot be too happy about my time with the framework. And definitely was not the chosen one.

I tried very hard to like it. And being disappointed is partly my fault (a combination of high expectations and carelessness in reading the walkthrough).
I still believe is one the nicest frameworks to work with (once you get it up and running) with tons of places to hook up your own behavior and probably the most HTTP-friendly of them all (for example, requesting a resource in a format that is not configured, returns a proper 406 Not Acceptable code).
Their support for dependency management is kind of nice, but a bit verbose for my liking, but one can use of of the multiple hooks to have the IOC container of the month working with the framework and using all the coolness of the container for dependency registration.

Final sayings? It will be a killer framework once it settles down from the code/project/repository migrations turmoil, the new version is released and contributors fix the build and the doc. Until that happens, I won’t be getting anywhere close for production purposes.

And for pity’s sake! Include some sort of binary distribution for those that have not drunk from the OpenWrap chalice! I am not even suggesting a lame NuGet package. That would be too low, wouldn’t it? Winking smile

share class ,