Microsoft Astoria:
Microsoft recently announced one of its upcoming project Codename Astoria at MIX '07. Astoria is an implementation of RESTful architecture to provide data services over HTTP without using any underlying Messaging services such as Web Services or SOAP. Before going in further details lets take a look at REST architecture.
Representational State Transfer (REST) is a style of software architecture for distributed hypermedia systems such as the World Wide Web.
“Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use.”
— Dr. Roy Fielding,(def from wikipedia)
Systems that follow Fielding's REST principles are often referred to as RESTful;
Astoria: Data Services for the Web
Project Astoria consists of a combination of patterns, libraries and an online service that explores the concept of data services for the web. Currently, Astoria data services use relational databases as the underlying store, but in general the nature of the store does not surface in the Astoria interfaces.
The goal of Astoria is to facilitate the creation of flexible data services that are naturally integrated with the web. As such, Astoria uses URIs to point to pieces of data and simple, well-known formats to represent that data, such as JSON and plain XML. This results in the data service being surfaced to the web as a REST-style resource collection that is addressable with URIs and that agents can interact with using the usual HTTP verbs such as GET, POST or DELETE.
In order for the system to understand and leverage semantics over the data that is surfacing, Astoria models the data exposed through the data service using a model called the Entity Data Model (EDM), an Entity-Relationship derivative. This organizes the data in the form of instances of "entity types", or "entities", and the associations between them as described in the Astoria Overview document .
The URI addressing scheme used by Astoria is also very simple it follows convention based approach (as used in ruby on Rails and in java struts 2.0 for mapping URLs to methods) to access the underlying data source. some examples are
http://myserver/data.svc/Customers[ALFKI]/Orders
http://myserver/data.svc/Customers[ALFKI]/Orders[Active eq true]
The URL upto http://myserver/data.svc/ is the physical URL while the rest is logical which refers to the Customers table
using ALFKI as key to retrieve orders of that customer. Entities are exposed on Uri on which we can perform GET, POST or DELETE operations. Astro when combined with LINQ becomes more powerful as the underlying source can be a Relational Database or any other datasource.
Links & References:
http://astoria.mslivelabs.com/
http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.xfront.com/REST-Web-Services.html
http://www.infoq.com/news/2007/05/astoria
http://www.base4.net/Blog.aspx?ID=395
http://udidahan.weblogs.us/2007/05/01/does-rest-simplify-communication-more-than-soa/