martes, 16 de abril de 2013

Haciendo pruebas de un Servicio SOAP

1. Ejecutamos el proyecto IODown

2. Elegimos la opción de Promociones

3. Creamos varias  Promociones


4. Modificamos una de las promociones







5. Eliminando una Promoción




sábado, 13 de abril de 2013

Patrones de Integración Empresarial, un estilo y un patrón.



Estilos de Integración

La integración de la empresa es la tarea de hacer que las aplicaciones independientes trabajen juntos para producir un conjunto unificado de funcionalidad. Algunas aplicaciones pueden ser desarrolladas in-house y otras se pueden adquirir a proveedores externos. Las aplicaciones probablemente se ejecutan en varios equipos, que pueden representar múltiples plataformas, y pueden estar dispersos geográficamente. Algunas de las aplicaciones se pueden ejecutar fuera de la empresa por los socios de negocios y clientes. Algunas aplicaciones pueden necesitar ser integradas a pesar de que no fueron diseñadas para la integración y no se puede cambiar. Estos temas y otros como ellos son los que hacen difícil la integración de aplicaciones.

Criterios de integración de aplicaciones

El primer criterio es la integración de aplicaciones en sí. Si usted puede desarrollar una única aplicación independiente que no tiene que colaborar con otras aplicaciones, puede evitar el problema de la integración de todo por completo. Siendo realistas, sin embargo, incluso una empresa simple tiene múltiples aplicaciones, las aplicaciones que necesitan trabajar juntos para proporcionar una experiencia unificada para los empleados de la empresa, socios y clientes.

Otros criterios principales de decisión son:

Emparejamiento de aplicaciones.- Las aplicaciones integradas deben minimizar las dependencias entre sí de modo que cada uno pueda evolucionar sin causar problemas a los demás. La interfaz para integrar aplicaciones debe ser lo suficientemente específico para implementar la funcionalidad útil y lo suficientemente general para permitir que la aplicación pueda cambiar cuando sea necesario.

Sencillez de Integración.- Cuando se integran las aplicaciones los desarrolladores deben tratar de minimizar cambiar la aplicación y reducir al mínimo la cantidad de código necesaria para la integración.

Tecnología de integración.- Diferentes técnicas de integración requieren cantidades variables de software especializado y hardware. Estas herramientas especiales pueden ser costosos, pueden conducir a los proveedores de tecnología, y aumentar la carga de los desarrolladores a entender cómo usar las herramientas para integrar aplicaciones.

Formato de datos.- Aplicaciones integradas deben ponerse de acuerdo sobre el formato de los datos que intercambian o debe tener un traductor intermedio para unificar las aplicaciones que insisten en formatos de datos diferentes. Un tema relacionado es la evolución del formato de datos y capacidad de ampliación, como el formato puede cambiar con el tiempo y la forma en que afectará a las aplicaciones.

No percepción de tiempo en los datos.- La integración debe minimizar la longitud de tiempo entre  una aplicación que decide compartir algunos datos y otras aplicaciones que usan esos datos. Los datos deben ser cambiados con frecuencia en trozos pequeños, en lugar de un gran conjunto de elementos relacionados. Las solicitudes deben ser informadas tan pronto como los datos compartidos estén listos para el consumo. La latencia en el intercambio de datos debe tenerse en cuenta en el diseño de la integración, el intercambio al tomar más tiempo puede ocasionar que los datos compartidos queden obsoletos y la integración se haga más compleja.

Datos o funcionalidades.- Las aplicaciones integradas no puede compartir simplemente datos, es posible que deseen compartir la funcionalidad de tal manera que cada aplicación puede invocar la funcionalidad de los demás. La invocación de la funcionalidad remota puede ser difícil de lograr, y aunque pueda parecer lo mismo que invocar la funcionalidad local, que funciona de manera muy diferente, con consecuencias significativas para la integración de lo bien que funciona.

Asincronía - El tratamiento informático es típicamente síncrono, de manera que un procedimiento  espera mientras que su subprocedimiento se ejecuta. Es un hecho que el subprocedimiento está disponible cuando el procedimiento lo quiere invocar. Sin embargo, el procedimiento puede no querer esperar a que el subprocedimiento se ejecute, ya que puede que desee invocar el subprocedimiento de forma asíncrona, a partir del subprocedimiento pero luego dejar que se ejecute en segundo plano. Esto es especialmente cierto en las aplicaciones integradas, donde la aplicación a distancia no se estén ejecutando o la red no esté disponible, la aplicación de origen podría simplemente hacer disponibles los datos compartidos o iniciar una solicitud para una llamada subprocedimiento, pero luego pasan a otro trabajo, confiando en que la aplicación remota actuará en algún momento posterior.


Opciones de Integración de Aplicaciones

Hay más de un enfoque para la integración de aplicaciones. Cada método tiene en cuenta algunos de los criterios de integración mejor que otros. Los diferentes enfoques se pueden resumir en cuatro estilos principales de integración:

Transferencia de archivos.- Hace que cada solicitud produzca archivos de datos compartidos para el consumo de otros y consumen los archivos que otros han producido.

Base de datos compartida.- Las aplicaciones almacenan los datos que desean compartir en una base de datos común.

Invocación de procedimiento remota.- Cada aplicación expone algunos de sus procedimientos de modo que pueden invocarse remotamente y hay aplicaciones para invocar a aquellos y ejecutar comportamiento y los datos de cambio.

Mensajería
- Hace que cada aplicación se conecte a un sistema de mensajería común y el intercambio de datos y el comportamiento de invocación se realiza mediante mensajes.


Un Estilo de integración

Mensajería (Messaging)


Se puede utilizar la mensajería para transferir paquetes de datos con frecuencia, inmediatamente, confiable y asincrónica, utilizando formatos personalizables.

Mensajería asíncrona es fundamentalmente una reacción pragmática a los problemas de los sistemas distribuidos. Envío de un mensaje no requiere que ambos sistemas estén arriba y listo al mismo tiempo. Además, pensando en la comunicación de una manera asincrónica obliga a los desarrolladores a reconocer que el trabajo con una aplicación remota es más lento, lo que fomenta el diseño de componentes con alta cohesión (un montón de trabajo a nivel local) y de baja adherencia (trabajo selectivo remoto).

Ventaja y  Desventaja  

Es a menudo el mejor estilo para resolver muchas oportunidades de integración. También es la menos entendida de los estilos de integración y una tecnología madura con patrones que explican cómo hacer un buen uso de ella. La mensajería es la base para muchos productos de integración de aplicaciones por lo que se explica su uso, así también va un largo camino en la enseñanza de cómo utilizar estos productos.


Un Patrón de integración


- Splitter

Se utiliza para procesar un mensaje que contiene elementos múltiples, cada uno de los cuales pueden ser procesados ​​de una manera diferente.




Este patrón utiliza un divisor que consume un mensaje que contiene una lista de elementos que se repiten, cada una de las cuales pueden ser procesados ​​individualmente. El divisor publica un mensaje de uno para cada elemento individual (o un subconjunto de elementos) a partir del mensaje original.

Usa un divisor para romper el mensaje compuesto en una serie de mensajes individuales, cada uno de ellos contienen datos relacionados con un elemento.

El patrón que actúa de manera contraria al splitter es el “aggregator”, el cual combina los resultados individuales pero relacionados entre sí para que puedan ser procesados ​​en su conjunto.


El agregador es un filtro especial que recibe un flujo de mensajes e identifica los mensajes que están correlacionados. Una vez que un conjunto completo de mensajes ha sido recibido, el agregador recoge información de cada mensaje correlacionada y publica un único mensaje, agregada al canal de salida para su posterior procesamiento.

Referencias:

REST en el Mundo Móvil.


En primer lugar conviene destacar que el término REST se refiere a una arquitectura en lugar de a un protocolo en concreto como es el caso de SOAP. A diferencia de SOAP no vamos a añadir una capa adicional a la pila de protocolos, si no que utilizaremos directamente el protocolo HTTP. Siendo estrictos, la arquitectura REST no impone el uso de HTTP, no obstante en la práctica se entiende que un servicio web basado en REST, es aquel que se implementa directamente sobre la web.
Este planteamiento supone seguir los principios de la aplicación WWW, pero en lugar de solicitar páginas web solicitaremos servicios web. Los principios básicos de la aplicación WWW y por tanto los de REST son:
Transporte de datos mediante HTTP, utilizando las operaciones de este protocolo, que son GET, POST, PUT y DELETE.
Los diferentes servicios son invocados mediante el espacio de URI unificado. Como ya se ha tratado en este libro una URI identifica un recurso en Internet. Este sistema ha demostrado ser flexible, sencillo y potente a un mismo tiempo. Se cree que fue uno de los principales factores que motivó el éxito de WWW.
La codificación de datos es identificada mediante tipos MIME (text/html, image/gif,…). Aunque el tipo de codificación preferido es XML (text/xml)  
Las ventajas de REST derivan de su simplicidad. Entre estas podemos destacar mejores tiempos de respuesta y disminución de sobrecarga tanto en cliente como en servidor. Mayor estabilidad frente a futuros cambios. Y también, una gran sencillez en el desarrollo de clientes, estos solo han de ser capaces de realizar interacciones HTTP y codificar información en XML.
 Como inconveniente indicar que, al igual que ocurre con el protocolo HTTP, no se mantiene el estado. Es decir cada solicitud es tratada por el servidor de forma idependiente sin recordar solicitudes anteriores.

A continuación invito a revisar el siguiente enlace:


Beneficios de SOA

Los beneficios de SOA para una organización se plasman a dos niveles distintos: al del usuario
corporativo y a nivel de la organización de IT.
Desde el punto de vista de la empresa, SOA permite el desarrollo de una nueva generación de
aplicaciones dinámicas que resuelven una gran cantidad de problemas de alto nivel, fundamentales
para el crecimiento y la competitividad. Las soluciones SOA permiten entre otras cosas:
• Mejorar la toma de decisiones. Al integrar el acceso a los servicios e información de
negocio dentro de un conjunto de aplicaciones dinámicas compuestas, los directivos
disponen de más información y de mejor calidad (más exacta y actualizada). Las personas,
procesos y sistemas que abarcan múltiples departamentos pueden introducirse de forma más
directa en una panorámica unificada, lo que permite conocer mejor los balances de costes y
beneficios que se producen en las operaciones de negocio que se realizan a diario. Y al
disponer de mejor información en un tiempo menor, las organizaciones pueden reaccionar de
manera más ágil y rápida cuando surgen problemas o cambios.
• Mejorar la productividad de los empleados. Un acceso óptimo a los sistemas y la
información y la posibilidad de mejorar los procesos permiten a las empresas aumentar la
productividad individual de los empleados. Estos pueden dedicar sus energías a los procesos
importantes, los que generan valor añadido y a actividades de colaboración,
semiestructuradas, en vez de aceptar las limitaciones y restricciones impuestas por los
sistemas de IT rígidos y monolíticos. Más aún: puesto que los usuarios pueden acceder a la
información en los formatos y modalidades de presentación (web, cliente avanzado,
dispositivo móvil), que necesitan, su productividad se multiplica en una gran cantidad de
escenarios de uso, habituales o nuevos.
• Potenciar las relaciones con clientes y proveedores. Las ventajas de SOA trascienden las
fronteras de la organización. Los beneficios que ofrece SOA trascienden los límites de la
propia organización. Los procesos de fusión y compra de empresas se hacen más rentables
al ser más sencilla la integración de sistemas y aplicaciones diferentes. La integración con
partners comerciales y la optimización de los procesos de la cadena de suministro son, bajo
esta perspectiva, objetivos perfectamente asequibles. Con SOA se puede conseguir mejorar
la capacidad de respuesta a los clientes, habilitando por ejemplo portales unificados de
servicios. Si los clientes y proveedores externos pueden disponer de acceso a aplicaciones y
servicios de negocio dinámicos, no solamente se permite una colaboración avanzada, sino
que se aumenta la satisfacción de clientes y proveedores. SOA permite flexibilizar los
procesos críticos de compras y gestión de pedidos –habilitando modalidades como la
subcontratación de ciertas actividades internas- superando las restricciones impuestas por
las arquitecturas de IT subyacentes, y con ello consiguiendo un mejor alineamiento de los
procesos con la estrategia corporativa.
SOA contribuye también a documentar el modelo de negocio de la empresa y a utilizar el modelo de
negocio documentado para integrar en él y dar respuesta a las dinámicas de cambio que se produzcan
y optimizarlo de acuerdo con ellas.

Desde el punto de vista de los departamentos de IT, la orientación a servicios supone un marco
conceptual mediante el cual se puede simplificar la creación y mantenimiento de sistemas y
aplicaciones integrados, y una fórmula para alinear los recursos de IT con el modelo de negocio y las
necesidades y dinámicas de cambio que le afectan.
• Aplicaciones más productivas y flexibles. La estrategia de orientación a servicios permite
a IT conseguir una mayor productividad de los recursos de IT existentes –como pueden ser
las aplicaciones y sistemas ya instalados e incluso los más antiguos- y obtener mayor valor
de ellos de cara a la organización sin necesidad de aplicar soluciones de integración
desarrolladas ex profeso para este fin. La orientación a servicios permite además el
desarrollo de una nueva generación de aplicaciones compuestas que ofrecen capacidades
avanzadas y multifuncionales para la organización con independencia de las plataformas y
lenguajes de programación que soportan los procesos de base. Más aún: puesto que los
servicios son entidades independientes de la infraestructura subyacente, una de sus
características más importantes es su flexibilidad a la hora del diseño de cualquier solución.
• Desarrollo de aplicaciones más rápido y económico. El diseño de servicios basado en
estándares facilita la creación de un repositorio de servicios reutilizables que se pueden
combinar en servicios de mayor nivel y aplicaciones compuestas en respuesta a nuevas
necesidades de la empresa. Con ello se reduce el coste del desarrollo de soluciones y de los
ciclos de prueba, se eliminan redundancias y se consigue su puesta en valor en menos
tiempo. Y el uso de un entorno y un modelo de desarrollo unificados simplifica y
homogeneíza la creación de aplicaciones, desde su diseño y prueba hasta su puesta en
marcha y mantenimiento.
• Aplicaciones más seguras y manejables. Las soluciones orientadas a servicios
proporcionan una infraestructura común (y una documentación común también) para
desarrollar servicios seguros, predecibles y gestionables. Conforme van evolucionando las
necesidades de negocio, SOA facilita la posibilidad de añadir nuevos servicios y
funcionalidades para gestionar los procesos de negocio críticos. Se accede a los servicios y
no a las aplicaciones, y gracias a ello la arquitectura orientada a servicios optimiza las
inversiones realizadas en IT potenciando la capacidad de introducir nuevas capacidades y
mejoras. Y además, puesto que se utilizan mecanismos de autenticación y autorización
robustos en todos los servicios –y puesto que los servicios existen de forma independiente
unos de otros y no se interfieren entre ellos- la estrategia de SOA permite dotarse de un nivel
de seguridad superior.

viernes, 12 de abril de 2013

Mi Primer MVC

Siguiendo el video tutorial para crear una aplicación MVC básica, la opción elegida fue la de "promociones" del proyecto Campaña Telefónica.

Paso a Paso

1. Definiendo el nombre del controlador.

2. Creando los modelos de Producto y Promoción

3. Creando la vista de "promociones"
4. Completando código al controlador de promociones.
5. Ejecutando el MVC.