proyecto

13
[Seleccione la fecha] [ESCRIB A EL NOMBRE DE LA COMPAÑÍ A] [ESCRIBA EL TÍTULO DEL DOCUMENTO]

Upload: pancho93

Post on 26-Dec-2015

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: proyecto

[Escriba el nombre de la compañía]

[Escriba el título del documento]

Page 2: proyecto

Definición de proyecto multicapa

Este tipo de aplicaciones esta dividido en unidades lógicas, llamadas capas, las cuales se ejecutan en distintas máquinas.

Una aplicación multicapa queda particionada de la siguiente manera:

Aplicación Cliente: se encarga de mostrar la interfaz de usuario.

Servidor de aplicaciones: reside en la red local central y es accesible por todos los clientes donde reciben datos directamente de este servidor.

Servidor de bases de datos: en este servidor es donde está instalado el motor de bases de datos (Interbase, Firebird, Oracle, etc.), aunque el servidor de aplicaciones y el servidor de bases de datos pueden ser la misma máquina.

En este modelo a tres capas los clientes sólo pueden comunicarse con el servidor de aplicaciones y en ningún caso directamente con el motor de bases de datos, como ocurre en las aplicaciones cliente/servidor habituales.

VENTAJAS DE CREAR UN MODELO MULTICAPA

En este modelo de bases de datos la aplicación cliente sólo se dedica a mostrar los datos al usuario, no sabe nada sobre como los datos son actualizados y mantenidos.

El servidor de aplicaciones (capa media) coordina y procesa las peticiones y actualizaciones de múltiples clientes. El servidor maneja todos los detalles, define el conjunto de datos e interactua con el servidor de bases de datos.

Las ventajas de este modelo multicapa son las siguientes:

- Encapsulación de lógica de negocio. Diferentes clientes de la aplicación pueden acceder al mismo servidor intermedio. Esto permite evitar la redundancia (y coste de mantenimiento) de duplicar las reglas de negocio para cada aplicación cliente separada.

- Aplicaciones clientes pequeñas. Al delegar las tareas más pesadas en la capa media las aplicaciones clientes ocupan menos y consumen menos procesador y memoria, permitiendo instalarse en máquinas de bajo rendimiento. Esto trae la ventaja de que por muchos clientes que accedan a la aplicación, el motor de bases de datos sólo tiene una conexión, que va directamente al servidor de aplicaciones, evitando así problemas de

Page 3: proyecto

concurrencia o latencia de datos entre distintas aplicaciones cliente. Estas aplicaciones clientes también pueden funcionar a través de Internet ya que su consumo de ancho de banda es mínimo, al contrario de conectar directamente con el motor de bases de datos.

- Procesar datos distribuidos. Distribuir el trabajo de una aplicación entre varias máquinas puede mejorar la ejecución, ya que el balanceo de carga permite reducir la carga de las máquinas que funcionan como servidor de aplicaciones. Por ejemplo, si vemos que una aplicación de gestión se relentiza podemos distribuir en una máquina las compras, en otra las ventas y la gestión de recibos en otra.

- Incrementar la seguridad. Podemos aislar la funcionalidad en las capas dando restricciones de seguridad. Esto proporciona unos niveles de seguridad configurables y flexibles. Las capas intermedias pueden limitar los puntos de entrada a material protegido, permitiendo controlar el control de acceso más fácilmente. Si usamos HTTP o COM+, podemos utilizar los modelos de seguridad que soportan.

Características

• Es una plataforma estándar para el desarrollo y funcionamiento de aplicaciones

• Se pueden desarrollar aplicaciones completamente portables

• La plataforma establece mecanismos de seguridad

Las etapas de desarrollo de un proyecto multicapa

La capa de desarrollo

1.  Diseño simple.  Es importante entender, que cuando se desarrollan aplicaciones multicapa no se puede exagerar en funcionalidades que harán lento el proceso, despliegue de datos o la actualización de funcionalidades.  Esta es la razón por la que la utilización de procedimientos tipo Javascript corriendo en un servidor permite que  muchos usuarios al mismo tiempo ejecuten tareas sin recargar el sistema. En la medida que los procesos se pueden hacer más pequeños solo requiere vigilar la cantidad y capacidad de procesadores para mantener el diseño simple… aunque esto más que ser una especialidad de arquitectos de software parece ser más una habilidad de los dioses.

2.  Aplicaciones para uso multidispositivo.  Es necesario considerar que los usuarios querrán acceder a la información desde dispositivos de escritorio o diversidad de móviles vía la web por lo que el desarrollo debe considerar este principio.  Aunque no es fácil predecir la evolución de los conocidos gadgets, al menos se debe considerar la especialidad del proyecto para fines de alimentación y descarga de datos, como en el caso de un proceso catastral el uso de équipos GPS y PDA´s con aplicaciones

Page 4: proyecto

GIS/CAD con capacidades mínimas de alimentación de datos tabulares, y uso de datos raster/vector.  A medida que la especialidad del negocio es de uso diversificado requiere estar pendiente del avance de las tecnologías.

3. Vía Base de datos.  Para mantener un procesador libre de colapso es necesario considerar que cualquier acción que el usuario ejecute sea una simple llamada a la base de datos, así que si se usará transferencia de archivos es preferible crear web services.  Si se usarán mapas, lo ideal es crear servicios IMS para publicación y si se hará descarga de documentos buscar el uso de web services.

La capa de Procesos

4. La web como plataforma.  Sea Intranet o Internet, el concepto es el mismo, buscar que el entorno de trabajo de los usuarios sea en línea así que cualquier tipo de procesos corren desde el servidor.   Esto se complementa con el siguiente principio pues la intención es buscar que la operación de procesos no requiera de equipos con grandes recursos aunque sea necesario rediseñar aplicativos de escritiorio.

5. Uso de aplicaciones en línea.  Este es un gran reto para los desarrolladores, pues en esta capa también entra un nivel de usuarios que hacen procesos que van más allá de la consulta.  Tal es el caso de mantenimiento catastral, en que se requiere uso de archivos discretos y no solo manipulación de datos tabulares.  Para esto el software elegido debe proveer un entorno de administración controlada de archivos, versionado y el proceso conocido como checkout-checkin; también se espera que la API provea capacidades para particularizar las funcionalidades y evitar que los procesos de escritorio compliquen la sincronización.

La Capa de Usuarios

6. Inteligencia Colectiva. Este principio viene del concepto de comunidad, muy popular en estos días. Es importante crear interfases que faciliten la comunicación entre usuarios, sean estos foros, redes de soporte o canales de mensajería instantánea a fin que los usuarios puedan compartir entre ellos sus dudas, soluciones y sacarle el provecho a las habilidades colectivas.

7. Retroalimentación. Los servicios creados deben tener las funcionalidades suficientes para que los usuarios puedan reportar errores, agregar comentarios sean automatizados o voluntarios lo importante es que los usuarios que administran las otras dos capas sepan de los visitantes. También se espera en este nivel que el acceso restringido sea seguro, el registro funcional y la actualización de cambios automatizada.

Estos principios deberían influir al momento por decidirse por una marca de software, sobre todo porque la vida de esto no está en los productos de salida sino en la capacidad para meterle mano desarrollando.

Page 5: proyecto

Las etapas de desarrollo de un proyecto simple

Comenzar el proyecto: Esta etapa implica generar, evaluar y enmarcar la necesidad del proyecto para el negocio y el modo general de llevarlo a cabo, comprometiéndose a preparar un plan de proyecto detallado. El resultado de esta etapa puede incluir la aprobación para pasar a la siguiente etapa, documentación de la necesidad del proyecto y evaluaciones estimadas de tiempo y recursos para realizarlo, también una lista inicial de personas que podrían estar interesadas en él, que podrían involucrase o que se verían afectadas por el proyecto.

Organizar y preparar: Esta etapa implica el desarrollo de un plan que especifique los resultados esperados; el trabajo que se ha de hacer; el tiempo, el costo y otros recursos requeridos; así como también un plan de cómo responder a los riesgos principales del proyecto.

Ejecutar el trabajo: Esta etapa implica formar al equipo del proyecto y los sistemas de apoyo del proyecto, llevar a cabo el trabajo planeado, monitoreando y controlando el desempeño para asegurar el apego al plan vigente. El resultado de esta etapa puede incluir los resultados del proyecto, los informes de progreso y otros comunicados.

Cerrar el proyecto: Esta etapa supone evaluar los resultados del proyecto, obtener la aprobación de los clientes, delegar otras tareas al equipo del proyecto, cerrar las cuentas financieras y realizar una evaluación final. La consecuencia de esta etapa puede incluir los resultados finales, aceptados y aprobados, así como también las recomendaciones y sugerencias para aplicar las lecciones aprendidas de este proyecto a esfuerzos similares en el futuro.

Utilidad en Patrones de Diseño en Proyectos Multicapa

Un patrón de diseño es: • un lenguaje de programación de alto nivel • una manera más práctica de describir ciertos aspectos de la organización de un programa • Conexiones entre componentes de programas • La forma de un diagrama de objeto o de un modelo de objeto.

• una solución estándar para un problema común de programación • una técnica para flexibilizar el código haciéndolo satisfacer ciertos criterios • un proyecto o estructura de implementación que logra una finalidad determinada

Page 6: proyecto

Definición de Socket

Un socket es un fichero existente en la máquina cliente y en la máquina servidora,  que   sirve   en   última   instancia   para   que   el   programa   servidor   y   el   cliente   lean   y  escriban la información. Esta información será la transmitida por las diferentes capas  de red. Para que dos programas puedan comunicarse entre sí es necesario que se cumplan  ciertos requisitos:

• Que un programa sea capaz de localizar al otro.  • Que ambos programas sean capaces de intercambiarse cualquier secuencia 

de octetos, es decir, datos relevantes a su finalidad. 

Para ello son necesarios los tres recursos que originan el concepto de socket:

• Un protocolo de comunicaciones, que permite el intercambio de octetos.• Una   dirección   del   Protocolo   de   Red   (Dirección   IP,   si   se   utiliza   el  

Protocolo  TCP/IP), que identifica una computadora. • Un   número   de   puerto,   que   identifica   a   un   programa   dentro   de   una 

computadora. 

Los sockets permiten implementar una arquitectura cliente-servidor.

La comunicación  ha de ser iniciada por uno de los programas que se denomina programa cliente.

 El  segundo   programa  espera  a  que  otro   inicie  la  comunicación,  por este motivo   se  denomina programa servidor. Las propiedades de un socket dependen de las características del protocolo en el  que   se   implementan.  

El   protocolo   más   utilizado   es   Transmission   Control   Protocol,  aunque también es posible utilizar UDP o IPX. Gracias al protocolo TCP, los sockets tienen las siguientes propiedades:

• Orientado a conexión. • Se garantiza la transmisión de todos los octetos sin errores ni omisiones.

Page 7: proyecto

Efectos de la conexión Ha trabes del socket

La comunicación entre procesos a través de sockets se basa en la filosofía CLIENTE-SERVIDOR: un proceso en esta comunicación actuará de proceso servidor creando un socket cuyo nombre conocerá el proceso cliente, el cual podrá "hablar" con el proceso servidor a través de la conexión con dicho socket nombrado.

El proceso crea un socket sin nombre cuyo valor de vuelta es un descriptor sobre el que se leerá o escribirá, permitiéndose una comunicación bidireccional, característica propia de los sockets y que los diferencie de los pipes, o canales de comunicación unidireccional entre procesos de una misma máquina. El mecanismo de comunicación vía sockets Tiene los siguientes pasos:

El proceso servidor crea un socket con nombre y espera la conexión.  El proceso cliente crea un socket sin nombre.  El proceso cliente realiza una petición de conexión al socketbservidor.  El cliente realiza la conexión a través de su socket mientras el proceso

servidor mantiene el socket servidor original con nombre.

Definición de hilos componentes y estados

Un hilo en pocas palabras es un flujo de control secuencial simple dentro de un programa, es decir, que cada hilo tiene un comienzo, una secuencia de ejecución y un final, sin embargo, los hilos no son programas como tal porque no pueden ser ejecutados por ellos mismos, solo es posible hacerlo dentro de un programa, alguna de cuyas tareas sea realizada por el hilo.

• Conocidos también como procesos ligeros.• Un thread es un flujo de ejecución secuencial dentro de un proceso. • Un mismo proceso java puede tener

a). Un único thread (el thread principal) y por tanto se le llama mono tarea.

b). Varios threads (por ejemplo el thread principal y el de gestión de eventos). Y por tanto se le llama monotarea

Page 8: proyecto

Características funcionamiento y uso de hilo

Creación: Cuando se crea un proceso se crea un hilo para ese proceso. Luego, este hilo puede crear otros hilos dentro del mismo proceso, proporcionando un puntero de instrucción y los argumentos del nuevo hilo. El hilo tendrá su propio contexto y su propio espacio de la columna, y pasará al final de los Listos.

Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea (salvando sus registros de usuario, contador de programa y punteros de pila). Ahora el procesador podrá pasar a ejecutar otro hilo que esté en la final de los Listos mientras el anterior permanece bloqueado.

Desbloqueo: Cuando el suceso por el que el hilo se bloqueó se produce, el mismo pasa a la final de los Listos.

Terminación: Cuando un hilo finaliza se liberan tanto su contexto como sus columnas.

Definición de objetos remotos

Los objetos remotos pueden registrarse mediante programación o mediante su especificación en archivos de configuración. El registro de objetos remotos en archivos de configuración permite a los administradores de aplicaciones que exponen o usan objetos remotos cambiar la ubicación de los objetos sin volver a compilar la aplicación. En esta sección se describe la forma de registrar objetos remotos en archivos de configuración.

CARACTERÍSTICAS, VENTAJAS Y DESVENTAJAS DE LOS OBJETOS REMOSTOS

Características:

Configuración de objetos remotos

Describe los requisitos básicos para utilizar un archivo de configuración de aplicación con .NET Remoting, incluidos la duración, las instancias y los elementos de plantilla.

Cómo configurar el período de duración de un objeto remoto activado en el cliente o activado en el servidor

Muestra cómo configurar la duración de un objeto remoto.

Muestra cómo configurar un canal.

Page 9: proyecto

Describe los requisitos de configuración de una aplicación que publica tipos que se utilizan de forma remota.

Cómo registrar un objeto activado en el servidor y un objeto activado en el cliente en un dominio de aplicación host

Muestra cómo registrar un objeto activado en el servidor y un objeto activado en el cliente para un dominio de aplicación host.

Describe los requisitos de configuración de una aplicación que publica tipos que se usan de forma remota.

Muestra el procedimiento para configurar un cliente remoto en IIS.

Describe los requisitos de configuración de proveedores de canales y de receptores de canal.

Muestra cómo crear una plantilla de canal en un archivo de configuración.

Ventajas:

Los programadores tienen la posibilidad de distribuir los componentes de una aplicación a los equipos que mejor se adapten a la tarea de cada objeto, sin tener que cambiar el resto de la aplicación que utiliza estos objetos.

Dado que los objetos parecen ser locales a sus clientes, el cliente no sabe lo que hay en la máquina, o incluso qué tipo de máquina es, ni los objetos que residen en ella.

La integración de sistemas se puede realizar en un grado superior.

Desventajas:

No permite la fácil integración con sistemas heredados No es rápido Tiene algunas limitaciones debido a su estrecha integración con Java; La

principal de ellas es que esta tecnología no permite la interacción con aplicaciones escritas en otro lenguaje