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

1.2 Evolucion de las tecnologias para el desarrollo de aplicaciones distribuidas.


Hoy en día las compañías no pueden ignorar el grave problema que implica desarrollar y adaptar software al ritmo que imponen los negocios. Los requisitos varían con mucha frecuencia y las aplicaciones no logran ser desarrolladas y/o adaptadas al ritmo requerido. La globalización y fusión de empresas, el crecimiento de Internet, entre otros factores, han acentuado aún más estos problemas llevando el software desarrollado, que normalmente había sido desarrollado para una plataforma específica, a un ambiente distribuido heterogéneo. Esto involucra, en consecuencia, La necesidad de considerar una amplia gama de aspectos como lo son la integración de datos heterogéneos, la interacción entre diversos sistemas, los distintos sistemas operativos, el middleware, las tecnologías web, cuestiones de escalabilidad y performance, por citar algunos de ellos.

La evolución de las tecnologías cliente/servidor sumada al advenimiento de nuevas tecnologías como XML, web services , la plataforma J2EE, la comunicación asíncrona por medio de mensajes, el uso de application servers , son algunos de los conocimientos que permiten llevar a cabo el desarrollo de aplicaciones modernas.

La evolución de las aplicaciones distribuidas se dio de la siguiente forma:

• Aplicaciones monolíticas.
• Arquitectura cliente/servidor.
• Arquitectura de tres capas.
• Arquitectura de N capas.




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

1.1.4 Aplicaciones distribuidas.

Mucho tiempo ha transcurrido ya desde que en la década de los ochenta la tecnología de la información comenzara tímidamente a ocupar el lugar que hoy en día posee. En aquellos días, que tal vez algunos veteranos recuerden con cierta nostalgia, la mayoría de los sistemas informáticos estaban constituidos por enormes sistemas centrales que ejecutaban todos las aplicaciones dentro de sí mismos, y en el mejor de los casos los usuarios interactuaban con esas aplicaciones mediante “terminales tontos”, que no eran sino simples pantallas con teclado que permitían enviar caracteres al sistema central y mostrar las respuestas, también basadas en caracteres, que los monstruos generaban y enviaban a través de un cable.

El advenimiento de los ordenadores personales constituyó la primera revolución. Ahora los usuarios disponían de un procesador y de un sistema de almacenamiento autónomo, capaz de procesar datos e incluso de mostrar gráficos por pantalla además de caracteres. Surgieron multitud de aplicaciones “de escritorio” que independizaron a los usuarios de los grandes sistemas y el coste del hardware se redujo a niveles tan aceptables que empresas que no hubieran podido afrontar la inversión en un sistema informático centralizado comenzaron a introducir en sus procesos de negocio la gestión informática de los datos.

Pero en el fondo los modos de ejecución de aplicaciones no habían cambiado. De la ejecución en un sistema centralizado se pasó a la ejecución en sistemas más pequeños e independientes, pero al fin y al cabo las aplicaciones seguían siendo islas incomunicadas entre si, y los usuarios no podían contar más que con las capacidades del propio ordenador para procesar los datos. Por un lado, la necesidad de compartir datos no quedaba resuelta con sistemas independientes, y la opción de las aplicaciones centralizadas seguía siendo la única viable en entornos multiusuario. Por el otro, cuando los datos eran generados por un ordenador central no había forma de tratarlos localmente y toda la potencia de los ordenadores personales no servía para nada.
El avance en las tecnologías de redes comenzó a dibujar un horizonte en el que las aplicaciones se comunicarían entre sí y en el que los procesos de una aplicación se distribuirían entre diferentes equipos, cada uno con características que les permiteran aumentar la eficacia y la disponibilidad de la aplicación. Se comenzó a separar la lógica de las aplicaciones para situarla en el nivel más conveniente y conceptos como “cliente” y “servidor” fueron cobrando cada vez más sentido. Tras algunos años de indecisión, los protocolos de red se estandarizaron y hacia mediados de los años 90 Internet se convirtió en la primera revolución auténtica del siglo XXI, provocando no sólo un vuelco en las relaciones sociales y económicas sino también, por supuesto, un cambio completo de paradigma en la arquitectura de las aplicaciones informáticas.

Las aplicaciones se convierten, así, en aplicaciones distribuidas. Sin arriesgarnos a proporcionar una definición académica que puede encontrarse muy fácilmente en Internet, diremos informalmente que una aplicación distribuida es aquella cuyo objetivo final se alcanza mediante la ejecución de diversos procesos independientes que por lo general se ejecutan en equipos diferentes y que de una forma u otra se pasan datos entre ellos mediante protocolos de comunicaciones bien establecidos.
En esta primera sección examinaremos las formas arquitectónicas (o de diseño) que adquieren las aplicaciones distribuidas. Cada una de ellas plantea ciertas ventajas e inconvenientes que será necesario tener en cuenta a la hora de crear el código para los diferentes componentes de la aplicación.


Características de las aplicaciones distribuidas.

Independientemente de su arquitectura, todas las aplicaciones distribuidas comparten ciertas características que las diferencian notablemente de las aplicaciones centralizadas y de las aplicaciones de escritorio. Conocer esas características y evaluar su impacto en las aplicaciones es primordial para escoger el diseño más adecuado de las mismas. No es cierto que una aplicación se pueda diseñar de cualquier manera.



Aspectos primordiales que han de evaluarse a la hora de diseñar una aplicación distribuida:

1. Concurrencia: De igual forma que en las aplicaciones centralizadas, las aplicaciones distribuidas serán utilizadas por cierto número de usuarios concurrentemente. Aspectos como las transacciones, los bloqueos de recursos o el uso de la CPU de los equipos a los que acceden muchos usuarios son determinantes a la hora de diseñar una arquitectura con la máxima eficacia.

2. Topología de la red: A pesar de que a día de hoy los anchos de banda cada vez son má s amplios, el tráfico de red puede ser un aspecto importante que condicione el tiempo de respuesta de la aplicación. En muchos casos también será necesario tener en cuenta el tipo de red (LAN o WAN), o si la aplicación será o no accesible a través de Internet. La forma de distribuir los procesos de la aplicación tendrá que tomar en consideración el tipo de red que soportará el tráfico de datos.


3. Ubicación de la lógica: Dado que en una aplicación distribuida intervienen varios procesos, será necesario decidir en cuál de los posibles procesos físicos se sitúa cada componente lógico de la aplicación. Mientras que algunos procesos, como la presentación de datos o la recuperación de los mismos, tienen un sitio natural, otros, como la validación o la navegación, pueden ocupar diversos lugares dentro del diagrama que conforma la estructura de la aplicación. En muchas ocasiones la ubicación de los componentes lógicos impacta sobre el rendimiento, sobre la reutilización del código o sobre la facilidad de programación.


4. Homogeneidad de las plataformas: En una aplicación distribuida los sistemas operativos involucrados o los lenguajes de desarrollo utilizados pueden ser un factor a tener en cuenta a la hora de decidir algunos aspectos importantes, como por ejemplo el modo de pasar datos entre procesos. La utilización de estándares puede ser muy útil a la hora de crear aplicaciones distribuidas que permanezcan abiertas a diversos sistemas heterogéneos, pero si las plataformas son similares es posible alcanzar mejor rendimiento sacrificando interoperabilidad.


5. Seguridad: Una aplicación distribuida mantiene procesos que de una forma u otra están a la escucha en una red, lo que aumenta la vulnerabilidad de la aplicación. Será necesario establecer políticas de seguridad que impidan el acceso no autorizado a los procesos. Pedir al usuario un nombre y una contraseña al iniciar el programa es probable que no sea suficiente.

No existe una solución única para todos los problemas. A pesar de que en la actualidad se priman ciertas arquitecturas sobre otras, la realidad es que la decisión final dependerá de todos los factores anteriormente citados, y de otros que a veces no se tienen mucho en cuenta pero que también poseen su importancia, como el coste total de la aplicación o la complejidad de la solución respecto al problema planteado. Ni es recomendable subestimar las necesidades de una aplicación compleja, ni tampoco conviene sobredimensionar la estructura de una aplicación sencilla que puede resolverse con medios más asequibles.

Con las aplicaciones distribuidas el mero análisis funcional de las características de una aplicación ya no es suficiente y es necesario también considerar la distribución y estructura de los procesos involucrados. La tarea del arquitecto de aplicaciones consistirá precisamente en tomar la decisión de diseño más adecuada para resolver el problema, ajustándose lo mejor posible a los requerimientos y tomando en cuenta todos los factores implicados.



Arquitectura de las aplicaciones distribuidas.


En una aplicación distribuida en n-capas los diferentes elementos que integran la aplicación se agrupan de forma lógica según la funcionalidad que reciben o suministran al o desde el resto de los elementos. Así, algunos elementos se limitarán a recibir peticiones de datos mientras que otros interactuarán con el usuario y su función será principalmente la de solicitar a otros elementos la información que el usuario precisa.
Atendiendo al papel que los distintos elementos juegan dentro de la aplicación, distinguimos con claridad tres grupos lógicos en los que podemos agrupar elementos según su funcionalidad:


•La capa de servidor incluye aquellos elementos que se encargan de recibir las peticiones de datos o de acceso a servicios básicos del sistema y de suministrar a otros elementos la información solicitada.
•La capa de negocios encapsula las reglas de acceso a datos y la gestión de procesos internos de la aplicación.
•La capa de presentación se encarga de la lógica necesaria para interactuar con el usuario de la aplicación.

Una vez agrupada la funcionalidad en capas lógicas es fácil relacionar unas con otras. El usuario interactuará con la capa de presentación, solicitando datos o desencadenando acciones. Las solicitudes serán atendidas por la capa de negocios, que se encargará de su gestión o de la traducción necesaria para que la capa de servidor realice la tarea solicitada. Si la capa de servidor debe proporcionar datos estos se devolverán a la capa de negocios, la cual los gestionará o transmitirá a la capa de presentación. La figura 2.1 ilustra este esquema.






Figura 2.1: Esquema lógico de las capas en una aplicación distribuida
.


Es importante notar que el esquema que mostramos es un esquema lógico, no físico. El modo de distribuir físicamente las capas (en diferentes ejecutables o DLL, o en diferentes equipos) se corresponderá con el esquema lógico en todo o en parte, pero no necesariamente existirá una correspondencia exacta entre la distribución lógica de los elementos y su distribución física. La capa de negocios podría residir en diferentes máquinas, por ejemplo, o las entidades de negocio y la capa de servidor podrían formar parte de la misma DLL. Más adelante hablaremos de la relación física entre las diversas capas lógicas y estudiaremos cómo los diferentes escenarios nos condicionarán la distribución física de las capas lógicas.

Adicionalmente, en las aplicaciones distribuidas existen otras funcionalidades, como la seguridad o el registro de sucesos, que no son exclusivas de un grupo lógico ya que deben aparecer en todos los elementos de la aplicación.

1.1.3 Aplicaciones de 2,3 y n capas.

La construcción de aplicaciones n-tier (n-capas) 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).

El modelo presenta algunas ventajas entre ellas:

• Desarrollos paralelos (en cada capa).
• Aplicaciones más robustas debido al encapsulamient .
• Mantenimiento y soporte más sencillo (es más sencillo cambiar un componente que modificar una aplicación monolítica).
• Mayor flexibilidad (se pueden añadir nuevos módulos para dotar al sistema de nueva funcionalidad)

Alta escalabilidad.


La principal ventaja de una aplicación distribuida bien diseñada es su buen escalado, es decir, que puede manejar muchas peticiones con el mismo rendimiento simplemente añadiendo más hardware. El crecimiento es casi lineal y no es necesario añadir más código para conseguir esta escalabilidad.

Como tecnología, las arquitecturas de n-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 n-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 n-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.

Realmente, los componentes distribuidos de una arquitectura de n-capas es una tecnología esencial para crear la siguiente generación de aplicaciones e-business, aplicaciones que son altamente escalables, fiables y que proporcionan un alto rendimiento y una integración sin fisuras con los sistemas de back-end heredados.

A diferencia de lo que se pudiera pensar, el desarrollo en n-capas no es un producto o un estándar, es un concepto estratégico que ayuda a la construcción y despliegue lógico de un sistema distribuido. Los sistemas de n-capas subdivididos ayudan a facilitar el desarrollo rápido de aplicaciones y su posterior despliegue, con beneficios incrementales fruto de los esfuerzos del desarrollo en paralelo coordinado y del outsourcing inteligente, resultando un enorme decremento del tiempo de desarrollo y de sus costes. Muchas de las aplicaciones de e-business que se utilizan actualmente simplemente utilizan un navegador de Internet como cliente ligero que implementa una interfaz universal. Una arquitectura basada en clientes ligeros desplaza la capa de presentación de la aplicación en el lado del cliente, mientras que la lógica de negocio y los datos residen en el middleware y los servidores de back-end. El diseño para clientes ligeros minimiza los problemas de despliegue de las aplicaciones, mientras que maximiza la accesibilidad a la misma desde una amplia variedad de plataformas heterogéneas. Los frameworks basados en n-capas se crean para obtener las ventajas de los estándares abiertos de la industria que permiten a las aplicaciones resultantes operar en entornos distribuidos multiplataforma.

Caracteristicas.


Las aplicaciones que se construyen con una arquitectura multicapa tienen entre otras las siguientes características:

• Acceso a bases de datos (BD) o Normalmente con BD relacionales

• Transaccionales o Propiedades ACID (Atomicity-Consistency-Isolation-Durability)


Operaciones atómicas (Atomicity) son operaciones que se completan en su totalidad o no se completan en absoluto. Así, en el ejemplo anterior de la transferencia tanto el crédito como el débito deben haber sido exitosos para que el estado de transformación sea exitoso (para que haga efectos), de otro modo el estado de la transformación falla, y el sistema es regresado a su último estado conocido.

• Transformaciones consistentes (Consistency) preservan la integridad interna de los recursos involucrados. Por ejemplo, el borrar registros de una tabla primaria viola la integridad referencial de la base de datos si hay registros relacionados que concuerden.

Transformaciones aisladas (Isolation) parecen ocurrir serialmente, una detrás de otra, creando la ilusión de que ninguna transformación está siendo ejecutada al mismo tiempo.

• La durabilidad (Durability) se refiere a la habilidad para almacenar los resultados de una transformación de estado, usualmente en un disco, de tal modo que los resultados de una transformación puedan ser recuperados en caso de una falla del sistema.

Escalables.
- Deberían poder soportar más carga de trabajo sin necesidad de modificar el software (sólo añadir más máquinas)

Disponibilidad o Idealmente no deben dejar de prestar servicio

• Seguras.
- No todos los usuarios pueden acceder a la misma funcionalidad

• Integración.
- Es preciso integrar aplicaciones construidas con distintas tecnologías.

• Tipo de interfaz.

- De entorno de ventanas (clientes desktop): normalmente sólo tiene sentido en intranets.
- Web: En Internet y en intranets.

• Separación clara entre la interfaz gráfica y la Capa de componentes.
- Capa de componentes: encapsulan la lógica de negocio.
- Ejemplo => aplicación bancaria

 Capa de componentes: conjunto de clases que nos permiten: crear cuentas, destruirlas, encontrarlas por distintos criterios, hacer transferencias bancarias, etc.
- La capa de componentes debería ser reusable con distintas interfaces gráficas
- En el ejemplo de la aplicación bancaria podría haber dos clientes: uno Web y otro desktop.


Aplicaciones de una Capa.

Las capas dentro de una arquitectura son nada más que un conjunto de servicios especializados que pueden ser accesibles por múltiples clientes y fácilmente reutilizables.

Este tipo de arquitectura se caracteriza por tener en una sola asociación lógica y en ella a la presentación, la lógica de negocios y los datos; que si los ponemos como servicios se convierten en capas, lo veremos más adelante.



Aplicaciones de 1 Capa


Ejemplos de esta arquitectura son desarrollos realizados en Excel, Access, Fox, entre otros.


Aplicaciones de dos capas.



Se caracterizan por tener 2 asociaciones lógicas, que prestan servicios y que a la final son capas.




Arquitectura de 2 capas.

En la primera capa se incluye a la presentación (Interface grafica) y a la lógica de negocios, toda la lógica la escribimos en las formas (en el onClick del botón por ejemplo), y accedemos a un servicio de datos para la gestión de los mismos, por lo general a un servidor de Base de Datos.

Esta arquitectura es comúnmente llamada cliente servidor, puesto que también el programa fuente puede residir en un servidor y muchos cliente pueden acceder a él para ejecutar una copia del programa.


Arquitectura Cliente – Servidor.


Pero se tubiese la siguiente problemática:

¿Qué podría suceder si tuviésemos que hacer cambios en la implementación de la lógica de negocios?

El resultado es la recompilación de toda la aplicación y reinstalación en todos y cada uno de los clientes; y….si los clientes suman como 200 máquinas?

La solución está en separar la lógica de negocios en un servicio aparte, allí es donde aparece la tercera capa.




Aplicaciones de 3 Capas.

Una aplicación de tres capas es una aplicación cuya funcionalidad puede ser segmentada en tres niveles lógicos (capas):

• Los servicios de presentación.
• Los servicios de negocios (Lógica de Negocios) .
• Los servicios de datos.







Arquitectura de Aplicaciones de 3 capas .

La capa de servicios de presentación es responsable de:

• Obtener información del usuario.
• Enviar la información del usuario a los servicios de negocios para su procesamiento.
• Recibir los resultados del procesamiento de los servicios de negocios.
• Presentar estos resultados al usuario.


El nivel de servicios de negocios es responsable de:

Recibir la entrada del nivel de presentación.
• Interactuar con los servicios de datos para ejecutar las operaciones de negocios para los que la aplicación fue diseñada a automatizar (por ejemplo, la preparación de impuestos por ingresos, el procesamiento de ordenes y así sucesivamente).
• Enviar el resultado procesado al nivel de presentación.


El nivel de servicios de datos es responsable de:

• Almacenar los datos.
• Recuperar los datos.
• Mantener los datos.
• La integridad de los datos.




Arquitectura de 3 capas .

Al ser la primera capa un servicio, se puede inferir que las aplicaciones no solo podrían ser de escritorio, si quisiéramos que nuestra aplicación tenga una interface web, pues solamente bastaría con cambiar la capa de presentación y de allí en adelante nada tiene porque cambiar.

Entonces nuestras páginas web estarían alojadas en un Servidor Web las mismas que se conectan a la lógica de negocios y de allí a los servicios de datos.




Arquitectura de 3 capas con interface Web .


Aplicaciones de n Capas.

Podríamos ir separando nuestra aplicación en mas niveles lógicos, por ejemplo, vamos a querer que nuestra aplicación tenga múltiples interfaces, es decir interface gráfica (standalone o desktop) y también interface Web.

Lo aconsejado en esta circunstancia es separar al Servidor Web encargado de alojar las páginas Web en una capa más. En este caso se tendrían 4 capas.


Arquitectura de 4 capas


Mientras más servicios coloquemos a nuestra aplicación y mientras más escalable lo imaginemos, mas capas lógicas van a irse añadiendo a nuestra arquitectura; allí está el inicio del estudio de las siguientes secciones del curso, LOS PATRONES DE DISEÑO.

• La arquitectura en 3 capas es la más usada
• La arquitectura en 4 capas puede ser más escalable

http://faustol.files.wordpress.com/2007/09/construccion-de-aplicaciones-en-capas.doc.

1.1.2 Aplicaciones Cliente/Servidor.

Clientes y servidores.

El paradigma cliente - servidor divide las aplicaciones comunicantes en dos categorías, dependiendo de si la aplicación se queda en espera de conexiones (servidor) o las inicia (cliente).



En general, una aplicación que inicia una comunicación con otra se la califica como cliente. Los usuarios finales invocan aplicaciones cliente cuando utilizan un servicio de red. Cada vez que se ejecuta una aplicación cliente, esta contacta con el servidor, le envía una solicitud de servicio y espera la respuesta o resultados del servicio. El proceso cliente es el encargado de llevar a cabo la interacción con el usuario y de mostrar los resultados de las peticiones de servicio. En la mayoría de las ocasiones los clientes son mas fáciles de diseñar que los servidores, y no suelen precisar privilegios especiales del sistema para poder funcionar.

Un servidor es un programa que espera peticiones de servicio por parte de un cliente. El servidor recibe la petición del cliente, ejecuta el servicio solicitado y retorna los resultados al cliente. No existe una interacción directa entre el usuario y el servidor, de esto ya se encarga la aplicación cliente.
Desde el punto de vista de una aplicación, el TCP/IP, al igual que muchos otros protocolos de comunicación, implementa un mecanismo fiable para la transmisión de datos entre ordenadores. En concreto, el TCP/IP permite que un programador pueda establecer comunicación de datos entre dos programas de aplicación, tanto si ambos se están ejecutando en la misma máquina, como en maquinas distintas unidas por algún camino físico (una red local, conexión telefónica directa entre computadoras, computadoras conectas a Internet,... ).

Hay que tener presente que el protocolo TCP/IP especifica los detalles y mecanismos para la transmisión de datos entre dos aplicaciones comunicantes, pero no dictamina cuando ni porque deben interactuar ambas aplicaciones, ni siquiera especifica cómo debería estar organizada una aplicación que se va a ejecutar en un entorno distribuido. Es tarea del diseñador de la aplicación distribuida el establecer un protocolo de comunicación y sincronización adecuado.

En la práctica el esquema de programación más utilizado para la implementación de aplicaciones distribuidas es el paradigma cliente - servidor. La motivación fundamental para el empleo del paradigma cliente - servidor surge del problema del rendezvous. Para entender dicho problema, imaginemos un técnico de computadoras que inicia la ejecución de dos programas en máquinas distintas y que tiene la intención de que dichos programas puedan comunicar entre sí. Una vez iniciado el primer programa este envía un mensaje a su contertulio. La conexión con la maquina a la cual va dirigido el mensaje se puede establecer en un intervalo de unos pocos milisegundos (recordar que las computadoras funcionan a velocidades muchos ordenes de magnitud por encima de los humanos), por lo que el proceso recién lanzado determina que su contertulio todavía no existe, con lo cual emite un mensaje de error y finaliza su ejecución. Mientras tanto, el técnico inicia la ejecución del segundo proceso. Desafortunadamente, el segundo proceso no puede comunicar con el primero ya que este ha concluido su ejecución. Incluso si los dos procesos intentan establecer la comunicación continuamente, estos pueden ejecutarse tan rápidamente, que la probabilidad de colisiones es muy alta.

El modelo cliente - servidor da solución al problema del rendezvous (reencuentro). Según este modelo, en cualquier par de aplicaciones comunicantes, una de las partes implicadas en la comunicación debe iniciar su ejecución y esperar (indefinidamente) hasta que la otra parte contacte con ella. Esta solución es importante, ya que el TCP/IP no proporciona ningún mecanismo que automáticamente lance procesos para atender mensajes entrantes, debe de existir un proceso en espera que sea capaz de atender dichos mensajes (peticiones de servicio).
Muchos administradores hacen que ciertos programas de comunicaciones se inicien automáticamente cuando el sistema arranca, de este modo se aseguran que la computadora estará preparada para aceptar ciertas solicitudes de servicio. Después de iniciar su ejecución, cada uno de estos programas se queda en espera de la siguiente petición para el servicio que oferta.


El modelo cliente - servidor.

TCP es un protocolo orientado a conexión. No hay relaciones maestro/esclavo. Las aplicaciones, sin embargo, utilizan un modelo cliente/servidor en las comunicaciones.
Un servidor es una aplicación que ofrece un servicio a usuarios de Internet; un cliente es el que pide ese servicio. Una aplicación consta de una parte de servidor y una de cliente, que se pueden ejecutar en el mismo o en diferentes sistemas.
Los usuarios invocan la parte cliente de la aplicación, que construye una solicitud para ese servicio y se la envía al servidor de la aplicación que usa TCP/IP como transporte.
El servidor es un programa que recibe una solicitud, realiza el servicio requerido y devuelve los resultados en forma de una respuesta. Generalmente un servidor puede tratar múltiples peticiones(múltiples clientes) al mismo tiempo.

Figura: El modelo de aplicación cliente/servidor.

Algunos servidores esperan las solicitudes en puertos bien conocidos de modo que sus clientes saben a que zócalo IP deben dirigir sus peticiones. El cliente emplea un puerto arbitrario para comunicarse. Los clientes que se quieren comunicar con un servidor que no usa un puerto bien conocido tienen otro mecanismo para saber a qué puerto dirigirse. Este mecanismo podría usar un servicio de registro como Portmap, que utiliza un puerto bien conocido.

http://neo.lcc.uma.es/evirtual/cdd/tutorial/aplicacion/cliente-servidor.html
http://www.ctv.es/USERS/carles/PROYECTO/cap3/cap3.html

1.1.1 Aplicaciones Monoliticas.

Migración de Aplicaciones al Modelo Cliente Servidor

Muchas de las aplicaciones de oficina utilizadas actualmente poseen buenos modelos de datos e interfaces realmente claras que permitieron en su momento un significativo aumento de la productividad. El problema es que ven afectada su posibilidad de crecimiento por características tecnológicas de base que dificultan el acceso a alta velocidad dentro de la Red Local e impiden el acceso desde fuentes remotas como Internet y otras redes no locales.

Tal es el caso de la mayoría de las aplicaciones desarrolladas en los últimos años en que el acceso a datos se efectuaba a partir de aplicaciones monolíticas que concentran en una sola capa tanto la interfaz visual como lo métodos de acceso a datos, lo que comúnmente se conoce como modelos Cliente - Cliente.

Estas aplicaciones Cliente- Cliente concentran toda la actividad en los equipos de los usuarios, dejando al los servidores la labor de meros reservorios de datos compartidos.

Así ante cada petición de datos, el servidor devuelve archivos completos que luego son procesados por el equipo cliente, para obtener el resultado.

Por ejemplo, suponiendo que una base de cliente tuviera un tamaño medio de 5Mb y se efectúa una búsqueda muy simple de un cliente en particular, el servidor no efectuará la búsqueda por sí sino que devuelve la tabla de 5Mb completa, luego el equipo del usuario procesa la búsqueda en su equipo para seleccionar 1 registro de digamos unos 1Kb y descarta el resto de la información.

Los principales defectos de este modelo son:

• Requieren más y mejor Hardware en las estaciones de trabajo.
• Son infinitamente más lentos en el procesamiento de peticiones sencillas.
• Ocupan mayor ancho de banda, provocando congestionamiento en la Red Local.
• Requieren habilitar el acceso real a la carpeta de datos para todos los usuarios de la aplicación.
• Su actualización es más costosa.
• No permiten el acceso en línea desde fuera de la Red Local.

O’Lach Multi Media ofrece servicios de migración de aplicaciones al modelo Cliente servidor, a partir de grupos de trabajo cooperativos con los desarrolladores originales, el equipo de desarrollo de la empresa contratante o la interacción de nuestro equipo de desarrollo con los usuarios calificados y el personal de sistemas.

De esta forma, se logran mejorar las capacidades de los sistemas existentes mediante su división en capas (Reservorio, Acceso a Datos e Interfaz Visual) aprovechando todas las aptitudes de la aplicación y ampliando sus posibilidades de uso y crecimiento gracias a la implementación del modelo Cliente Servidor.


http://www.mitecnologico.com/Main/EvolucionAplicacionesInformaticas

1.1 EVOLUCION DE LAS APLICACIONES INFORMATICAS.


1.1 Evolucion de las Aplicaciones Informaticas.

Aplicaciones.

En sus orígenes la programación de los ordenadores era hecho sólo, para y por los mismos científicos que las construían para propósitos muy específicos. El cálculo de la trayectoria de los proyectiles usados en la II Guerra Mundial, y posteriormente usos muy parecidos, hasta que mucho después que fue utilizada en el Censo de los Estados Unidos fue reconociéndose su valor en el campo administrativo donde estuvo hasta hace 2 décadas, cuando gracias a la Computadora Personal pasaron al dominio público donde con tantas necesidades fueron surgiendo las aplicaciones diversas para cada oficio.


A diferencia de algunos años atrás, hoy existe una infinidad de aplicaciones para satisfacer desde diversiones o entretenimiento de niños hasta sofisticados programas de investigación científica; más sin embargo, para las necesidades de la mayoría de los mortales que trabajan en Instituciones o Empresas y aún para los particulares existe un número preciso de aplicaciones, que como herramientas no deben faltar en ninguna computadora de uso personal.




La evolución de las aplicaciones informáticas se dio debido a los siguientes factores:

1. Trabajo a distancia.
2. Compartir información.
3. Accesibilidad.
4. Seguridad en la protección de la información (tener la base de datos particionada en dos o más nodos).
5. Independencia lugares.

En la actualidad cualquier aplicación cuenta generalmente con tres partes diferenciadas:


1. Una interfaz de usuario: Elemento con el que interacciona el usuario de la aplicación, ejecutando acciones, introduciendo u obteniendo información.
2. Lógica ó Reglas de negocio: Son las que procesan la información para generar los resultados que persiguen, siendo el elemento fundamental que diferencia unas aplicaciones de otras.
3. Gestión de datos: Se ocupa del almacenamiento y recuperación de la información.

http://html.rincondelvago.com/evolucion-de-la-informatica_4.html
http://www.tutoriales.itsa.edu.mx/DesarrolloDeAplicaciones/index.php?mod=evoluciondeaplicaciones&ban=0

UNIDAD 1 PANORAMA GRAL. DE LAS APLICACIONES DISTRIBUIDAS.




INSTITUTO TECNOLOGICO DE CIUDAD ALTAMIRANO.



MATERIA:
DESARROLLO DE APLICACIONES PARA AMBIENTE DISTRIBUIDO.

PROFESOR:
MC. Ángel Sixtos Solís.

ALUMNA:
Deysi Yuri Hernández Ríos.

Cd. Altamirano, Gro. Febrero 2011.