Welcome to 3Dev Blogs Sign in | Join | Help
<June 2008>
SuMoTuWeThFrSa
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

Navigation

Syndication

WCF REST Services

Operaciones WCF para la Web

Estas operaciones se exponen a traves de URIs, los mensajes se transmiten sin la sobrecarga de SOAP, los parametros se pasan usando HTTP, el formato de los datos puede ser JSON o POX. WCF provee WebHttpBinding binding para soportar estas caracteristicas. Este binding tiene dos elementos. El primero es un nuevo encoder llamado WebMessageEncodingBindingElement, el cual permite seleccionar entre JSON o POX. El segundo elemento es un elemento binding de transporte basado en HttpTransportBindingElement o HttpsTransportBindingElement. El HttpsTransportBindingElement es usado para seguridad a nivel de transporte.

Para el binding WebHttpBinding pueden ser usados dos behaviors. El WebHttpBehavior y el WebScriptEnablingBehavior. El WebScriptEnablingBehavior behavior  se usara para  AJAX y JSON. El WebHttpBehavior behaviorse usa para formatear los mensajes usando JSON o XML. El valor por defecto es usar XML.

Ejemplo:

using System;
using System.ServiceModel;
using System.ServiceModel.Web;

[ServiceContract]
public interface IMensaje
{
    [OperationContract]
    [WebGet]
    string Responder(string mensaje);
}

using System;
using System.ServiceModel;

public class ServicioMensaje : IMensaje

{
    #region IMensaje Members

    public string Responder(string mensaje)
    {

        return mensaje;
    }

    #endregion
}

 

<system.serviceModel>
  <services>
    <service name="ServicioMensaje">
      <endpoint address=""
                behaviorConfiguration="WebBehavior"
                binding="webHttpBinding" contract="IMensaje"/>
    </service>
  </services>
  <behaviors>
    <endpointBehaviors>
      <behavior name="WebBehavior">
        <webHttp />
      </behavior>
    </endpointBehaviors>
  </behaviors>
</system.serviceModel>

 

POX y REST se basan ambos en invocaciones a traves de URLs para llamar a los metodos. Donde tienen diferencias es en la forma como son definidos estos URLs, y que verbos HTTP son usados para invocar las operaciones en cada URL.

WebGet Y WebInvoke

Los servicios pueden ser expuestos usando WebHttpBinding binding, usando ya sea los atributos WebGet o WebInvoke. Cada atributo especifica el verbo HTTP, el formato del mensaje y el estilo del cuerpo que se requiere para exponer una operacion.

WebGet

Este atributo exponer el verbo GET. Get tiene ventajas sobre los verbos HTTP. Primero, el endpoint puede ser accesado directamente via un navegador ingresando el URL del servicio en la barra de direcciones. Los parametros pueden ser enviados dentro del URI como query strings o dentro del URI. Este atributo debe ser usado para recuperacion.

WebInvoke

Este atributo expone los servicios usando los verbos HTTP como POST, PUT y DELETE. Por defecto es POST, pero puede ser modificado configurando la propiedad "Method" del atributo. Estas operaciones sirven para modificar recursos, por lo tanto este atributo debe ser usado para realizar modificaciones a recurso.

using System;
using System.ServiceModel;
using System.ServiceModel.Web;

namespace EssentialWCF
{
    [ServiceContract]
    public class ServicioCliente
    {
        [OperationContract]
        [WebGet(UriTemplate="/cliente/{id}")]
        public Customer LeerCliente(int id)
        {
            Customer customer = null;

            // Leer cliente de la base de datos
            return customer;
        }

        [OperationContract]
        [WebInvoke(Method = "PUT", UriTemplate = "/cliente/{id}")]
        public void EnviarCliente(int id, Customer customer)
        {
            // Grabar en la base de datos
        }

        [OperationContract]
        [WebInvoke(Method = "DELETE", UriTemplate = "/cliente/{id}")]
        public void EliminarCliente(int id)
        {
            // Grabar en la base de datos

        }
    }
}

Published Thursday, June 26, 2008 12:28 AM by jfrancia

Comments

# Contribuciones realizadas por MVPs en Junio08 @ Friday, July 04, 2008 9:27 AM

Articulos &#183; Data Profiling Task en Integration Services 2008 ; Alan Koo &#183; tutorial de Silverlight 1.0

MVPs en Latinoamerica

# re: WCF REST Services @ Tuesday, July 08, 2008 9:44 PM

Hola Joel, he vuelto a leer el articulo, está didactico,
pero estaría mucho mejor si es que las fuentes estarían para descarga, creo que eso sería de mayor utilidad para la gente.

Saludos.

jersson

Anonymous comments are disabled
Powered by Community Server, by Telligent Systems