PRACTICA 005: WebServices con WCF y SQL Server
Ing. Honoria Reyes Macedo
IDE: Microsoft Visual Studio 2012 o mayor
Framework: .NET Framework 3.5 o mayor
Servidor Web: IIS(Internet Information Server)
Navegador web: Chrome, Firefox, safari, edge…
PROGRAMA PARA HACER TEST AL WEB SERVICE: WcfTestClient.exe
Base de Datos: SQL Server
INTRODUCCION
Para utilizar arquitectura orientada a
servicios (SOA) se utilizará el modelo de programación
WCF (Windows Comunication Foundation). Su intercambio de información es mediante mensajes.
Para probar el servicio utilizar la aplicación WcfTestClient.exe
(Buscar el archivo dentro de la carpeta de Visual Studio que se instaló):
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE
El desarrollo con WCF se basa en servicios. Un servicio es un
programa que expone una colección de Endpoints (puntos de acceso). Un cliente
es un programa que intercambia mensajes con uno o más Endpoints.
Un Endpoint de un servicio está compuesto por:
- una Address(“Donde”) à Es la dirección en internet
URL, http://www.ejemplowcf.com/miServicioWCF/EjemploServicio.svc
- un Binding(“Como”) à Es el enlace a los servicios
Protocolo de
transporte(TCP, http, MSMQ…)
Tipo de codificación(texto,
binario)
Seguridad(SSL,
seguridad basada en msg SOAP…)
- un Contract(“Que”) à Define que hace el servicio
Se comunica de acuerdo a su
contrato:
Usa una interface “Service
contract”(Que define que puede hacer un service):
-Usa los operation
contract(Define las operaciones y parametros),
- se define como message
contract, y sus parametos como data contract(Tipos de datos),cuando usa datos no primitivos ((int, char, etc))
-Usa fault contract(tipos
de errores de operation contratct).
También define la
dirección de la operación (one way, request/replay, duplex).
El proyecto se llamará “WcfServMaterias”
La ubicación del proyecto será en “C:\Temp\sitioXML”
ACTIVIDADES
1.- CREAR EL PROYECTO “WcfServMaterias” EN LA CARPETA
“C:\Temp\sitioXML”
1.1 CREAR NUEVO PROYECTO
Si no tiene la opción para crear una Aplicación WCF à Buscar WCF
Si no lo encuentra, seleccionar las letras azules “Instalar más
herramientas y características”
Seleccionar Aplicación de servicios WCF y botón “Siguiente”
El proyecto queda así:
El archivo en donde se crea el servicio (con sus controladores declarados en la interface) --> “Service1.svc.cs”
El archivo(interface) que define los controladores (para declarar los contratos de
los servicios) --> “IService1.cs”
El nombre del servicio --> Service1.svc
1.2.- CONFIGURAR EL
PROYECTO
En propiedades del proyecto(
Con mouse derecho seleccionar web )
Observar la URL del proyecto en servidores à Seleccionar “IIS
local "
Nota:
En algunos casos no encuentra el directorio virtual,(Error 404)
seleccionar
botón “Crear directorio virtual”
En Referencias (Verificar
el proveedor de bases de datos)
System.Data.SqlClient
System.Data
En el archivo Web.config
à agregar la cadena de conexión siguiente: Las letras rojas es el
nombre de mi servidor de bases de datos, el usuario y la contraseña. La
conexión se llamará “dbconnection”
<connectionStrings>
<add name="dbconnection"
connectionString="data source=DESKTOP-4STMUEA\SQLEXPRESS;initial catalog=DBservicioWeb;user id=sa;password=admin"
providerName="System.Data.SqlClient" />
</connectionStrings>
2.- CREAR LOS ARCHIVOS DE TRABAJO
2.1 AGREGAR 2 CARPETAS “Data” y “Entity”
(con
mouse derecho sobre el proyecto)
Quedará asi:
2.2 AGREGAR CLASES A LAS
CARPETAS
En Entity à Alumno.cs y Materia.cs
En Dataà AlumnoDAO.cs y MateriaDAO.cs
Quedará así:
2.3 AGREGAR CONTENIDO A LAS CLASES Materia.cs y Alumno.cs:
En Materia.cs à Agregar la
declaración de sus atributos, con sus get y set respectivos:
public int cveMateria
{ get; set; }
public string
descripcion { get; set; }
public string
calificacion { get; set; }
public int semestre { get; set; }
public int anio {
get; set; }
public int grupo {
get; set; }
En Alumno.cs à Agregar la declaración de sus atributos, con
sus get y set respectivos:
(Observar que un atributo será de tipo
List<Materia>)
public string nombre
{ get; set; }
public int cveAlumno
{ get; set; }
public string foto {
get; set; }
public
List<Materia> materias { get; set; }
2.4 AGREGAR CONTENIDO A LAS
CLASES MateriaDAO.cs y AlumnoDAO.cs
En MateriaDAO.cs à Agregar las librerías/carpetas a usar
using System.Data;
using
System.Data.SqlClient;
using System.Configuration;
using
WcfServMaterias.Entity;
En MateriaDAO.cs à Conectarse a la
Base de datos con “dbconnection” y
agregar la función
“LeerMaterias()” de tipo List<Materia> (parte sombreada)
En AlumnoDAO.cs à Agregar las librerías/carpetas a usar
using System.Data;
using
System.Data.SqlClient;
using System.Configuration;
using
WcfServMaterias.Entity;
En AlumnoDAO.cs à Conectarse a la Base de datos con “dbconnection” y
agregar la función
“LeerAlumnos()” de tipo List<Alumno> ( parte sombreada)
(Observa que por
cada alumno agrega una lista de materias)
2.5 CREAR UN SERVICIO WEB
En Service1.svc.cs à Agregar las
librerías/carpetas a usar (parte sombreada)
using
WcfServMaterias.Entity;
using WcfServMaterias.Data;
En Service1.svc.cs à Agregar el servicio “GetAlumnos()”
de tipo List<Alumno>
(parte sombreada)
En IService1.cs à Agregar las librerías/carpetas a usar
En IService1.cs à Declarar el servicio a usar dentro de la interface
(Parte sombreada)
3.- COMPILAR Y EJECUTAR
3.1 Compilar la solución:
3.2 Ejecutar en IIS local:
Resulta la siguiente pantalla:
Seleccionar el servicio “Service1.svc”
4.- USAR PROGRAMA PARA HACER TEST AL WEB SERVICE
4.1 Utilizar la aplicación WcfTestClient.exe
(Buscar el archivo
dentro de la carpeta de Visual Studio que se instaló)
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\Common7\IDE
Al dar doble click en WcfTestClient.exe se abre la siguiente ventana:
Agregar servicio con mouse derecho
Agregar la dirección o url del servicio creado
4.2 Seleccionar el servicio
“GetAlumnos()” y presionar “Invocar”
(hacer la prueba sin valores y otra con la
clave de un alumno)
Mostrará el resultado (Con formato):
Y Mostrara el resultado(XML)
--------------------------------------------0--0------------------------------------------
----------------------------------------000---000---------------------------------------
ANEXO I (Cuando se conecta a SQL Server con Windows Authentication)
En esta cadena no se pone el usuario y
el password
<connectionStrings>
<add name="dbconnection" connectionString="data source=DESKTOP-4STMUEA\SQLEXPRESS;initial catalog=DBservicioWeb;Integrated Security=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
--------------------------------------------0--0------------------------------------------
----------------------------------------000---000---------------------------------------
ANEXO II (Verificar las características de Windows:)
Con
estas características se evitará el error 500.19
--------------------------------------------0--0------------------------------------------
----------------------------------------000---000---------------------------------------
ANEXO III (Cuando el IDE te propone al capturar el codigo)
Activar el modo
inteligente de Visual Studio:
--------------------------------------------0--0------------------------------------------
----------------------------------------000---000---------------------------------------
ANEXO IV (VERIFICAR QUE SOLO UN MOTOR DE SQL SERVER ESTE
CORRIENDO)
Verificar en SQL
Server Configuration Manager, o
En “administración
de Internet Information Services” (con mouse derecho sobre mi equipo +
administrar)
--------------------------------------------0--0------------------------------------------
----------------------------------------000---000---------------------------------------
ANEXO (ERRORES)
a)
De base de datos:
Resolver conexion:
Verificar la cadena de conexion en el archivo web.config
Que corresponda el nombre del servidor, el usuario y el password de tu SQL Server instalado:
<connectionStrings>
<add name="dbconnection" connectionString="data source=DESKTOP-4STMUEA\SQLEXPRESS;initial catalog=DBservicioWeb;user id=sa;password=admin" providerName="System.Data.SqlClient" />
</connectionStrings>
************* **************** **************
b)
No reconoce la ubicación del sitio web
Resolver: “Crear directorio virtual” (Desde propiedades del
proyecto, en la sección web):
---------------------------------------------0----0----------------------------------------
------------------------------------------000---000--------------------------------------