domingo, 13 de febrero de 2011

1.4 Problemas comunes en el dearrollo y uso de aplicaciones distribuidas.

El desarrollo de aplicaciones distribuidas requirió de nuevas técnicas de diseño y de generación de modelos. También trajo nuevos problemas. Existen 2 tipos distintos de arquitecturas que se utilizaron antes de .NET para hacer aplicaciones distribuidas: Llamadas a Procedimiento Remoto (RPC) Arquitecturas basadas en mensajes

Se verán los problemas técnicos que este tipo de arquitecturas tiene y finalmente como los Estándares Web son utilizados para hacer la nueva generación de aplicaciones distribuidas

Hay una serie de problemas comunes en el diseño de las aplicaciones distribuidas:

La compatibilidad de los Tipos de Datos: Distintos sistemas operativos tienen diferentes tipos de datos que no son siempre compatibles entre sí.

Fallas del Servidor: Debido a que los componentes pueden ser remotos, una falla de cualquiera de ellos puede hacer que toda la aplicación falle .

Fallas del Cliente: El servidor debe saber como responder a las fallas del cliente.

Reintento de llamadas: Si por ejemplo, se hace una llamada a un método en un servidor para generar una orden de compra muy grande, y el servidor responde pero se pierde la respuesta por fallas de red, no es muy eficiente volver a enviar la orden de compra.

Seguridad: En aplicaciones distribuidas los problemas de seguridad se multiplican. Por ejemplo, se debe considerar como: Autenticar a los usuarios Autorizarlos a acceder a los recursos Encriptar la información que viaja por la red Evitar ataques de denegación de servicio

Sincronización de la hora: Hay operaciones que dependen de la fecha y la hora. Por ejemplo, no es lógico en una aplicación procesar un envío de mercadería antes de haber recibido la orden de compra. Si el cliente y el servidor tienen fechas distintas, se debe generar un mecanismo de sincronización de hora para evitar este problema.

La arquitectura basada en RPC Qué es RPC: RPC son llamadas a procedimientos o funciones en sistemas remotos, es decir en máquinas distintas a la máquina local. Transparencia de localización: El desarrollador utiliza los componentes sin necesidad de saber su ubicación física. Con RPC tanto en el cliente como en la máquina donde reside el componente hay subsistemas que se ocupan de la comunicación y el intercambio de datos.

Llamadas Sincrónicas: En RPC las llamadas a los procedimientos son sincrónicas. Esto quiere decir que cuando una aplicación hace una llamada a un procedimiento RPC debe esperar que el servidor le responda para poder continuar con el procesamiento. Esto presenta problemas en un entorno distribuido, mucho más si pensamos en distribuir los componentes en Internet.

Las llamadas sincrónicas con RPC tienen desventajas: Uso de múltiples componentes: Si su aplicación distribuida depende de muchos componentes que se llaman entre sí, esto hace que la aplicación sea más susceptible a fallas. Balanceo de Carga y Tolerancia a fallos: Es el problema de como las aplicaciones descubren la información necesaria para poder conectarse otros servidores en el caso de que el que esta utilizando falle. O de como balancean el procesamiento entre varios servidores Esto no es posible con RPC.

Priorización: Con RPC es muy difícil detectar que servidores están con mucha carga de trabajo y derivar la llamada RPC a otro servidor menos ocupado.

Picos de carga de Trabajo: RPC no puede manejar los picos de carga de trabajo que puede tener un servidor si tiene llamadas RPC de muchos clientes.

La arquitectura basada en Mensajes Otra arquitectura para desarrollar aplicaciones distribuidas es la basada en mensajes.

Esta tecnología es asincrónica. Lo que significa que el cliente puede seguir con el procesamiento mientras espera la respuesta del servidor. Utiliza mensajes en vez de llamadas a funciones.

Tiene desventajas:
Procesamiento del Mensaje: El programador debe manejar en el código el empaquetamiento y des empaquetamiento de los mensajes. Además debe controlar su validez Interoperabilidad: Los sistemas de mensajería utilizan tecnología propietaria. Se necesita software para permitir el envío de mensajes y la comunicación los distintos sistemas.
Flujo de Carga y secuenciamiento de los mensajes: Se necesita de algún mecanismo para coordinar el flujo y la secuencia de los mensajes. Por ejemplo, no se puede procesar una orden de envío de un producto antes de que se procesa la orden de pedido del producto.

Los estándares Web Tanto RPC como la arquitectura basada en mensajes han sido implementados en forma exitosa por muchas organizaciones. Sin embargo su uso tiene dificultades que se resuelven con la utilización de los protocolos Web estándares.

Problemas con los Protocolos Binarios: Existen varias tecnologías RPC, ninguna estándar, por ejemplo. COM de Microsoft, CORBA y RMI. Todas estas tecnologías utilizan protocolos binarios.
Los protocolos binarios tienen desventajas:
Firewall: Para permitir la comunicación entre un cliente y un servidor que se encuentra detrás de un firewall los administradores deben dejar un rango variable de puertos abiertos. Esto es un riesgo de seguridad muy alto.

Interoperatividad: Las distintas tecnologías RPC implican protocolos binarios de comunicación distintos. Para que interoperen entre sí se deben traducir los paquetes de red lo que puede significar pérdida de información. Para evitar este problema las organizaciones utilizan un solo modelo RPC.

Formato de los Datos: Cada protocolo RPC utiliza un formato de datos distintos. La traducción de un formato a otro presenta dificultades.

La nueva arquitectura: Los protocolos que utiliza Internet resuelven muchos de los problemas anteriormente mencionados. Internet y la Web: Los protocolos TCP e IP fueron desarrollados originalmente para conectar redes distintas y crear una red de redes. Esta red de redes terminó convirtiéndose en el Internet que conocemos hoy. A finales de 1990, Tim Berners-Lee inventó WWW (World Wide Web).

WWW es lo que hoy conocemos como la Web. La Web es una red globalmente interconectada de documentos hipertexto. Utiliza 2 tecnologías principales: El lenguaje HTML y el protocolo HTTP para la comunicación. HTML: Es un lenguaje de marcas (Tags). Las marcas definen como el Explorador de Internet presenta la información. Los documentos que tienen estas marcas son llamados documentos hipertexto.

Ventajas de HTTP:
Es el protocolo utilizado para pedir y recibir documentos. El formato de estos documentos puede ser HTML pero también muchos otros más como por ejemplo XML. Los Servicios Web y los clientes pueden intercambiar documentos XML utilizando el protocolo HTTP. HTTP es un Standard usado universalmente

XML- Un formato de datos universal: A pesar de que HTML permite presentar datos, HTML no permite comunicar la estructura de los datos y su relación. XML nació en 1996 para permitir describir la estructura de los datos en un documento. Firewall: Los servidores Web son los responsables de administrar los documentos, que pueden ser accedidos desde Internet pasando por el firewall de la organización y utilizando el protocolo HTTP.

Problemas con la Web:
Como la Web es una red pública se presentan algunos problemas.

Seguridad: Entre otros problemas se encuentran: el robo de información o la modificación de los datos

Performance: Algunos clientes acceden con conexiones telefónicas lo que puede limitar por su baja velocidad la complejidad de las aplicaciones.

Por lo tanto algunas aplicaciones se deben limitar a la Intranet.

1.3 Escenarios de utilización de las aplicaciones distribuidas.


Algunas de las aplicaciones distribuidas más conocidas son remote login, correo electrónico, navegación Web, streaming, telefonía IP y compartición de ficheros (P2P).

Algunos escenarios que utilizan aplicaciones distribuidas son:

• PHP
Eduacaión a distancia - moddle.
Creación de blogs - Wordpress.
Creador de wikis - MediaWiki.
Administrar BD en web - PHPMyAdmin.

• ASP
E-commerce - eCAM.
E-commerce - ProdMentor.

Hoy en día no parece necesario convencer a nadie de las ventajas que para una empresa de cualquier tamaño supone una informatización bien dimensionada y acorde a las necesidades de la misma. Hasta la aparición del ordenador personal en el año 1982, la informatización de las empresas estaba muy condicionada a su tamaño, ya que el coste de un supercomputador o incluso un miniordenador los hacían prohibitivos. Con la aparición del ya bien conocido Personal Computer, la informática se ha extendido a todos los entornos de nuestra sociedad, incluido el residencial, donde cada día es mayor el número de hogares que posee un ordenador.
La fuerte evolución que se ha producido en las prestaciones de los ordenadores junto con el abaratamiento de los mismos han provocado la aparición de programas con mayores posibilidades, de muy fácil manejo, y adecuados para casi cualquier tipo de aplicación que podamos necesitar. Hoy día es difícil encontrar empresas en las que en un alto porcentaje de su desarrollo no se haya adaptado, configurado o utilizado un producto ya disponible en el mercado, e.g., bases de datos, hojas de cálculo, control de procesos, etc.

En la actualidad existe un fenómeno similar a la evolución descrita de la informática y con un impacto muy importante sobre ésta. Nos referimos a las telecomunicaciones. No hace mucho tiempo, la interconexión de ordenadores y terminales dentro de una empresa mediante redes de área local o mediante diversas soluciones de distintos centros de éstas (centros de procesos de datos, sucursales, etc.) estaba restringida a entidades de un tamaño importante. Este hecho también está evolucionando de forma rápida y la utilización de las telecomunicaciones en forma integrada con programas informáticos está dejando de ser un aspecto restringido a grandes empresas. Hoy se puede observar que existen soluciones de muy bajo coste y unas altas prestaciones. Desde un simple módem hasta las altas prestaciones y calidad que ofrece la red digital de servicios integrados (el RDSI es una red de comunicaciones digitalizada y totalmente desplegada, que proporciona unas prestaciones superiores a las que presenta la red de telefonía básica), son soluciones asequibles tanto para profesionales independientes como para empresas de cualquier tamaño.

Estos acontecimientos han provocado una fuerte evolución en los programas informáticos. La integración de las telecomunicaciones en la informática corporativa hace unos años era escasa, existiendo aplicaciones informáticas dirigidas a la comunicación y otras únicamente orientadas al proceso de datos disponibles localmente. El término telemática era utilizado en ese momento para las técnicas de transferencia de datos que serían utilizados con posterioridad por aplicaciones informáticas.

En la actualidad esto no es así, las telecomunicaciones son algo que, aunque imprescindibles ya que permiten procesar datos ubicados en ordenadores o terminales remotos, resultan trasparentes a las aplicaciones informáticas.

Con una apropiada integración informática-telecomunicaciones en una corporación se persigue que el usuario pueda usar diversas aplicaciones informáticas de forma uniforme en toda la organización y con abstracción total del lugar donde se encuentren o se generen los datos. Hoy día no se puede concebir y diseñar el soporte informático de una empresa de cualquier tamaño sin tener en cuenta las telecomunicaciones que vaya a emplear.
Algunos ejemplos muy extendidos y que siguen este esquema son las bases de datos distribuidas (bases de datos donde los datos se encuentran en cualquier punto de la red) o las aplicaciones cliente-servidor donde el procesamiento de los datos de la aplicación se puede llevar a cabo en cualquiera de los ordenadores conectados a la red con total trasparencia para el usuario, actuando como un verdadero sistema operativo distribuido.
Aunque en este artículo se pretende dar una visión de las ventajas que una apropiada informatización supone para una empresa y en especial para las PYMES, se hará especial hincapié en las nuevas oportunidades que la integración telecomunicaciones-informática ofrece.
Un claro ejemplo es el fenómeno que ha supuesto en todos los sectores tanto empresariales como domésticos la aparición de Internet. Aunque existe una gran cantidad de documentación divulgativa y técnica al respecto o la que el lector se puede dirigir, se analizará aquí el alto valor añadido que para la pequeña y microempresa pueden ofrecer Internet. Este hecho se ve potenciado además por la rápida reducción de costes que se está produciendo en las tecnologías asociadas a este tipo de servicio.

La combinación de informática y telecomunicaciones abre, además, un nuevo espacio virtual para el comercio donde las empresas, sean del tamaño que sean, pueden ofrecer sus servicios y competir en igualdad de condiciones. Esto es posible gracias a los mínimos recursos que se precisan para entrar en este mercado y a la transferencia de costes que se consigue realizar a los clientes y proveedores.

Las consideraciones que deben tenerse en cuenta para una correcta integración de programas de diverso tipo con las telecomunicaciones corporativas independientemente de la tecnología de red utilizada, o mejor dicho algunas de las múltiples ventajas que la correcta informatización de una empresa puede ofrecer a ésta y que se pueden ver muy incrementadas con una apropiada integración con las telecomunicaciones de la corporación y todo ello a un coste muy reducido, lo que lo hace extensivo a las PYMES, son:

• Mejora de prodecimientos internos de trabajo de la empresa.- Este es probablemente el ejemplo que todo el mundo tiene más claro por ser quizás el origen de la informática en la empresa. Con la integración de las telecomunicaciones entre distintos centros de la empresa esta ventaja es extensible a toda la corporación. Este punto tiene además una ventaja adicional: permite reducir sustancialmente los recursos de la empresa dedicados a tareas rutinarias y permite concentrar dichos recursos en la actividad propia de la empresa, favoreciendo la creatividad y la iniciativa de sus trabajadores.

• Mejora en la relación con los clientes y proveedores.- El disponer de toda información de los clientes de una empresa "on line", o lo que es lo mismo, disponible en el momento en que exista cualquier relación con él, permite ofrecer una atención personalizada, lo que conducirá a una mejora sustancial de la imagen de la empresa. Por supuesto, una utilización conjunta de aplicaciones informáticas y comunicaciones permitirán ofrecer esta información "on line" a toda la corporación. Disponer de un sistema informatizado para la relación con los proveedores es tan importante como tener una relación ágil con los clientes. Con la ayuda de las telecomunicaciones podremos conseguir automatizar toda la gestión de pedidos, facturación, pagos, control de plazos de entrega, etc. lo que significará sin duda en un alto beneficio para el negocio. El hecho de poder llevar a cabo las relaciones de una empresa con sus clientes y proveedores de manera informatizada permite además una reducción importante de costes.

• Nuevos canales de distribución.- Las redes de telecomunicaciones pueden ofrecer a las empresas un nuevo canal de distribución de productos. Pensemos en la gran cantidad de empresas que en la actualidad, anuncian y ofrecen sus productos a través de Internet. Términos como Telemárketing y Telemercado serán cada día más comunes para todos.

• Mayor control del negocio mediante los sistemas de información.- La capacidad de obtener información de forma contínua de un proceso productivo que ofrecen los programas informáticos permite a la dirección de la empresa, disponer de una visión actualizada en todo momento de la situación del negocio. Pensemos en los esfuerzos requeridos en el pasado para realizar el balance de la empresa, en contraposición con las empresas modernas con un sistema de información totalmente informatizado donde se puede conocer la situación económica de ésta en cada momento.

Clave en procesos de reingeniería y de calidad.- Es cada vez mayor el número de empresas sometidas a procesos internos de Reingeniería o de Gestión de la Calidad Total. Estos procesos van dirigidos a realizar un análisis permanente de los distintos procesos productivos de una empresa con objeto de conseguir una mejora contínua en los mismos. Estos procesos redundan en beneficios de distinta naturaleza para la empresa: aumento de la calidad, reducción de costes, reducción del tiempo de desarrollo de los productos, etc.

• La empresa sin papel .- Este es un objetivo que prácticamente todas las empresas persiguen hoy en día. Este aspecto sólo puede alcanzarse mediante la utilización de programas informáticos junto con unas telecomunicaciones adecuadas en todas las actividades de la empresa: compras, archivo documental, transferencia de información entre departamentos, relación con sus clientes y proveedores, etc.

En resumen, como se puede observar, son muchos los aspectos favorecidos en la empresa mediante una informatización apoyada y correctamente integrada en unas telecomunicaciones bien sean locales o de un ámbito amplio. Aunque se podrían seguir enumerando ventajas, podríamos resumir éstas en una ventaja competitiva para la empresa con todo lo que ello lleva consigo: aumento de la productividad, reducción de costes, aumento de la calidad, etc.


Trabajo cooperativo:

Las Telerreuniones.- Cada día es mayor el número de programas software orientados a ser utilizados de forma distribuida con objeto de facilitar el trabajo en grupo. Entre estas herramientas debe destacar aquellas que van dirigidas a permitir concretizar sesiones de trabajo de forma interactiva entre dos o más personas simultáneamente conectadas a la red. Es lo que se ha dado en llamar "teletrabajo en grupo" o "trabajo cooperativo" soportado por PCs. Estos programas tratan de proveer a los trabajadores de todas las herramientas necesarias para que puedan realizar reuniones de trabajo a través de un computador desde puntos distantes.

Entre las principales herramientas que ofrecen estos programas cabe destacar los siguientes:


-Videoconferencias.- Ayuda a tener un contacto más directo entre las personas que participan en una sesión de trabajo cooperativo.

-Transferencia de ficheros.- Permite entregar documentos, fotografías, archivos, etc., al resto de participantes a través de la red y de forma instantánea.

-Pizarra compartida.- Es una zona de la pantalla del computador de cada participante que se usa de forma compartida entre todos como una mesa común de trabajo. Todo documento, texto, dibujo, etc., que se realice sobre esta zona por cualquiera de los participantes es visto de igual manera por el resto e, incluso, editable de manera conjunta.


-Compartición de aplicaciones.- Esta herramienta permite que cualquier aplicación o programa software que ejecuta cualquier participante en la teleconferencia, puede ser visto por todos con objeto de poder realizar determinados trabajos de forma conjunta.


-Telepuntero.- En algunas ocasiones se desea indicar a los participantes de una sesión de trabajo en grupo una parte de un documento marcándolo con el mouse de nuestro computador. Esto es lo que permite el telepuntero. Cualquier persona puede ver la posición del mouse de cualquier otro participante, identificándolo del resto mediante distintas formas de colores.


Existen otras herramientas específicas de determinados productos software (mensajería entre los participantes, diálogos mediante textos, etc.,) dirigidas a facilitar la realización de sesiones de trabajo en grupo entre personas situadas en lugares distantes. Por tanto, se pueden establecer verdaderas reuniones "virtuales" entre personas en puntos distantes gracias al desarrollo de la informática y las telecomunicaciones.


http://sisbib.unmsm.edu.pe/bibvirtual/publicaciones/quipukamayoc/1999/segundo/informatica.htm

http://www.tutoriales.itsa.edu.mx/DesarrolloDeAplicaciones/index.php?mod=escenarios&ban=0

1.2.5 De Conexión Entre Capas.


Como tecnología, las arquitecturas de capas proporcionan una gran cantidad de beneficios para las empresas que necesitan soluciones flexibles y fiables para resolver complejos problemas inmersos en cambios constantes.

Todas las aplicaciones basadas en capas permitirán trabajar con clientes ligeros, tal como navegadores de Internet, WebTV, Teléfonos Inteligentes, PDAs (Personal Digital Assistants o Asistentes Personales Digitales) y muchos otros dispositivos preparados para conectarse a Internet.

De este modo, las arquitecturas de capas se están posicionando rápidamente como la piedra angular de los desarrollos de aplicaciones empresariales y las compañías están adoptando esta estrategia a una velocidad de vértigo como mecanismo de posicionamiento en la economía emergente que tiene su base en la red (lo que se ha venido a denominar "Nueva Economía").

Actualmente, la Red (Internet, intranets y extranets) es el ordenador o, como diría Sun Microsystems, el ordenador es la Red. Este paradigma está creando un cambio fundamental en los modelos de computación que, a su vez, proporciona desafíos y oportunidades como nunca antes había se habían producido.

Una tecnología de conexión de capas es:

1.2.4 De Comunicación De Datos.


La construcción de aplicaciones distribuidas ha emergido como la arquitectura predominante para la construcción de aplicaciones multiplataforma en la mayor parte de las empresas.

Este cambio radical en los modelos de computación, desde los sistemas monolíticos basados en mainframe y los tradicionales sistemas cliente-servidor, hacia sistemas distribuidos multiplataforma altamente modularles, representa el desarrollo rápido y avance de la investigación en el mundo del desarrollo de aplicaciones, tal y como se pone de manifiesto en las últimas tendencias de las grandes empresas de tecnología, como Sun con su estrategia Sun One, o Microsoft con DotNET (.Net).

Algunas tecnologías de comunicación de datos son:

• Intranet.
• Internet.


La construcción de aplicaciones distribuidas ha emergido como la arquitectura predominante para la construcción de aplicaciones multiplataforma en la mayor parte de las empresas.

Este cambio radical en los modelos de computación, desde los sistemas monolíticos basados en mainframe y los tradicionales sistemas cliente-servidor, hacia sistemas distribuidos multiplataforma altamente modularles, representa el desarrollo rápido y avance de la investigación en el mundo del desarrollo de aplicaciones, tal y como se pone de manifiesto en las últimas tendencias de las grandes empresas de tecnología, como Sun con su estrategia Sun One, o Microsoft con DotNET (.Net).



Ejemplo de una tecnología de comunicación de datos.

http://www.tutoriales.itsa.edu.mx/DesarrolloDeAplicaciones/index.php?mod=decomunicacion&ban=0

1.2.3 De base de datos.

Es el “otro extremo” visto desde la interface de usuario Involucrado en el almacenamiento y recuperación de datos Las tecnologías aplicables incluyen archivos planos, bases de datos relacionales u orientadas a objetos, etc.


La evolución de las bases de datos distribuidas se debe por una parte a razones organizacionales las cuales han demandado que mayores capacidades sean incorporadas a las bases de datos, tales como la integración de información desde distintos sitios donde se encuentre la empresa distribuida hacia algún sitio por ejemplo, para una consulta. Por otra parte, el desarrollo de las tecnologías de comunicación han permitido enlazar datos con aplicaciones que se encuentran en sitios distintos y remotos, por ejemplo las transacciones bancarias realizadas en máquinas-cajeros automáticos (ATM) que se encuentran ubicados en centros comerciales, empresas y escuelas, no serían posibles si no tuviéramos sistemas de comunicación para enlazarnos a bases de datos localizadas en diferentes sitios financieros.

Algunas tecnologías de base de datos son:
• OLEB
• ADO.
• XML.
• SQL.
• Herramientas para modelado (UML).




Ejemplo de una tecnología de base de datos.

http://www.tutoriales.itsa.edu.mx/DesarrolloDeAplicaciones/index.php?mod=debd&ban=0


1.2.2 De aplicacion.


La adopción de un diseño distribuido de aplicaciones empresariales, aumenta la reusabilidad, reduce la cantidad de recursos, y los costes necesarios de desarrollo y mantenimiento.

Este nuevo enfoque de diseño pone en manos de los desarrolladores no solo la funcionalidad que demandan las aplicaciones, sino también la seguridad, rapidez y flexibilidad.

Algunas tecnologías de aplicación son:



• CORBA.
• DNA.
• EJB.
• XML.


Ejemplo de una Interfaz de aplicacion.

http://www.tutoriales.itsa.edu.mx/DesarrolloDeAplicaciones/index.php?mod=deaplicacion&ban=0

1.2.1.De Interfaz de usuario.

Interfaces de Usuario.


El dispositivo de acceso de los usuarios humanos a un sistema distribuido se llama “front-end” o
interface de usuario. Generalmente es un conjunto de pantalla, teclado y mouse, pero en forma creciente vemos nuevos dispositivos como teléfonos celulares, PDA’s, etc. Genéricamente se denominan “cliente”.


Aquí es donde su aplicación presenta información a los usuarios y acepta entradas o respuestas del usuario para usar por su programa. Idealmente, la IU no desarrolla ningún procesamiento de negocios o reglas de validación de negocios. Por el contrario, la IU debería relegar sobre la capa de negocios para manipular estos asuntos. Esto es importante, especialmente hoy en día, debido a que es muy común para una aplicación tener múltiples IU, o para sus clientes o usuarios, que le solicitan que elimine una IU y la remplace con otra.






Ejemplo de una interfaz de usuario.

Algunas tecnologías de interfaz de usuario son:

• API Win 32.
• HTMAL.
• Dell HTML.
• Lenguajes de scrips.


http://www.tutoriales.itsa.edu.mx/DesarrolloDeAplicaciones/index.php?mod=deinterfaz&ban=0