Herramientas Informaticas

Categoría: Desarrollo de aplicaciones para ambientes distribuidos Página 1 de 2

1.4 Problemas comunes en el desarrollo de aplicaciones distribuidas


· La compatibilidad de distintos tipos de datos- Como la mayoría de los sistemas son distribuidos heterogéneamente, existe la posibilidad de que se interconecten varios tipos de gestores de base de datos que pueden tener tipos de variables incompatibles.

· Fallas en el servidor
– Es común que los servidores fallen cuando empiezan a trabajar con un volumen mas grande de datos, y es por eso que al principio no muestran este tipo de errores.

· Errores del cliente
– Existe un numero infinito de causas por la que el programa cliente puede fallar, el servidor debe de tener programado los servicios

· Sincronización de horas- Es un error muy común en sistemas distribuidos en un área geográfica que alcanza diferentes zonas horarias, tal es el caso de Hotmail, en la sección de la hora que los enviaste el correo te marque otra hora diferente.

· Seguridad- Un ejemplo muy claro seria en el sistema distribuido en un banco donde dos personas con la misma tarjeta de identificación tratan de hacer un retiro en diferentes zonas geográficas.

· Priorización Con RPC – No puede manejar los picos de carga de trabajo que puede tener un servidor si tiene llamadas RPC de muchos clientes.

· Reintento de llamadas- Si el cliente pide un paquete demasiado grande el servidor alcanza a enviar pero por errores, el servidor responde, pero se pierde la respuesta por fallas en la red, no seria eficiente volver a contestar al servidor.

1.3 Escenarios de utilización de aplicaciones distribuidas

Los escenarios de utilización de aplicaciones distribuidos son muy comunes en la población los escenarios tales como los remote login, correo electrónico, navegación web, telefonía IP, y la compartición de archivos p2p.

Algunos escenarios donde se utilizan las aplicaciones distribuidas son:

MODDLE

Es un ambiente educativo virtual, sistema de gestión de cursos de distribución libre.

Ayuda a los educadores a crear comunidades de aprendizaje en línea. A este tipo de plataformas tecnológicas también se conoce como LMS

WORDPRESS

Es un sistema de gestión de contenido utilizado para crear blogs.

CREADOR DE WIKIS – MEDIAWIKI

Mediawiki es un software para wikis libre, programado en el lenguaje PHP.

Es el software utilizado por Wikipedia y otros proyectos de la misma (wikcionario, wikilibros, etc.)

Mediawiki puede ser instalado en los servidores web apache e internet information services y como base de datos utiliza Mysql o Postgresql.

ADMINISTRADOR DE BASE DE DATOS WEB – PHPMYADMIN

Phpmyadmin es una herramienta escrita en PHP con la intención de manejar la administración de Mysql a través de las páginas Web, utilizando internet.

Actualmente se puede crear y eliminar bases de datos, crear, eliminar y alterar tablas, borrar editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos y tablas en diversos formatos.

Este proyecto se encuentra vigente desde 1998, siendo el mejor evaluado en la comunidad de descargas de sourceforge.net como la descarga del mes de diciembre del 2002

1.2.4 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 Asistente Digital Personal) y muchos otros dispositivos preparados para conectarse al 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 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 se había producido.

Esquema de arquitectura de 3 capas

1.2.3 De base de datos

La historia de las bases de datos empieza a mediados de los años cincuentas en el momento que empezaron a utilizarse los ordenadores para automatizar la gestión de las empresas, fundamental mente con los desarrollos de COBOL, caracterizándose por el uso de tecnologías orientadas a la estructuración de datos mediante modelos jerárquicos

Por ejemplo

· IMS de IBM

· IDMS de Cullinet

Todos estos de lógica procedimental, que obliga al programador desplazarse de registro a registro, hecho que indica escasa flexibilidad

A principios de los años setentas se aplico el trabajo del Dr. Codd, el modelo relacional, en donde los datos se representan en tablas constituidas por filas y columnas.

Ejemplo de sistemas que usaron este modelo:

· Oracle

· DB2

· INGRES

· INFORMIX

Codd propuso dos lenguajes para manipular los datos en las tablas; algebra y calculo relacional que soportan la manipulación de datos sobre la base de operadores lógicos en lugar de modelos jerárquicos y de red.

De allí nace SQL, Lenguaje Estructurado de Consulta donde se manipula por medio de algunos comandos basados en algebra relacional.

En los años ochentas surgen teorías de normalización para que la base de datos tenga la mejor integridad.

1.2.2 De aplicación

La evolución de la aplicación en la arquitectura distribuida se dio de la siguiente forma:

· Aplicación monolítica

· Arquitectura cliente/servidor

· Arquitectura de 3 capas

· Arquitectura de n-capas

Las herramientas para el desarrollo de las aplicaciones distribuidas han tenido un buen avance, al principio se usaba BASIC y Pascal como lenguaje para desarrollar la interfaz entre los años sesentas y setentas.

En 1972 apareció el lenguaje C con el cual se reescribe Unix.

En 1980 apareció C++ que hizo posible la manipulación de objetos.

En los años noventas aparece JAVA que es posible correr aplicaciones en cualquier sistema operativo siempre y cuando tengan la maquina virtual instalada, lo cual facilita el desarrollo de aplicaciones distribuidas heterogéneas.

Aparece en 2001 C# creado por Microsoft que forma parte de .NET, también es multiplataforma como JAVA, la herramienta para desarrollar en Linux es Mono Developed y en Windows Visual Studio.

Las ultimas herramientas mas novedosas para desarrollar aplicaciones en C#, C++, Visual Basic son Visual Studio 2010 que permite hacer la interfaz directamente arrastrando botones etc.

Otra herramienta para el desarrollo de aplicaciones distribuidas es RAD Studio que te permite hacer la programación visual al igual que Visual Studio, solo que RAD Studio cuenta con la opción de programar en Pascal y en C.

No debemos olvidar también la herramienta de APPLE que es Xcode para MAC, que es de gran ayuda para programar no solo para MAC en el ordenador si no que también en sus dispositivos móviles como iPhone, iPod, iPad, Iboard, lo ultimo que han desarrollado en aplicaciones distribuidas es la novedosa nube o su iCloud, que consiste en que si guardas una nota o bajas un programa estos estarán en todos los dispositivos.

1.1.4 Aplicaciones distribuidas

Una aplicación con distintos componentes se ejecutan en entornos separados, normalmente en diferentes plataformas conectadas a través de una red.

COMPONENTES DE UNA APLICACIÓN DISTRIBUIDA

1. Lado del servidor.

2. Lado del cliente.

3. Protocolo de la aplicación.

4. Formato de los mensajes.

Lado del servidor: Programa que se ejecuta en un computador, esta a la escucha de un puerto, esperando peticiones de los clientes.

Por ejemplo:

El servidor de correo Hotmail o Gmail, cuando se va a autenticar el usuario y contraseña, el servidor hace los procesos internos para analizar si el usuario existe y concuerda con el usuario.

Lado cliente: Programa que ejecuta el usuario.

Por ejemplo:

· Windows Live Messenger

· Mozilla

· FileZilla

Protocolo de aplicación:

Para la comunicación cliente servidor. El protocolo define el tipo de mensajes intercambiados;

Por ejemplo el protocolo de la capa de aplicación Web HTTP, define el formato y las secuencias de mensajes transmitidos entre el navegador y el servidor Web.

Formato de los mensajes que se intercambian: Forman parte del servicio;

Por ejemplo: en el correo electrónico se define el formato de los mensajes electrónicos.

1.1.3 Aplicaciones de 2/3 y n capas

Lo que se conoce como arquitectura en capas es en realidad un estilo de programación cuyo objetivo principal es separar los diferentes aspectos del desarrollo, tales como las cuestiones de aplicación, lógica de negocios, mecanismos de almacenamiento, etc.

Aplicaciones de 2 capas las componen:

· Capa de acceso a datos.

· Capa de aplicación.

Algunas redes disponen de tres tipos de nodos:

· Clientes que interactúan con los usuarios finales.

· Servidores de aplicación que procesan los datos para responder a los clientes.

· Servidores de base de datos que almacenan los datos para servidores de aplicación.

A esta arquitectura se le llama arquitectura de 3 capas y se divide en:

· La capa de acceso a datos.

· La capa de negocios.

· La capa de presentación.

Ventajas de las arquitecturas de n-capas:

La ventaja fundamental de la arquitectura n-capas con una arquitectura de dos niveles (o una de de 3 capas con una de 2 niveles) es que separa hacia afuera el proceso, eso ocurre para mejorar el balance de la carga en los diversos servidores; es mas escalable.

Desventajas de las arquitecturas de n-capas

· Pone mas carga a la red, debido al trafico que genera en la red

· Es mucho mas difícil programar y probar el software que en la arquitectura de dos niveles por que tienen que comunicarse con mas dispositivos para terminar la transacción del usuario.

1.1.2 Aplicaciones Cliente/Servidor

La arquitectura cliente/servidor es un modelo de aplicación distribuida en donde las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes llamados clientes.

Un cliente realiza peticiones a otro programa, el servidor, es el que da las respuestas.

La separación del cliente/servidor, donde el servidor no se ejecuta necesariamente sobre una sola maquina ni es necesariamente un solo programa. Los tipos específicos de servidores web, servidores de archivo FTP, y de correo mientras que los propósitos varían de un servicio a otro.

La arquitectura cliente/servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto en nivel físico con nivel lógico.

CARACTERISTICAS CLIENTE/SERVIDOR

En la arquitectura cliente servidor el remitente es conocido como cliente y sus características son:

1. Es quien inicia las peticiones o solicitudes, tienen un papel activo en la comunicación (Dispositivo maestro o amo).

2. Espera y recibe las respuestas del servidor.

3. Normalmente interactúalo con los usuarios mediante una interfaz grafica.

4. Al contratar un servicio de redes, se tiene que tener en la velocidad de conexión que le otorga al cliente y el tipo de cable que utiliza, por ejemplo: cable de cobre ronda entre 1 ms y 50 ms.

El receptor de la solicitud enviada por el cliente se le conoce como servidor y sus características son las siguientes:

1. Al iniciarse esperan la solicitud o petición del cliente, desempeñan entonces un papel pasivo en la comunicación (Dispositivo esclavo).

2. Tras la recepción de la petición del cliente, la procesan y luego envían la respuesta al cliente.

3. No es frecuente que interactúen directamente con los usuarios finales.

1.1.1 Aplicaciones monolíticas


1.1.1 Aplicaciones monolíticas

Una aplicación monolítica es aquella aplicación que se ha diseñado para solo una función un ejemplo de ello seria un procesador de texto.

Es una única aplicación de software en niveles en los que la interfaz de usuario y código de acceso a datos se combinan en un solo programa de una plataforma única.

Una aplicación monolítica es autónoma, independiente de otras aplicaciones computacionales.

La aplicación no solo es responsable de una determinada tarea si no que ejecuta un conjunto de tarea para completar una función en particular.

Estas aplicaciones se asocian a veces con ordenadores mainframe.

Una aplicación monolítica también se le es llamada de una capa y los datos se encuentran mezclados o altamente mezclados lo que indica que no puede hacerse una separación física o lógica para verificar si alguna de las partes puede ser reutilizable.

En las aplicaciones monolíticas la interfaz de usuario, la lógica de negocio y los datos forman un todo.

Un ejemplo de esto también puede ser MS-DOS

Ventajas de las aplicaciones monolíticas

1. Funcionan mas rápido

2. Fácil de desarrollar

3. Precisa de cierta potencia de procesamiento

Desventajas

1. Requiera mayor hardware en las estaciones de trabajo

2. Son infinitamente mas lentos en el procesamiento de peticiones sencillas

3. Requiere habilitar el acceso real a la carpeta de datos para todos los usuarios de la aplicación

4. Su actualización es mas costosa

5. No permite el acceso en línea desde fuera de la red local o requieren de implementaciones de soluciones de conectividad muy costosa.

1. 1. Panorama general de las aplicaciones distribuidas

1.1 Evolución de las aplicaciones informáticas

La evolución de las aplicaciones informáticas se debe principalmente a cinco factores.

1. Trabajo a distancia

2. Compartir información

3. Accesibilidad

4. Seguridad en la protección de la información (Tener la información en 2 o más nodos)

5. Independencia de los lugares

Trabajo a distancia – En el desarrollo de software o algún otro proyecto X los miembros del proyecto no están en el mismo lugar físico, así que es necesario aplicaciones que permitan la comunicación ya sea auditiva, visual o escrita.

Compartir información – Las empresas necesitan tomar decisiones a tiempo real, utilizando la información de la matriz hasta las sucursales, es por eso que se necesita tener un informe instantáneo acerca de las ventas algún otro dato importante que pueda influir en la toma de alguna decisión.

Accesibilidad – Se refiere a la presentación, la forma en la que el usuario visualizara y manipulara la información mostrada por a aplicación.

Interfaz de usuario – Elemento con el que interacciona el usuario con la aplicación, ejecutando acciones, introduciendo u obteniendo información.

Lógica o 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.

Seguridad en la protección de la información – Todos sabemos que los dispositivos de almacenamiento no son eternos, fallan y la información se pierde, es por eso que es más seguro tener la información en múltiples nodos.

Gestión de datos – Se ocupa del mantenimiento y recuperación de la información.

Independencia de los lugares – Se refiere al acceso de la información desde cualquier lugar donde se tenga acceso a un dispositivo con conexión a internet.

Página 1 de 2

Creado con WordPress & Tema de Anders Norén