jueves, 13 de febrero de 2014

Restful

RESTFUL

Principios de RESTFUL:

La tecnología REST Ful está ganando amplia adopción en toda la web como una alternativa más simple y menos compleja a diferencia de SOAP. Por ello varios proveedores están migrando a esta tecnología tales como: Facebook, Google, Yahoo etc.

1: ¿En qué consiste?

En base a los principios REST tenemos:

Podemos entender el uso de esta tecnología como un protocolo cliente/servidor sin estado, es decir cada mensaje HTTP contiene toda la información necesaria para comprender la petición. Como resultado, ni el cliente ni el servidor necesitan recordar ningún estado de las comunicaciones entre mensajes. Por ello, muchas aplicaciones basadas en HTTP utilizan cookies y otros mecanismos para mantener el estado de la sesión (algunas de estas prácticas, como la reescritura de URLs, las cuales no son permitidas por REST)
Así mismo, se aplican conjunto de operaciones bien definidas: las más importantes son POST, GET, PUT y DELETE. Con frecuencia estas operaciones se equiparan a las operaciones CRUD que se requieren para la persistencia de datos.
En un sistema REST se utiliza una sintaxis universal para identificar los recursos, cada uno es direccionable únicamente a través de su URI.
El uso de hipermedios, tanto para la información de la aplicación como para las transiciones de estado de la aplicación: la representación de este estado en un sistema REST son típicamente HTML o XML. Como resultado de esto, es posible navegar de un recurso REST a muchos otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional.

2: ¿Cómo implementarlo?

A.- Empecemos con un proyecto de aplicación web asp.net en blanco en Visual Studio

   1:  <configuration>

   2:      <system.web>

   3:          <compilation debug="true" targetFramework="4.0" />

   4:      </system.web>

   5:  </configuration>



B.-Creamos interfaces en WCF a definir nuestra ServiceContract y las operaciones de la siguiente manera:



   1:  [ServiceContract]

   2:  interface IPersonService

   3:  {

   4:      [OperationContract]

   5:      Person GetPerson(string id);

   6:  

   7:      [OperationContract]

   8:      Person InsertPerson(Person person);

   9:  

  10:      [OperationContract]

  11:      Person UpdatePerson(string id, Person person);

  12:  

  13:      [OperationContract]

  14:      void DeletePerson(string id);

  15:  }

 C.- Encapsulamos todos los atributos WCF en la interfaz en lugar de su clase de implementación.


   1:  [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

   2:  public class PersonService : IPersonService

   3:  {

   4:      [WebGet(UriTemplate = "Person({id})")]

   5:      public Person GetPerson(string id)

   6:      {

   7:      }

   8:  

   9:      [WebInvoke(UriTemplate = "Person", Method = "POST")]

  10:      public Person InsertPerson(Person person)

  11:      {

  12:      }

  13:  

  14:      [WebInvoke(UriTemplate = "Person({id})", Method = "PUT")]

  15:      public Person UpdatePerson(string id, Person person)

  16:      {

  17:      }

  18:  

  19:      [WebInvoke(UriTemplate = "Person({id})", Method = "DELETE")]

  20:      public void DeletePerson(string id)

  21:      {

  22:      }

  23:  }



D. Configuramos el Web.config


   1:  <system.serviceModel>

   2:    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

   3:  </system.serviceModel>

E: Configuramos el Global.asax para que nuestra clase funcione sin un archivo .svc


   1:  public class Global : System.Web.HttpApplication

   2:  {

   3:      protected void Application_Start(object sender, EventArgs e)

   4:      {

   5:          RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(PersonService)));

   6:      }

   7:  }

   8:  </system.serviceModel>





3: Tecnologías

Existen diversos proveedores que utilizan la tecnología REST como:

Facebook
MercadoLibre
Twitter
Yahoo
Google


4: Especificaciones relacionadas

Mediante el uso de esta API de Java (Web Services (JAX-RS) API, es posible crear aplicaciones utilizando la tecnología REST, de una manera más rápida.

JAX-RS es un modelo de programación que proporciona un mecanismo para desarrollar servicios que siguen los principios de RES. Con el uso de JAX-RS, se simplifica el desarrollo de servicios RESTful.
JAX-RS es una API Java para desarrollar aplicaciones REST de forma rápida. Mientras que JAX-RS proporciona una forma más rápida de desarrollar aplicaciones web que los servlets, el objetivo principal de JAX-RS es crear servicios RESTful. JAX-RS 1.0 define una API de componente del extremo del servidor para crear aplicaciones REST. IBM® JAX-RS proporciona una implementación de la especificación de JAX-RS (JSR 311).


No hay comentarios.:

Publicar un comentario