The History...

Back at the Mix '07 conference hosted by Microsoft in Las Vegas Nevada, Pablo Castro demonstrated a technology for "accessing data services in the cloud". Project Astoria was a RESTful web service sitting on top of Microsoft's new Linq for Entities domain infrastructure due for release in early 2008. RESTful web services differ from your typical SOAP-based web services in that they do not pre-specify the schema. REST stands for Representational State Transfer and one of its main advantages is that it is lightweight and scalable. Every object can be accessed through a unique uniform resource indicator (URI) and sets of data can be queried in many fashions.

Shortly after the conference concluded members of the open source blogosphere demonstrated how it was possible to produce the same results of Project Astoria along with another Microsoft experiment called Project Jasper using NHibernate. Ayende Rahien wrote Bumbler in around two hours. Anders Noras then created a version of Astoria called MeanFiddler in about four hours.

With the industry buzzing about the possibilities of Astoria, it was apparent there needed to be an equivalent service available to other OR/M tools. According to the latest blog posts and documentation, Astoria is being developed only for the Linq to Entities project. Therefore, if you have a domain model using NHibernate, ActiveRecord, iBatis, Wilson ORMapper, or other similar infrastructure, you would either need to rewrite your domain or maintain a completely separate model if you wished to utilize Astoria. MeanFiddler was further developed from a demonstration into a functional framework robust enough for many applications. Where MeanFiddler excels is in it's open API. Providers can be written for any entity infrastructure providing you with the benefits of RESTful web services without the requirement of following a pure Microsoft path.

As of this writing, MeanFiddler is modeled very closely to the Astoria specifications but over time, MeanFiddler may progress in different directions based on the needs and desires of the open source community. I invite you all to come get involved!