OpenRasta status update

This entry may be outdated. For the latest updates on openrasta, see

Already a month since the last updates, and I’ve been churning quite a bit of code. Most of it has been to finish extending the support for multipart types, which was blocking a couple of scenarios (html file upload and silverlight bidirectional http being the two main ones).


  • OpenRastaHandler is now a handler factory.
  • Added a logging infrastructure and some initial instrumentation of the code.
  • All the ambient data is now cleanly separated and requires an IContextStore (Think HttpContext.Current.Items)


  • I thought I’d push the sub-stream implementation to later, but it is now done. Only one stream of a request exists, and when using a multipart encoding, a sub-stream will be created that lets you read within a multipart boundary transparently. This enables quite amazing scenarios.
  • StreamWriter is a bad boy, it closes a stream automatically when disposed. Added a DeterministicStreamWriter that lets you control the behavior of the stream on close.

Dependency Injection

  • Not much there, code has been expanded a bit to resolve properties too.

Html Forms

  • Support is now complete and stable.

Multipart support

  • This baby took much longer than I thought, but it has incredible powers. Multiparts as used in html forms are now fully supported, including files etc.
  • Codecs are recursive. That means each part in a multipart can itself be parsed by another codec. Think passing around form data, xml and binary all in one go, without coding involved.
  • Quoted-printable and base64 encodings in form names are also supported.

Complex-type construction

  • The default type construction algorithm used for both mutlipart/form-data and aplication/x-www-url-formencoded now supports both type strings and variable names. That means that for OperationResult Post(Customer c), you can now use c.FirstName or Customer.FirstName as the field-name, as well as using only the property name (aka firstname).
  • TODO: Sadly some of the code is still not shared between those two codecs, this is the next refactoring. Need to find a clean model to extract all this stuff into. Expect to see a lot of this code extracted in parameter binders, and an extension for codecs providing key/value pairs.  [Update: Done]


  • There’s new code for markup generation. The infrastructure is all based on chained extension methods for configuration, giving a nice fluent-like taste (except for the form tag, but can’t do anything about that).


  • Code coverage is slowly reaching 80%, but there’s still a lot of tests to write around error conditions.
  • There are some namespaces at 100%, which helped fix a bunch of errors in the internal dependency resolver.
  • More renames (MediaType has taken over from Content-Type nearly everywhere) and namespace reshuffling.

The code is getting more and more stable. Now I just need more testers and more people using OpenRasta. That, and a logo. And tutorials. And screencasts. Etc.


Visual Studio 2008 has buggy windowing code introduced in SP1… And no hotfix planned!

Update: Microsoft has released a hotfix. Thanks!

This issue keeps on coming up in my day to day work, and it takes me an hour or so everytime to fix… Whenever you have to deal with docked windows and visual studio changes the mode it is in, you end up with a fatal crash. It can happen when you start debugging, when you stop debugging, when you open a project or when you close the app.

This issue was, of course, not in the original vs2008…

These are the bugs I collected on Connect explaining the problem in more details. Microsoft has said they won’t fix because the code has been rewritten in vs10… But considering the stability of it at the moment, I want a hotfix now!

Anyway, here are the links. Don’t hesitate to nag everyone you know in DevDiv until someone takes responsibility to release a hotfix.

VS Shell team, do your homework and fix your regressions!


From talking to doing – Open Space Coding Day

We are having very interesting debates and conversations at every single event that has been organized. Talking with others is a great way to reach a common understanding and evolve as a community.

There has however not been that much coding involved, something that many people have found was missing. That’s why I’m very glad Alan Dean has announced the first iteration of a project he mentioned at our last Beers: the Open Space Coding Day. Go and give feedback now!