lunes, 27 de abril de 2020

006 WEB SERVICE SOAP

PRACTICA 006:  Identificar las partes de un servicio SOAP
Ing. Honoria Reyes Macedo 

Testeador de servicios web: WcfTestClient.exe 
Servidor Web: IIS (Internet Information Server)
Navegador web: Chrome, Firefox, safari, edge…
Base de Datos: SQL Server

INTRODUCCION
Existen servicios SOAP y REST, y actualmente también creados con JSON
Un servicio web SOAP utiliza las tecnologías WSDL, UDDI, XML
Un mensaje SOAP es un documento XML que contiene los siguientes elementos:
· Una etiqueta Envelope que identifica el documento XML como un mensaje SOAP.
· Un elemento Header que contiene la información del encabezado.
· Un elemento body que recoge la información del cuerpo.
· Un elemento Fault que contiene errores y el estado de la información.

<?xml version="1.0"?>
<soap:Envelope  xmlns:soap=http://www.w3.org/2001/12/soap-envelope  soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
...
</soap:Header>
<soap:Body>
<soap:Fault>
...
</soap:Fault>
</soap:Body>
</soap:Envelope>

ACTIVIDADES

1.- Identificar los WSDL que describen el servicio web generado en la practica anterior
1.1 Ejecutar el servicio en un navegador web
http://localhost/WcfServMaterias/Service1.svc








1.2   Abrir el archivo WSDL y hacer una descripción de lo que contiene.







2.- Agregar un registro de un alumno FULANITO con tus apellidos  y con una materias asignada en la base de datos SQL Server:

Ejemplo:  FULANITO REYES MACEDO
                MECANICA 10


3.- Abrir el programa que testea
 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










4.- Agregar el servicio creado en la práctica anterior












4.1 Invocar el servicio  GetAlumnos(), filtrando solo la clave del alumno agregado











4.2 Observar lo que muestra el cliente de prueba WCF . En la SOLICITUD 
         Marcar las partes del SOAP (Con colores diferentes, rectangulos o llaves)






EJEMPLO EN SOLICITUD:






4.3 Tambien en la parte de RESPUESTA 
Marcar las partes del SOAP  (Con colores diferentes, rectangulos o llaves)

EJEMPLO 







------------------------------------------------------------0----0---------------------------------------------
---------------------------------------------------------000----000------------------------------------------




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--------------------------------------