lunes, 13 de abril de 2020

005 WEB SERVICE SOAP CON WCF Y SQL SERVER


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




Copiar la dirección o url resultado para probarla en el Testeador de servicios
En este caso resulto la url:   http://localhost/WcfServMaterias/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--------------------------------------

No hay comentarios.:

Publicar un comentario