miércoles, 27 de noviembre de 2013

Como desarrollar un servicio WEB con WCF

Dentro de una arquitectura orienta a servicios (SOA), es muy probable que nos veamos enfrentados a realizar servicios WEB, como hacerlo con las nuevas tecnologías? A continuación ilustro como desarrollar un servicio WEB con WCF en 7 pasos:

  • Creando un WCF Service Library
  • Configurando el contrato
  • Implementando el contrato del servicio
  • Creando un WCF Service Application
  • Configurando los EndPoitns
  • Probando el servicio
  • Consumiendo un servicio desde un cliente
Problema: El servicio que se desarrollara a continuación, simulará la revisión sobre una la lista negra/clienton, este revisará el último dígito del número de identificación proporcionado, si es par retornará VERDADERO (o sea es NEGATIVO), caso contrario si es impar retornará FALSO.
1. Creando un WCF Service Library
  • Crear un nuevo proyecto de tipo WCF(para este ejemplo en lenguaje C#), luego seleccionamos la plantilla WCF Service Library y lo nombramos así: ListaClintonService


  • Abrimos las propiedades del proyecto ListaClintonService y cambios el namespace o espacio de nombres que viene por defecto por: com.micompania.ListaClintonService
2. Configurando el contrato

  • Renombramos el archivo IService1.cs por ListaClintonServiceContract.cs y dentro del código de este cambiamos el namespace por: com.micompania.ListaClintonService y renombramos el nombre de la interfaz.
  • Luego borramos de ListaClintonServiceContract.cs
- Todos los comentarios
- La definición de la clase CompositeType
- Y los métodos GetData y GetDataUsingDataContract que se encuentran en la Interface
  • Modificamos el atributo [ServiceContract] de la clase ListaClintonServiceContract.cs e incluimos http://micompania.com/services/ListaClintonService
  • En la definición de la clase ListaClintonServiceContract definimos el método verificarDocumento que recibe como parámetro un string (numeroDocumento) y retorna un bool (Resultado).
  • Adicionamos al método verificarDocumento el atributo [OperationContract]

3. Implementando el contrato del servicio
  • Renombramos el archivo Service1.cs por ListaClintonServiceContractImplementation.cs y dentro del código de este cambiamos el namespace por: com.micompania.ListaClintonService y renombramos el nombre de la clase.
  • Borramos de la clase ListaClintonServiceContractImplementation.cs
-Todos los comentarios
-Y los métodos GetData y GetDataUsingDataContract
  • Implementamos la clase ListaClintonServiceContract


  • Definimos el Método:


Hacemos el build del proyecto: ListaClintonService 4. Creando un WCF Service Application
  • Adicionamos un nuevo proyecto de tipo Web y seleccionamos la plantilla WCF Service Application y lo nombramos así: ListaClintonServiceIISHost

  • En la propiedades del proyecto ListaClintonServiceIISHost en el tab WEB de la sección Servers especificamos el puerto: 8081 y guardamos los cambios.

  • Borramos del proyecto ListaClintonServiceIISHost
-El archivo IService1.cs
-El archivo Service1.svc
-El directorio App_Data
  • Adicionamos una referencia a ListaClintonService
  • Renombramos el archivo Service1.svc a ListaClintonService.svc
  • Dento del código del archivo ListaClintonService.svc cambiamos el atributo service a: com.micompania.ListaClintonService.ListaClintonServiceContractImplementation y borramos el atributo CodeBehind junto con su contenido.


  • Guardamos y construimos el proyecto ListaClintonServiceIISHost
5. Configurar los endPoitns del proyecto ListaClintonServiceIISHost
  • Hacemos clic derecho sobre el archivo de configuración, y hacemos clic en Edit WCF Configuraton
  • Renombramos los comportamientos, nombre del servicio y el contrato así:


  • Guardar los cambios y cerrar:

6. Probar el servicio ListaClintonService
  • Clic derecho sobre el servicio ListaClintonService.svc y colocar set as start page
  • Clic derecho sobre el servicio ListaClintonService.svc debug, start new instance
  • Se ha desplegado en nuestro IIS nuestro primer webService sobre WCF


7. Consumir un servicio:
  • Crear un proyecto WINDOWS con el Nombre ClientListaClintonService y adicione referencia de Servicio:

  • Haga clic en Discover para buscar los servicios locales, coloque en el NameSpace ClintonService


  • Adicione el NameSpace: ClientListaClintonService.ClintonService;
  • En la interfaz grafica coloque los siguientes controles:txtNumeroDoc ylblResultadoDescripcion donde mostrara el resultado

  • Proceda Añadir el siguiente codigo en el boton:
private void Aceptar_Click(object sender, EventArgs e) { ClintonService.ListaClintonServiceContractClient newLista = new ListaClintonServiceContractClient();
if (newLista.verificarDocumento(this.txtNumeroDoc.Text)) this.lblResultadoDescripcion.Text = "Esta en lista Negra";
else this.lblResultadoDescripcion.Text = "No esta en lista Negra";
}
  • Resultado con numero documento par:

  • Resultado con numero documento Impar:







Edner Llacsa.

martes, 1 de octubre de 2013

Introducción a WCF (Edner Llacsa)

Seguro que esto lo ha leído en un montón de sitios, pero considero que es fundamental para el que comienza con WCF.
WCF antes denominado Indigo (un nombre mas elegante) es el framework unificado para el desarrollo de sistemas distribuidos, de manera, que todas las tecnologias que teniamos en nuestras manos (Servicios Web, DCOM+, Remoting...) las tenemos ahora en una unica tecnología. Pero ademas nos proporciona una serie de servicios que nos van a permitir aislarnos de cuestiones de comunicacion y protocolos.
El ABC en WCF es una regla nemotecnica que nos permite recordar de manera facil tres conceptos importantismos en WCF
  • Address: Nos va a indicar donde esta el servicio, esto se traduce en una URI del tipo de los servicios Web http:\\localhost\MiServicio.asmx pero ahora estas Uris pueden direccionar los siguientes protocolos.
    1. HTTP
    2. TCP
    3. NamedPipe
    4. Peer2Peer
    5. MSMQ
  • Binding: Un binding nos especifica como se accede al servicio, esto es: protocolo que se utiliza, codificación (texto, binario...) y protocolos WS-* que permiten mensajes transacionales.
  • Contract: El contrato nos indica que ofrece el servicio, es decir, que metodos y operaciones expone .
Para un servicio pueden existir diferentes combinaciones de ABC, por ejemplo un servicio puede exponer n operaciones (metodos) y pueden haber muchascombinaciones ABC para un cierto servicio (p.ej. que expone operaciones, con un protocolo distinto y mediante un URL distinto). Cada combinación se denomina un endpoint, o sea que un servicio de WCF puede tener múltiples endpoints
Un Dibujo vale mas que mil palabras










wcfabc.png















Edner Llacsa
http://ednerllacsa.blogspot.com/