2. Introduccion
Existen múltiples definiciones sobre lo que son los Servicios Web, lo que muestra
su complejidad a la hora de dar una adecuada definición que englobe todo lo que
son e implican. Una posible sería hablar de ellos como un conjunto de
aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas
aplicaciones o tecnologías intercambian datos entre sí con el objetivo de ofrecer
unos servicios. Los proveedores ofrecen sus servicios como procedimientos
remotos y los usuarios solicitan un servicio llamando a estos procedimientos a
través de la Web.
La definicion de wikipedia:
Un servicio web (en inglés, Web service) es una pieza de software que utiliza un
conjunto de protocolos y estándares que sirven para intercambiar datos entre
aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de
programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar
los servicios web para intercambiar datos en redes de ordenadores como Internet.
La interoperabilidad se consigue mediante la adopción de estándares abiertos.
Las organizaciones OASIS y W3C son los comités responsables de la arquitectura
y reglamentación de los servicios Web. Para mejorar la interoperabilidad entre
distintas implementaciones de servicios Web se ha creado el organismo WS-I,
encargado de desarrollar diversos perfiles para definir de manera más exhaustiva
estos estándares.
Estándares empleados
• Web Services Protocol Stack: Así se denomina al conjunto de servicios y
protocolos de los servicios Web.
• XML (Extensible Markup Language): Es el formato estándar para los datos
que se vayan a intercambiar.
• SOAP (Simple Object Access Protocol) o XML-RPC (XML Remote Procedure
Call): Protocolos sobre los que se establece el intercambio.
• Otros protocolos: los datos en XML también pueden enviarse de una
aplicación a otra mediante protocolos normales como HTTP (Hypertext
Transfer Protocol), FTP (File Transfer Protocol), o SMTP (Simple Mail Transfer
Protocol).
• WSDL (Web Services Description Language): Es el lenguaje de la interfaz
pública para los servicios Web. Es una descripción basada en XML de los
requisitos funcionales necesarios para establecer una comunicación con los
servicios Web.
• UDDI (Universal Description, Discovery and Integration): Protocolo para
publicar la información de los servicios Web. Permite comprobar qué
servicios web están disponibles.
3. • WS-Security (Web Service Security): Protocolo de seguridad aceptado como
estándar por OASIS (Organization for the Advancement of Structured
Information Standards). Garantiza la autenticación de los actores y la
confidencialidad de los mensajes enviados.
Como Funciona
Funcionamiento de los Servicios Web
Según el ejemplo del gráfico, un usuario (que juega el papel de cliente dentro de
los Servicios Web), a través de una aplicación, solicita información sobre un viaje
que desea realizar haciendo una petición a una agencia de viajes que ofrece sus
servicios a través de Internet. La agencia de viajes ofrecerá a su cliente (usuario)
la información requerida. Para proporcionar al cliente la información que necesita,
esta agencia de viajes solicita a su vez información a otros recursos (otros
Servicios Web) en relación con el hotel y la compañía aérea. La agencia de viajes
obtendrá información de estos recursos, lo que la convierte a su vez en cliente de
esos otros Servicios Web que le van a proporcionar la información solicitada sobre
el hotel y la línea aérea. Por último, el usuario realizará el pago del viaje a través
de la agencia de viajes que servirá de intermediario entre el usuario y el servicio
Web que gestionará el pago.
En todo este proceso intervienen una serie de tecnologías que hacen posible esta
circulación de información. Por un lado, estaría SOAP (Protocolo Simple de Acceso
a Objetos). Se trata de un protocolo basado en XML, que permite la interacción
entre varios dispositivos y que tiene la capacidad de transmitir información
4. compleja. Los datos pueden ser transmitidos a través de HTTP , SMTP , etc. SOAP
especifica el formato de los mensajes. El mensaje SOAP está compuesto por un
envelope (sobre), cuya estructura está formada por los siguientes elementos:
header (cabecera) y body (cuerpo).
Ventajas de los servicios web
• Aportan interoperabilidad entre aplicaciones de software
independientemente de sus propiedades o de las plataformas sobre las que
se instalen.
• Los servicios Web fomentan los estándares y protocolos basados en texto,
que hacen más fácil acceder a su contenido y entender su funcionamiento.
• Permiten que servicios y software de diferentes compañías ubicadas en
diferentes lugares geográficos puedan ser combinados fácilmente para
proveer servicios integrados.
Inconvenientes de los servicios Web
• Para realizar transacciones no pueden compararse en su grado de desarrollo
con los estándares abiertos de computación distribuida como CORBA
(Common Object Request Broker Architecture).
• Su rendimiento es bajo si se compara con otros modelos de computación
distribuida, tales como RMI (Remote Method Invocation), CORBA o DCOM
(Distributed Component Object Model). Es uno de los inconvenientes
derivados de adoptar un formato basado en texto. Y es que entre los
5. objetivos de XML no se encuentra la concisión ni la eficacia de
procesamiento.
• Al apoyarse en HTTP, pueden esquivar medidas de seguridad basadas en
firewall cuyas reglas tratan de bloquear o auditar la comunicación entre
programas a ambos lados de la barrera.
Razones para crear servicios Web
La principal razón para usar servicios Web es que se pueden utilizar con HTTP
sobre TCP (Transmission Control Protocol) en el puerto 80. Dado que las
organizaciones protegen sus redes mediante firewalls -que filtran y bloquean gran
parte del tráfico de Internet-, cierran casi todos los puertos TCP salvo el 80, que
es, precisamente, el que usan los navegadores. Los servicios Web utilizan este
puerto, por la simple razón de que no resultan bloqueados. Es importante señalar
que los servicios web se pueden utilizar sobre cualquier protocolo, sin embargo,
TCP es el más común.
Otra razón es que, antes de que existiera SOAP, no había buenas interfaces para
acceder a las funcionalidades de otros ordenadores en red. Las que había eran ad
hoc y poco conocidas, tales como EDI (Electronic Data Interchange), RPC (Remote
Procedure Call), u otras APIs.
Una tercera razón por la que los servicios Web son muy prácticos es que pueden
aportar gran independencia entre la aplicación que usa el servicio Web y el propio
servicio. De esta forma, los cambios a lo largo del tiempo en uno no deben afectar
al otro. Esta flexibilidad será cada vez más importante, dado que la tendencia a
construir grandes aplicaciones a partir de componentes distribuidos más
pequeños es cada día más utilizada.
Seguridad En Los Servicios Web
Como todas las aplicaciones, los servicios web requieren de mecanismos de
seguridad, tanto para los procesos de autenticación y autorización de usuarios,
como para impedir el acceso a la información que se transmite por Internet a
personas no autorizadas.
Dado que los servicios web ASP.NET son aplicaciones que se exponen a través de
una página ASP.NET de un servidor web como IIS, y utilizan el protocolo HTTP
como mecanismo de comunicación, se pueden utilizar los mecanismos de
seguridad que éstos proporcionan para la seguridad de la aplicación.
Autenticación
La autenticación es el proceso mediante el cual se identifica a un usuario y se le
concede acceso al sistema. IIS ofrece varios tipos de autenticación:
6. • Básica. Es un método de autenticación poco o nada seguro, ya que el nombre
de usuario y la contraseña se envían como texto codificado en base 64, que
puede ser fácilmente descodificado.
• Implícita. Utiliza algoritmos de hash para enviar los datos del cliente. Esta
opción no es compatible con todos los sistemas y herramientas de desarrollo de
servicios web.
• Autenticación de Windows integrada. Se utiliza el mismo mecanismo que el que
se utiliza para autenticar usuarios de un sistema Windows remoto. El cliente debe
pertenecer al mismo dominio que el servidor, o a un dominio en el que el servidor
confíe.
En cualquiera de los tipos de autenticación de IIS, se autorizará el acceso a los
servicios web si las credenciales coinciden con una cuenta de usuario valida. Las
páginas ASP.NET también proporcionan varios mecanismos de autenticación que
se pueden combinar con los mecanismos de autenticación de IIS. Los diferentes
tipos de autenticación son los siguientes:
• Autenticación mediante formularios. Las peticiones no autenticadas se redirigen
a un formulario HTML en el que el usuario proporciona sus credenciales y las
envía. Si la aplicación autentica la solicitud, se emite una cookie que contiene las
credenciales o una clave para emitir en posteriores peticiones en los encabezados
del mensaje.
• Autenticación mediante Passport. Se trata de un servicio de autenticación
centralizado, proporcionado por Microsoft, que ofrece a los sitios web suscritos
servicios de perfil básico e inicio de sesión único.
• Autenticación de Windows: ASP.NET utiliza la autenticación de Windows junto
con la autenticación de Servicios de Microsoft Internet Information Server (IIS).
Cuando IIS autentifica un usuario, ASP.NET utiliza sus datos para autorizar el
acceso.
Autorización
La autorización es un mecanismo por el cual se comprueba si un determinado
usuario tiene permiso para realizar una determinada acción solicitada. A
continuación, veremos algunos tipos de autorización que se pueden utilizar para
controlar el acceso a los servicios web:
• Seguridad de Windows NT. Se basa en la identidad del usuario y previene de
accesos no autorizados a recursos del sistema, mediante listas discrecionales de
control de acceso (DACL).
• Seguridad basada en roles. Se basa en los roles que un usuario puede asumir.
En función de los roles del usuario se determinan las acciones a las que este tiene
7. acceso o no.
Encriptación
La encriptación evita que los datos que se transmiten entre el consumidor y el
servicio web puedan ser interpretados por usuarios no autorizados. Se puede
utilizar un mecanismo de encriptación como SSL (Secure Sockets Layer) que
encripte toda la comunicación entre el consumidor servicio web, o implementar
una extensión personalizada de SOAP que permita encriptar solamente aquellas
partes del mensaje que lo requieran, para mejorar el rendimiento.
Creacion de Servicios Web
ASP.NET proporciona servicios de aplicación, a los que se puede obtener acceso
en la web, que permiten a las aplicaciones cliente usar la información de
autenticación, rol y perfil del usuario. Las aplicaciones cliente escritas en
lenguajes diferentes y que se ejecutan en sistemas operativos diferentes pueden
tener acceso a los servicios. El único requisito es que estos clientes deben poder
comunicar usando el protocolo SOAP 1.1.
Servicios web de google
Google ofrece Servicios a los desarrolladores para que puedan hacer peticiones a
Google desde sus propias aplicaciones.
Esta es una lista de los servicios.
• Google Trends se trata de una herramienta orientada a webmasters y
profesionales creada para realizar análisis cualitativos de las búsquedas,
pudiendose consultar estos por ciudades, regiones y por idioma. También
permite comparar varios términos.
• Google Website Optimizer: Una herramienta para mejorar los ratios de
conversiones de adwords de nuestras páginas
• Google Web Search motor de búsqueda de Google.
• Google Analytics analiza las páginas web, a través de un código javascript,
guardando todo tipo de estadísticas de los visitantes. Permite la integración
con una cuenta de AdWords.
• Google AdSense es el servicio de publicidad contextual de Google.
• Google AdWords es la otra parte de AdSense. Mientras AdSense permite a
los webmasters poner los anuncios en sus web, Adwords permite la
publicación de estos en la red de AdSense. Además el pasado 21 de
noviembre Google liberó el "Onsite Advertiser Sign-Up" que permite a un
anunciante publicar sus anuncios en sitios específicos de la red AdSense.
• Google Base Libreria de contenidos, portal de anuncios clasificados o
8. servicio inclasificable que permite añadir cualquier tipo de contenido a su
base de datos.
Servicios de Microsoft
Los servicios de aplicación ASP.NET son servicios Web integrados que
proporcionan acceso a características como la autenticación de formularios, las
funciones y las propiedades de perfil. Estos servicios forman parte de una
arquitectura orientada a servicios (SOA), donde una aplicación está compuesta de
uno o más servicios que proporciona el servidor y de uno o más clientes. Para
obtener más información sobre SOA, vea Understanding Service-Oriented
Architecture en el sitio web de MSDN.
Una característica importante de los servicios de aplicación ASP.NET es que están
disponibles para diferentes aplicaciones cliente, no sólo para aplicaciones web
ASP.NET. Los servicios de aplicación ASP.NET están disponibles para cualquier
cliente basado en .NET Framework. Además, cualquier aplicación cliente que
puede enviar y recibir mensajes en formato SOAP puede usar los servicios de
aplicación ASP.NET
Las aplicaciones cliente para los servicios de aplicación ASP.NET pueden ser de
diferentes tipos y se pueden ejecutar en sistemas operativos diferentes. Entre
ellas se incluyen los siguientes tipos de clientes:
• Clientes de AJAX. Son páginas web ASP.NET (archivos .aspx) que se ejecutan
en el explorador y que tienen acceso a los servicios de aplicación desde
script de cliente. Generalmente los clientes de AJAX usan el formato JSON
para intercambiar datos.
• Clientes de .NET Framework. Son aplicaciones para Windows de .NET
Framework que tienen acceso a los servicios de aplicación a través de HTTP
mediante la infraestructura de modelo del proveedor y que usan el
protocolo JSON para intercambiar datos.
• Clientes de SOAP. Son clientes que pueden obtener acceso a los servicios de
la aplicación a través de SOAP 1.1. Esto resulta útil para los clientes que se
ejecutan en otros sistemas operativos o que usan otras tecnologías, como
las aplicaciones Java.
La ilustración siguiente muestra cómo diferentes clientes se comunican con los
servicios.
Comunicación de servicio Web
9. Los servicios de aplicación que proporciona ASP.NET permiten a las aplicaciones
cliente obtener acceso y compartir información que forma parte de una aplicación
web. ASP.NET dispone de los servicios de aplicación siguientes:
• Servicio de autenticación. Este servicio permite conceder a los usuarios el
inicio de sesión en una aplicación. El servicio acepta las credenciales de
usuario y devuelve un vale de autenticación (cookie).
• Servicio de funciones. Este servicio determina las funciones relacionadas
con la aplicación para un usuario autenticado, basándose en la información
que proporciona un proveedor de funciones de ASP.NET. Esto puede ser útil
si desea proporcionar una interfaz de usuario específica o si desea permitir
el acceso a recursos específicos según la función del usuario.
• Servicio de perfil. Este servicio proporciona información por usuario como el
perfil de un usuario que está almacenado en el servidor. Esto permite a la
aplicación tener acceso a la configuración de un usuario en diferentes
momentos y desde diferentes componentes de la interfaz de usuario cliente
Clientes del servicio de aplicación
Esta sección proporciona detalles sobre los tipos de aplicaciones cliente que
pueden usar servicios de aplicación ASP.NET y alguna información cómo el cliente
se comunica con un servicio de aplicación.
Clientes de AJAX
Los clientes de AJAX (páginas web ASP.NET habilitadas para AJAX) intercambian
datos con servicios de aplicación a través de HTTP mediante solicitudes POST. Los
datos se empaquetan en formato JSON. La aplicación cliente se comunica con los
servicios de aplicación a través de clases de proxy de script de cliente. El servidor
genera las clases de proxy, que se descargan al explorador como parte de
cualquier página que llame a un servicio de aplicación.
10. Clientes de .NET Framework
Los servicios de aplicación ASP.NET intercambian datos con clientes de .NET
Framework a través de HTTP mediante solicitudes POST. Los datos se empaquetan
en formato JSON. La aplicación cliente se comunica con los servicios de aplicación
mediante el modelo de proveedor de .NET Framework. En los servicios de
aplicación ASP.NET, el modelo de proveedor hace referencia a los tipos de cliente
de .NET Framework y a los proveedores de pertenencia relacionados que
almacenan y recuperan las credenciales de usuario de un origen de datos.La
comunicación entre el cliente y el servidor es sincrónica. Los tipos que se definen
en el espacio de nombres System.Web.ClientServices.Providers implementan los
servicios de aplicación.
Para tener acceso a un servicio de aplicación, una aplicación cliente de .NET
Framework se debe configurar de forma adecuada. La configuración del servidor
es igual que la utilizada para los servicios de aplicación en AJAX.
Clientes de SOAP
Puede tener acceso a los servicios ASP.NET, de autenticación, perfil y servicios
desde cualquier aplicación cliente en cualquier sistema operativo que puede usar
el protocolo SOAP 1.1. Los servicios de aplicación ASP.NET están integrados
en Windows Communication Foundation (WCF) e intercambian datos con el cliente
en formato SOAP. Para obtener más información, vea XML Web Services
Infrastructure en el sitio web de MSDN.
La comunicación entre el cliente y los servicios de aplicación se realiza mediante
clases de proxy que se ejecutan en el cliente y que representan el servicio de
aplicación. Puede generar clases de proxy compatibles con los servicios de
aplicación ASP.NET mediante la utilidad Service Model Metadata Utility Tool
(svcutil.exe)
11. Conclusiones
Los Servicios web tienen diversas ventajas como interoperabilidad y la
integración. Atravez de los Servicios Web, las empresas pueden compartir
servicios software con sus clientes y sus socios de negocio. Esto permite reducir
costos y la integracion de aplicaciones hce posible obtener la información
demandada en tiempo real, acelerando el proceso de toma de decisiones
Proveedores líderes promocionan los Web Services como un modelo de
programación para la comunicación entre aplicaciones. Estas compañías piensan
que la conexión de aplicaciones a través de Internet mejorará la capacidad de las
empresas para trabajar conjuntamente con sus socios de negocio, proveedores y
clientes.
.