Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time
13 lines (12 sloc) 3.73 KB
layout: post
title: OpenRasta status update
date: '2009-01-02T20:05:00.002Z'
tags: [openrasta]
modified_time: '2009-06-09T01:07:09.788+01:00'
comments: true
<p><b>This entry may be outdated. For the latest updates on openrasta, see <a href=""></a>.</b></p>
<p>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).</p> <h4>Infrastructure</h4> <ul> <li>OpenRastaHandler is now a handler factory. </li> <li>Added a logging infrastructure and some initial instrumentation of the code. </li> <li>All the ambient data is now cleanly separated and requires an IContextStore (Think HttpContext.Current.Items) </li> </ul> <h4>IO</h4> <ul> <li>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. </li> <li>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. </li> </ul> <h4>Dependency Injection</h4> <ul> <li>Not much there, code has been expanded a bit to resolve properties too. </li> </ul> <h4>Html Forms</h4> <ul> <li>Support is now complete and stable. </li> </ul> <h4>Multipart support</h4> <ul> <li>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. </li> <li>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. </li> <li>Quoted-printable and base64 encodings in form names are also supported. </li> </ul> <h4>Complex-type construction</h4> <ul> <li>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 <em>OperationResult Post(Customer c)</em>, you can now use c.FirstName or Customer.FirstName as the field-name, as well as using only the property name (aka firstname). </li> <li><em><strike>TODO</strike>:</em> 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.&#160; [Update: Done]</li> </ul> <h4>Markup</h4> <ul> <li>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). </li> </ul> <h4>Misc</h4> <ul> <li>Code coverage is slowly reaching 80%, but there’s still a lot of tests to write around error conditions. </li> <li>There are some namespaces at 100%, which helped fix a bunch of errors in the internal dependency resolver. </li> <li>More renames (MediaType has taken over from Content-Type nearly everywhere) and namespace reshuffling. </li> </ul> <p>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.</p>