Vous êtes sur la page 1sur 43

CICLO 2014-II Mdulo:1

Unidad: 1

Semana: 1

TECNOLOGIA e-BUSINESS

MSc. Carlos Pea

TTULO DEL TEMA

WEB SERVICES

La evolucin del Web


El World Wide Web ha pasado de ser un medio para
la publicacin de informacin y contenidos, a
convertirse en una plataforma para el diseo y
desarrollo de aplicaciones informticas distribuidas
El navegador se ha convertido en un cliente
universal que facilita el desarrollo de aplicaciones
y la adopcin de nuevas soluciones tecnolgicas,
al reducir costes de mantenimiento.
A lo largo del pasado ao se ha popularizado un
nuevo paradigma en el diseo de aplicaciones
informticas para la web: los llamados web
services (servicios web).

La evolucin del Web


En el modelo de aplicacin web tradicional
encontramos una importante limitacin: la
interaccin comienza y termina en dos puntos
claramente definidos: la peticin del usuario y la
respuesta de la aplicacin informtica.
nicamente son dos los interlocutores que
participan en este proceso
En cada intercambio de informacin que se
produce, la aplicacin informtica debe construir
una pgina resultado en formato HTML para
presentar la informacin al usuario.
Qu sucedecera si la aplicacin informtica
tuviese que recurrir a un tercer sistema informtico
para satisfacer la peticin cursada por el usuario?

La evolucin del Web


Un servicio web se suele definir como una unidad
de aplicacin capaz de ofrecer datos o servicios de
procesamiento a otras aplicaciones informticas.
As, una aplicacin podra ofrecer distintos
servicios a otras aplicaciones. Las caractersticas
de estos servicios son:
Que se solicitan a travs del web
Que los resultados de su ejecucin tambin se
devuelven a la aplicacin peticionaria a travs
del web
Que se tramitan segn un modelo
estandarizado.

La evolucin del Web


El concepto de servicio web est arropado por una
serie de estndares publicados por el W3C y
apoyados por los principales fabricantes de
tecnologa (IBM, Microsoft, etc.),
Estos estndares sealan cmo se deben cursar
las peticiones de servicio a servidores remotos, la
forma en la cual stos deben enviar los resultados,
y cmo se deben publicar o dar a conocer los
servicios que estn accesibles a travs de un
servidor web.
Ninguno de estos estndares trata la forma en la
que debe implementarse o programarse el servicio
en s mismo. En este punto, se deja libertad
absoluta a los fabricantes y proveedores para elegir
el lenguaje de programacin que deseen utilizar.

Qu es un servicio web
Un servicio web consiste en una funcin
disponible en un servidor conectado al web. Esta
funcin puede consistir en cualquier cosa:
Realizar un simple clculo con unos datos que se le
envan como parmetro,
Acceder a una base de datos para recuperar un conjunto
de registros,
Validar la correccin de una informacin o contrastarla
frente a otros datos, etc.
El servicio web podr ser solicitado desde otro programa
informtico que se ejecute en un ordenador conectado al
web. Junto a la solicitud de la ejecucin, se pueden enviar al
ordenador que ofrece el servicio unos parmetros que el
servicio web remoto tomar como base para el clculo o la
funcin.

Qu es un servicio web
La aplicacin que acta como cliente debe
conocer:
La URL del servidor remoto que ofrece el servicio,
El nombre del servicio que se solicita, y
Los parmetros que se deben enviar junto con la llamada
al servicio.

Estos datos se enviarn mediante HTTP


El servidor que ofrece el servicio web leer los
parmetros que se le han enviado, llamar a un
componente o programa encargado de
implementar el servicio, y los resultados que se
obtengan de su ejecucin sern devueltos al
servidor que solicit la ejecucin del servicio.

Estndares para servicios web


Los servicios web se definen a partir de las
siguientes especificaciones:
SOAP (Simple Object Access Protocol)
WSDL (Web Services Description Language)
UDDI (Universal Description, Discovery and Integration)

Del mantenimiento de las dos primeras, SOAP y


WSDL se encarga el W3C. En el caso de UDDI, se
trata de un proyecto en el que participan distintas
empresas
El lenguage XML constituye la base de todos ellos.

Esquema del funcionamiento de servicios web


registro

objRef

objRef.f(arg)

Cliente

Interfaz comn

obj

obj.f(arg)

Servidor

SOAP (Simple Object Access


Protocol)

La especificacin SOAP indica cmo se deben


codificar los mensajes que circularn entre las dos
aplicaciones.
Fue definido inicialmente por Microsoft, Userland
Software y DevelopMentor, a da de hoy se trata de
una especificacin mantenida por el W3C que
cuenta con el apoyo de otros fabricantes como IBM,
HP, Oracle, etc.
La especificacin SOAP define dos modelos de
mensajes:
Un mensaje que se enviar desde la aplicacin cliente a la
aplicacin servidor, solicitando la ejecucin de un mtodo
al que se pasan una serie de parmetros.
Un mensaje que se enviar desde la aplicacin servidor a la
cliente, y que contendr datos XML con los resultados de la
ejecucin del mtodo solicitado.

Ejemplo mensaje SOAP peticin


<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAPENV=http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<catalogo:buscaIsbn
xmlns:catalogo="http://catalogo.org/cat">
<catalogo:isbn>
84-4553-3334-2X
</catalogo:isbn>
</catalogo:buscaIsbn>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Ejemplo mensaje SOAP respuesta


<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAPENV=http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<catalogo:buscaIsbnResponse
xmlns:catalogo="http://catalogo.org/cat">
<catalogo:titulo>
Catalogar materiales especiales
</catalogo:titulo>
<catalogo:autor>Marta de Juanes</catalogo:autor>
</catalogo:buscaIsbnResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Implementar SOAP
Para facilitar la creacin y el formateo de
los mensajes SOAP que deben
intercambiar las aplicaciones web, los
programadores disponen de distintas
utilidades y aplicaciones
Estas implementaciones incluyen
utilidades para generar los mensajes a
partir de componentes
Actualmente existen ciertas diferencias
en las implementaciones de los distintos
fabricantes

WSDL (Web Services Description


Language)
Permite describir los distintos mtodos o
funciones que estn disponibles en un servicio
web, as como su signatura, es decir, el nmero
de argumentos o parmetros que se les debe
pasar, y el tipo de dato que devolver la funcin
como resultado.
Se establece una equivalencia entre el documento
WSDL y un contrato que especifica los servicios
que el servidor se compromete a ofrecer al
cliente, siempre que ste los solicite de la forma
adecuada

WSDL (Web Services Description


Language)
Los documentos WSDL deben estar disponibles
en el servidor web que ofrece los servicios.
Como su creacin resulta compleja, las distintas
implementaciones de SOAP permiten generar
estos archivos de forma sencilla, sin necesidad
de conocer los elementos y la estructura del
esquema XML en el que se basan.

UDDI (Universal Description,


Discovery and Integration)

A medida que el nmero de proveedores de


servicios web aumente, ser necesario disponer de
un sistema de referencia que permita localizar
estos servicios. Este es el propsito del proyecto
UDDI
UDDI es un proyecto relacionado con los servicios
web y que tiene importancia, si bien no es uno de
los componentes bsicos de la tecnologa sobre la
que se construye el paradigma de los servicios web

EVOLUCIN DE
ARQUITECTURAS

Evolucin de Arquitecturas
Arquitectura Cliente-Servidor

Aplicaciones Monolticas

Interfaces grficas de usuario (GUI).


Servicios de presentacin, negocios y
persistencia en la misma mquina.

No hay concurrencia de usuarios.


Alto acoplamiento entre tiers.

Presentacin
Lgica negocio
Persistencia

Clientes pesados, no estndar


Conexiones dedicadas a BD
Protocolos pesados
Ejecucin remota de SQLs

Alta administracin
Bajo rendimiento
Alto trfico de red
Baja accesibilidad

Presentacin
Lgica de negocio

21

Persistencia

Evolucin de Arquitecturas
Arquitectura Cliente-Servidor Mejorada

Aplicaciones 3 niveles

Clientes pesados, no estndar.


Conexiones dedicadas a la BD.
Lgica de negocios en BD
Mejora en rendimiento
Alta administracin
Baja escalabilidad
Baja flexibilidad
Baja portabilidad

Reutilizacin de lgica de negocio


para diferentes clientes o sistemas.
Mejora la escalabilidad.
Mejora la flexibilidad.
Independencia de la base de datos.

Clientes GUI
semi-livianos

Servidor de
Aplicaciones

Base de Datos

Presentacin
Clientes GUI
Semilivianos

Procedimientos
Almacenados

Negocio
(EJB, CORBA, COM+)
22

Evolucin de Arquitecturas
Aplicaciones N-niveles (clientes livianos)
Clientes
livianos

Web
Server

Servidor de
Aplicaciones

Database
Servers

100.000+

Despliegue de
contenido

Presentacin

Lgica de
negocios

Bajo costo de administracin de clientes.


Alta accesibilidad.
Alta flexibilidad.
Alta disponibilidad y tolerancia a fallos.
Alta escalabilidad.
Independencia de DB
23

Evolucin de Arquitecturas
Web Services
Web
Server

Clientes
livianos

Servidor de
Aplicaciones

Database
Servers

100.000+

Presentacin

Despliegue de
contenido
Clientes
livianos

Web
Server

Lgica de
negocios

Servidor de
Aplicaciones

100.000+

Despliegue de
contenido

Presentacin

Lgica de
negocios

24

Database
Servers

Componentes de SOA
Servicios: Entidades lgicas - Contratos definidos por una o
ms interfaces pblicas.
Service provider: Entidad de software que implementa una
especificacin de servicio.
Service consumer (o requestor): Entidad de software que
llama a un service provider. Tradicionalmente se lo llama
cliente. Puede ser una aplicacin final u otro servicio.
Service locator: Tipo especfico de service provider que acta
como registry y permite buscar interfaces de service
providers y sus ubicaciones.
Service broker: Tipo especfico de service
provider que puede pasar requerimientos
de servicios a otros service providers.

Principales conceptos
CBDI - Perspectivas arquitectnicas
Aplicacin - Servicio - Componente

Evolucin de Arquitecturas

Situacin actual de Sistemas


Empresariales

Las empresas necesitan agilidad en su


negocio:
Requerimientos cambian
continuamente.
Implementacin de nuevos programas o
servicios para atraer o retener clientes.
Requieren unificar, refina y medir sus
procesos de negocio

Requieren que su infraestructura de IT


se pueda adaptar al cambio, se flexible
y tener libertad de escoger nuevas
tecnologas o productos en una
relacin costo beneficio.

27

Evolucin de Arquitecturas
Procesos fragmentados
Aplicaciones publicadas en diferentes
departamentos y unidades de
negocios

Como se pueden integrar procesos y datos en una empresa


con una relacin costo beneficio efectiva?
Como ayuda la arquitectura de software?
28

Evolucin de Arquitecturas

Visin idealizada de Arquitectura Orientada a Servicios (SOA)


Sistema
Batch

Requerimientos
Arquitectnicos

Portal de
Servicios Integrados
Cluster de
Servidores de
Aplicaciones

Base de
Datos

Heterogeneidad
Servidor de
Procesos
Escalabilidad
(BPM)
Aplicaciones
Disponibilidad
Legadas
Distribucin
Manejabilidad de Procesos
Administracin y monitoreo de
procesos, servicios e infraestructura
29

Evolucin de Arquitecturas
Wearable
Web Server
Web Services

Servidor de
Aplicaciones

Entity data
server

Database
Servers

100.000+
Wi FI 3G 4G

Presentacin

TV
Clientes
livianos

Lgica de
negocios

Web
Server

Modelo de
entidades

Servidor de
Aplicaciones

100.000+

Despliegue de
contenido

Presentacin

Lgica de
negocios

30

Database
Servers

Evolucin de Arquitecturas
Segmentacin
Desktop
Tablet
Phone
TV
Auto
Reloj
Lentes
Drones
Robots

Evolucin de Arquitecturas
Hardware

Pantalla
Procesadores
Batera
Comunicacin
Mecnica electrnica

Evolucin de Arquitecturas
Plataformas
Phone
IOS
Android
Tizen OS
webOS
Windows
Mac OS
Linux (CentOS, Ubuntu, )

Evolucin de Arquitecturas
Tendencia tecnologa
Hardware + software
Inteligencia Artificial

Evolucin de Arquitecturas
Innovar
Crowd:
Crowdfunding
Crowdworking
Crowdsourcing
Crowdvoting
Estrategia
Automatizar procesos de la vida diaria
Desarrollarse dentro de un ecosistemas
Automatizar conocimiento (?)

LINQ: set - grabar


private BDLPVEntities bdlv = new BDLPVEntities();
public void setTipoTorneo()
{
TB_TIPO_TORNEO tipoTorneo = new TB_TIPO_TORNEO();
tipoTorneo.TIPO_TORNEO_iD = 1;
tipoTorneo.NOMBRE_TIPO_TORNEO = "Liga";
bdlv.TB_TIPO_TORNEO.Add(tipoTorneo);
bdlv.SaveChanges();
TB_TIPO_TORNEO tipoTorneo2 = new TB_TIPO_TORNEO();
tipoTorneo2.TIPO_TORNEO_iD = 2;
tipoTorneo2.NOMBRE_TIPO_TORNEO = "Eliminatoria.";
bdlv.TB_TIPO_TORNEO.Add(tipoTorneo2);
bdlv.SaveChanges();
}

LINQ: Grabar
public void grabarTipoTorneo(TB_TIPO_TORNEO ttt)
{
TB_TIPO_TORNEO tipoTorneo = new TB_TIPO_TORNEO();
tipoTorneo.TIPO_TORNEO_iD = ttt.TIPO_TORNEO_iD;
tipoTorneo.NOMBRE_TIPO_TORNEO = ttt.NOMBRE_TIPO_TORNEO;
bdlv.TB_TIPO_TORNEO.Add(tipoTorneo);
bdlv.SaveChanges();
}

LINQ: Select
public List<TB_TIPO_TORNEO> obtenerTipoTorneo()
{
List<TB_TIPO_TORNEO> listTipoTorneo = new List<TB_TIPO_TORNEO>();
var listaDatos = (from l in bdlv.TB_TIPO_TORNEO
select l);
foreach (TB_TIPO_TORNEO ttt in listaDatos)
{
listTipoTorneo.Add(ttt);
}
return listTipoTorneo;
}

LINQ: Borrar
public void borrarTipoTorneo(TB_TIPO_TORNEO ttt)
{
var listaDatos = (from l in bdlv.TB_TIPO_TORNEO
where l.TIPO_TORNEO_iD == ttt.TIPO_TORNEO_iD
select l).Single();
bdlv.TB_TIPO_TORNEO.Remove(listaDatos);
bdlv.SaveChanges();
}

LINQ: Modificar
public void modificarTipoTorneo(TB_TIPO_TORNEO ttt)
{
var listaDatos = (from l in bdlv.TB_TIPO_TORNEO
where l.TIPO_TORNEO_iD == ttt.TIPO_TORNEO_iD
select l).Single();
listaDatos.NOMBRE_TIPO_TORNEO = ttt.NOMBRE_TIPO_TORNEO;
bdlv.SaveChanges();
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using LGTEDM;
using System.ServiceModel.Web;

Interface WCF

namespace LGTWCF
{
[ServiceContract]
public interface ICrearTorneo
{
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "obtenerTipoTorneoWCFJson")]
TipoTorneoWCF obtenerTipoTorneoWCF();
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "obtenerListaTipoTorneoWCFJson")]
List<TipoTorneoWCF> obtenerListaTipoTorneoWCF();
[OperationContract]
void grabarTorneoWCF(TB_TORNEO torneo);
[OperationContract]
void grabarTorneo();
}
}

<?xml version="1.0" encoding="utf-8"?>


<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<connectionStrings>
<add name="BDLPVEntities" connectionString="metadata=res://*/GLT_EDM.csdl|res://*/GLT_EDM.ssdl|res://*/GLT_EDM.msl;provider=System.Data.SqlClient;provider connection
string=&quot;data source=LABDUED-30\SQLEXPRESS;initial catalog=BDLPV;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"
providerName="System.Data.EntityClient" />
</connectionStrings>
<system.serviceModel>
<services>
<service name="LGTWCF.CrearTorneo" behaviorConfiguration="ServiceBehavior">
<endpoint binding="webHttpBinding" contract="LGTWCF.ICrearTorneo"
behaviorConfiguration="webHttp"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint helpEnabled="true"
automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>

Web.config

GRACIAS

Vous aimerez peut-être aussi