jueves, 10 de octubre de 2013

Arquitectura Orientada a Servicios



Es un conjunto de Principios que están asociados a la Orientación a Servicios. 
Dichos principios son:

  • Reusables: Cada servicio debe ser construido y diseñado pensando en su reutilización dentro de la misma aplicación, dentro del dominio de aplicaciones.
  • Contrato formal: Todo servicio desarrollado,debe contener: el nombre del servicio, la forma de acceso, las funcionalidades que ofrece, los datos de entrada de cada una de las funcionalidades y los datos de salida. De esta manera, todo consumidor del servicio, accederá a este mediante el contrato, logrando así la indepencia entre el consumidor y la implementación del propio servicio. 
  • Bajo acoplamientos: Es decir, que los servicios tienen que ser independientes los unos de los otros. Para lograr ese bajo acoplamiento, lo que se hará es que cada vez que se vaya a ejecutar un servicio, se accederá a él a través del contrato, logrando así la independencia entre el servicio que se va a ejecutar y el que lo llama. Si conseguimos este bajo acoplamiento, entonces los servicios podrán ser totalmente reutilizables.
  • Composición: Los servicios deben ser construido de manera que puedan ser utilizado para construir servicios genéricos de más alto nivel, el cual estará compuesto de servicios de más bajo nivel. 
  • Autónomos: Cada Servicio debe tener su propio entorno de ejecución. De esta manera el servicio es totalmente independiente y podemos asegurar que así podrá ser reutilizable desde un punto de vista de ejecución.
  • No deben tener estado: No debe guardar ningún tipo de información. Puede producir una inconsistencia de datos el que un servicio almacene algún tipo de información. Lo sugerido es que un servicio sólo contenga lógica, y que la información esté almacenada en algún sistema de información.
  • Poder ser descubiertos: El servicio debe poder ser utilizado, consiguiendo así evitar la creación accidental de servicios que proporcionen las mismas funcionalidades. 

WS - Security

Dentro de la extenciones SOAP se encuentra WS- Security, que aplica seguridad a los servicios web.

El protocolo especifica la integridad y la confidencialidad se pueden aplicar en los mensajes y permite la comunicación de los distintos formatos de tokens de seguridad, como SAML , Kerberos y X.509 . Su enfoque principal es el uso de Firma XML y Encriptación XML para proporcionar seguridad extremo a extremo.

WS-Security describe tres mecanismos principales:

  • Cómo firmar mensajes SOAP para asegurar la integridad. Mensajes firmados también proporcionan no repudio .
  • Cómo cifrar mensajes SOAP para asegurar la confidencialidad.
  • Cómo adjuntar los tokens de seguridad para determinar la identidad del remitente.


En situaciones de punto-a-punto confidencialidad y la integridad de datos se puede aplicar a los servicios Web, la utilización de la capa de transporte (TLS), por ejemplo, mediante el envío de mensajes a través de HTTPS . Sin embargo WS-Security se dirige al problema más amplio de mantener la integridad y la confidencialidad de los mensajes hasta que el mensaje fue enviado desde el nodo de origen, proporcionando así llamada de extremo a extremo la seguridad .
Aplicación de TLS pueden reducir significativamente la sobrecarga implicada mediante la eliminación de la necesidad de codificar claves y firmas de mensajes en XML antes de enviar. Un reto en el uso de TLS sería si los mensajes necesarios para ir a través de un nivel de la aplicación servidor proxy , ya que tendría que ser capaz de ver la solicitud de enrutamiento. 

El elemento de encabezado de seguridad permite que cualquier elemento o atributo XML a vivir dentro de ella.Asimmismo permite que la cabecera de adaptarse a cualquier mecanismo de seguridad necesidades de su aplicación


Ventajas y Desventajas de SOAP y REST

Ventajas REST 


  • Los servicios Web RESTful son completamente sin estado, ello puede ser comprobado mediante el reinicio el servidor y comprobando si las interacciones son capaces de sobrevivir. 
  • Rest es muy ligero, sus respuestas contienen exactamente la información que se necesita
  • Servicios RESTful proporcionan una buena infraestructura de almacenamiento en caché a través de HTTP método GET (para la mayoría de los servidores), esto mejorará el rendimiento, si los datos que devuelve el servicio Web no se altera con frecuencia y no son de naturaleza dinámica. 
  • Servicios REST son fáciles de integrar con los sitios web existentes y están expuestos a XML para que las páginas HTML pueden consumir la misma con facilidad. Casi no hay necesidad de refactorizar la arquitectura de sitio web existente. Esto hace que los desarrolladores sean más productivos y cómodo, ya que no tendrán que volver a escribir todo desde cero y sólo hay que añadir la funcionalidad existente. 
Desventajas REST

  • A mi parecer la seguridad es una deficiencia y puede llegar a ser una tarea muy difícil de implementarla correctamente.
  • No hay un estándar en sus respuestas por lo que no se definen tipos de datos.
Ventajas SOAP
  • El Web Services Description Language (WSDL) contiene y describe el conjunto de normas comunes para definir los mensajes, los enlaces, las operaciones y la ubicación del servicio Web. WSDL es un tipo de contrato formal para definir la interfaz que ofrece el servicio Web. 
  • SOAP requiere menos código de plumbing code de servicios REST, (es decir, las transacciones, la seguridad, la coordinación, direccionamiento, la confianza, etc) La mayoría de las aplicaciones en el mundo real no son simples y apoyar las operaciones complejas, que requieren para mantener el estado de conversación y la información contextual. Con el enfoque de SOAP , los desarrolladores no tienen que preocuparse acerca de cómo escribir el código de plomería en la capa de aplicación a sí mismos. 
  • Es más seguro debido a que su implementación siempre o la mayoría de las veces se hace del lado del servidor.
  • Soporta varios protocolos y tecnologías, incluyendo WSDL, XSD, SOAP y WS-Addressing.
Desventajas SOAP
  • Si se desea modificar algo en el servidor esto impacta de una forma negativa en los clientes ya que ellos realizar varias modificaciones al código
  • Si no se cuenta con las herramientas correctas, la interpretación puede tornarse demasiado compleja y difícil.

Definiciones de Rest Vs Soap

Un servicio Web, en términos muy generales, es un método de comunicación entre dos aplicaciones o dispositivos electrónicos a través de la World Wide Web (WWW). Los servicios web son de dos tipos: simple de acceso a objetos de protocolo (SOAP) y Transferencia de estado representacional (REST).

SOAP define un protocolo de comunicación estándar (conjunto de reglas) especificación XML de intercambio basada en mensajes. SOAP utiliza diferentes protocolos de transporte, tales como HTTP , JMS y SMTP . El protocolo HTTP estándar hace que sea más fácil para el modelo de SOAP para hacer un túnel a través de firewalls y proxies sin ninguna modificación en el protocolo SOAP. De SOAP puede ser a veces más lento que las tecnologías de middleware como CORBA o ICE debido a su formato XML detallado.

REST describe un conjunto de principios de la arquitectura por el cual los datos pueden ser transmitidos a través de una interfaz estandarizada (por ejemplo, HTTP). REST no contiene una capa adicional de mensajería y se centra en las reglas de diseño para la creación de servicios sin estado. Un cliente puede acceder al recurso mediante el único URI y una representación del recurso se devuelve. Al acceder a los recursos REST con el protocolo HTTP, la dirección URL del recurso sirve como identificador de recursos y GET, PUT, DELETE, POST y HEAD son las operaciones HTTP estándar que se deben realizar en ese recurso.