REST and WCF 3.5
The first version of WCF was focused on SOAP. But another
approach known as REST is becoming a popular approach for
building web services. The latest version of WCF in the
.NET Framework 3.5 supports both SOAP and REST.
What is REST?
REST is an acronym standing for
Representational State Transfer and it is an architecture
style of networked systems. According to Roy Fielding (one
of the principal authors of the Hypertext Transfer
Protocol (HTTP) specification) , the explanation of
Representational State Transfer is :
"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." Systems that follow
Fielding’s REST principles are commonly known as
“RESTful”;
REST means that each unique URL is a
representation of some object. You can get the contents of
that object using an HTTP GET, to delete it, you then
might use a POST, PUT, or DELETE to modify the object.
Unlike
SOAP, REST is not a standard or specification. It is just
an architectural style. You can design your web services
using this architectural style.
REST is using
the built-in operations in HTTP: GET, POST, and others.
And rather than identify the information to be accessed
with parameters defined in XML, as SOAP typically does,
REST assumes that everything is identified with a URL.
However REST is not a standard, it does use the following
standards
- HTTP
- URL
-
XML/HTML/GIF/JPEG/etc (Resource Representations)
- text/xml, text/html, image/gif, image/jpeg, etc
REST Vs SOAP - Which is the best approach?
Software Architects have been involving a never-ending
debate about whether SOAP-based or REST-style web services
are the right approach and recently the debate is too
heating up. Yahoo's web services are using REST and google
using SOAP for their web services. Some organizations have
web services for both REST and SOAP. REST is Lightweight
than SOAP because it does not requires lot of xml markup
like SOAP.
I believe that SOAP will be the primary
choice for intranet and enterprise level applications
because SOAP and the WS-* specifications addresses many
challenges of enterprise level applications such as
reliability, distributed transactions, and other WS-*
services. But I think open, Internet applications will
gear towards to REST because of REST’s explicitly
Web-based approach and its simplicity.
RESTful services for WCF 3.5
WCF 3.5 provides explicit support for RESTful
communication using a new binding named WebHttpBinding.
The
below code shows how to expose a RESTful service
[ServiceContract]
interface
IStock
{
[OperationContract]
[WebGet]
int
GetStock(string StockId);
}
By
adding the WebGetAttribute, we can define a service as
REST based service that can be accessible using HTTP GET
operation.