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.