martes, 16 de octubre de 2012

MAVEN

MAVEN

Maven es una herramienta de software para la gestión y construcción de proyectos Java.

Es mucho mas sencillo que otras versiones del mismo tipo en funcionalidad como ('Apaceh Ant','PEAR de PHP','CPAN de Perl'), su modelo de configuración de construcción es más simple, esta basado en un formato XML.
Maven utiliza un Project Object Model (POM) para describir el proyecto de software a construir, sus dependencias de otros módulos y componentes externos, y el orden de construcción de los elementos.
Maven está construido usando una arquitectura basada en plugins que permite que utilice cualquier aplicación controlable
a través de la entrada estándar.

Su arquitectura esta sumamente confiable para desarrollos java, lagunas características de servicios:

Un servidor de integración continúa.
Un servidor que haga de proxy para artefactos Maven.
El motor incluido en su núcleo puede dinámicamente descargar plugins de un repositorio.
Selenium para test de navegación y de javascript (para objetos web).
La gestión de librerías garantiza que en un equipo numeroso todos tiene las misma versión, incluso se puede configurar
para que se actualicen las releases automáticamente.
Maven trabaja mucho mejor con un repositorio para manejar las versiones de los cambios (un repositorio de código fuente en SVN o GIT)


Partes del ciclo de vida principal del proyecto Maven:

1. compile : Genera los ficheros .class compilando los fuentes .java
2. test    : Ejecuta los test automáticos de JUnit existentes, abortando el proceso si alguno de ellos falla.
3. package : Genera el fichero .jar con los .class compilados
4. install : Copia el fichero .jar a un directorio de nuestro ordenador donde maven deja todos los .jar. De esta forma esos .jar pueden utilizarse en otros proyectos maven en el mismo ordenador.
5. deploy  : Copia el fichero .jar a un servidor remoto, poniéndolo disponible para cualquier proyecto maven con acceso a ese servidor remoto.
Cuando se ejecuta cualquiera de los comandos maven, por ejemplo, si ejecutamos mvn install, maven irá verificando todas las fases del ciclo de vida desde la primera hasta la del comando, ejecutando sólo aquellas que no se hayan ejecutado previamente.

Algunas metas que no son parte del ciclo de vida por defecto, porque no necesariamente tienen que ser realizadas siempre:

1. clean    : Elimina todos los .class y .jar generados. Después de este comando se puede comenzar un compilado desde cero.
2. assembly :assembly : Genera un fichero .zip con todo lo necesario para instalar nuestro programa java. Se debe configurar previamente en un fichero xml qué se debe incluir en ese zip.
3. site     : Genera un sitio web con la información de nuestro proyecto. Dicha información debe escribirse en el fichero pom.xml y ficheros .apt separados.
4. site-deploy : Sube el sitio web al servidor que hayamos configurado.

Pero estas metas pueden ser añadidas al ciclo de vida a través del Project Object Model (POM).

Integración con IDEs
Existen plugins de Maven para crear archivos de configuración del IDE a partir de los POMs. Actualmente se soportan:

Eclipse
Netbeans
IntelliJ
JDeveloper 11G

SOAP

SOAP  (Simple Object Access Protocol)

Es un protocolo de comunicación para el intercambio de mensajes entre diferentes dispositivos, es independientemente del sistema operativo, para el transporte usa protocolos SMTP, MIME y HTTP.

Está basado en XML a diferencia de DCOM y CORBA que son binarios; esto facilita la lectura por parte de los humanos, pero también los mensajes resultan más largos y, lo que los hace más lento en la transferencia.

Existen múltiples tipos de modelos de mensajes en SOAP pero, el más común es el RPC en donde un nodo de red  (el cliente) envía un mensaje de solicitud a otro nodo (el servidor) y el servidor inmediatamente responde el mensaje al cliente.

SOAP fue diseñado por David Winer, Don Box, Bob Atkinson y Mohsen Al-Ghosein en 1998 con respaldo de Microsoft. Actualmente, la especificación SOAP es mantenida por el XML Protocol Working Group de la W3C.
Algunos conceptos:

·         Protocolo.- Conjunto de reglas que utilizan los dispositivos para comunicarse.
·         SMTP.- (Simple Mail Transfer Protocol),  es un conjunto de reglas que se usa para transferencia de datos en un envío de un correo electrónico.
·         HTTP.- (HyperText Transfer Protocol), es un conjunto de reglas que utilizan los clientes, servidores y proxies para la comunicación, está orientado a las transacciones y sigue un esquema de petición y respuesta entre un cliente y servidor.
·         MIME.- (Multipurpose Internet Mail Extensions), son una serie de convenciones o especificaciones dirigidas al intercambio a través de internet de todo tipo de archivos (texto, audio, vídeo, etc.) de forma transparente para el usuario.
·         XML.- (Extensible Markup Language), es un lenguaje de marcas, define la gramática, para estructurar documentos.
·         RPC.-( Remote Procedure Call), es una técnica para la comunicación entre procesos en una o más computadoras conectadas.

domingo, 14 de octubre de 2012

Sistemas Distribuidos - EPE (UPC)



Facilidad con Rest

Web Services REST (Representational State Transfer)



Arquitectura Cliente – Servidor
Se apoya en estándares como HTTP, URL, XML, para simplificar la implementación en el lado del cliente y el servidor.
Todo servicio que utilice la arquitectura de REST y que cumpla los principios es considerado RESTful

Principios


  •  Identificador único.- A todo recurso se le asigna un ID, que está asociado a un URI
  • Interfaz común.- Se adjunta enlaces al devolver información, con el fin de tener una comunicación transparente y simple.
  • Interfaz común.- Exponen métodos comunes como GET, POST, PUT, DELETE, HEAD y OPTIONS, para poder acceder y manejar los recursos.
  • Recursos con múltiples representaciones.- Para el retorno de información usa XML, JSON, RSS, Atom.
  • Comunicación sin estado.- El servidor no maneja  estado, estos se manejan a través de los recursos o en el cliente (toda información necesaria esta dentro de la petición o solicitud).

Para la implementación, se puede usar lenguajes como Java, Ruby on Rails, Sinatra, Python o PHP.

Existen Frameworks Java que ayudan a construir servicios web RESTful, Restletm, es liviano e implementa conceptos como recursos, representación, conector y tipo de medio para todo tipo de sistemas RESTful, inclusive servicios web.
En el framework Restlet, tanto el cliente como el servidor son componentes.

Los componentes se comunican entre sí a través de conectores. Las principales  clases de este marco son la clase abstracta Uniform y su subclase concreta,  Restlet, cuyas subclases son clases especializadas, entre ellas: Application,
Filter, Finder, Router, and Route. Estas subclases trabajan juntas en la gestión de la autenticación, el filtrado, la seguridad, la transformación de datos y el enrutamiento de las solicitudes entrantes a sus respectivos recursos.
La clase Resource genera la presentación para el cliente.