Hola buenas a todxs!

Hoy veremos los servicios WCF (Windows Communication Foundation), que es un modelo de programacion para desarrollar aplicaciones con arquitectura orientada a servicios, es decir, a resolver peticiones de un cliente, devolviendo objetos ya preparados para interpretar desde el cliente. Por desgracia, solo se puede consumir un WCF desde lenguajes de Back (PHP, Java, C#…). El uso más común ahora son las administraciones públicas o internamente en las empresas.
Utilizando el protocolo SOAP, genera el XML correspondiente a las peticiones que puedes hacerle, y genera el Schema que contiene la estructura de los datos que nos enviará el servicio.

El nuestro incorporará acceso a datos, pero no tendrá Inyección de Depencencias. Veremos cómo montar un servicio WCF en un moment

Pero vamos al lío. Vamos a necesitar:
-Microsoft .NET Framework 4.5.1 o mayor
-Microsoft Visual Studio (yo uso el 2019)
-Microsoft SQL Server 2016, 2014, 2012, o Express
-Internet Information Server
-Windows 7 o superior

Creamos una solution vacía, la llamaremos GenerosMusicales

Una vez dentro, crearemos un nuevo proyecto Class Library(.Net Framework)

Eliminamos la clase que viene por defecto, y añadimos las referencias a System.ServiceModel y a System.Runtime.Serialization, para poder serializar nuestras clases

Añadimos EntityFramework y SqlClient desde el administrador de Nuget


Añadimos la Carpeta Models con estas clases:
-Genero(int idgenero, string nombre)
-Autor (int idautor, string nombre, int idgenero)
A cada clase se le decora con [Table(«NombreTabla»)] para enlazar la tabla de la base de datos con la clase, y [DataContract] para indicar que será un modelo de datos del servicio

Añadimos la carpeta data y creamos el Context


Añadimos también el Repository con los métodos para hacer las consultas a la bbdd a través del Context


Creamos una Interfaz IService con los métodos de consulta al Repository
A esta Interfaz, la decoraremos con [ServiceContract] para indicar que ahí estarán los métodos de los que podrá disponer el cliente. Esos métodos, también irán decorados con [OperationContract] para indicar que efectivamente son peticiones que se podrían hacer al Servicio


Y crearemos el Servicio, heredando esos métodos del IService de arriba, dándole a cada uno su función de llamada al método correspondiente del repositorio

Después, en la misma solución, añadimos un New Project, del tipo WCFService Application. La llamaremos WcfGeneros


Añadimos la referencia al proyecto de librería de clases

Eliminamos el archivo Service1.svc.cs que estará dentro de Service1.svc. Eliminamos también IService1.
En Service1.scv, ponemos en «Service»el nombre del Service de la Librería de clases (ServiceGeneros), y borramos «CodeBehind».
Renombramos Service1.svc. Se llamará ServiceGeneros.svc


Como es el host en el que busca la cadena de conexión, la pondremos aquí, en el Web.Config


Iremos al Administrador de NuGet e instalaremos también EntityFramework y SqlClient en el proyecto WCF


Podríamos perfectamente darle al F5 y ver que el servicio está corriendo perfectamente, respondiendo a las peticiones.


Una vez comprobadas todas, toca subir el servicio, nosotros lo subiremos a Azure como un AppService
Utilizaremos la herramienta del mismo Visual Studio
Haremos click derecho sobre el proyecto WCF, el host, y pulsamos en publish.
Seleccionamos «Azure»


y «AppService»


Seleccionamos «Nueva instancia» y configuramos el grupo de recursos y el identificador único.


Una vez en la pestaña de Publicación, pulsamos en «Publish» y automáticamente abrirá la página dedicada a nuestro Servicio WCF.

Tendremos que añadir el nombre del archivo de servicio de la aplicación Host (ServiceGeneros.svc) en la barra de direcciones, y veremos que estamos ONLINE!!

Espero que os haya servido el tutorial y nos vemos en la próxima!

~Gabri

Autor/a: Gabriel Macias Fernandez

Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma

Centro: Tajamar

Año académico: 2020-2021

Código: https://github.com/MaciVK/GenerosMusicales.git

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.