Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time
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>