Usuario:ManuelRomero/micursos/DWES/Tema1/Introduccion

{|cellpadding="5" cellspacing="6" style="width:100%;background:#DFFFFF; border-style:solid; border-width:2px; border-color:#0066FF;"
 * width="100%" valign="top" style="padding: 0; margin:0px;" |

Qué pretende explicar este módulo

 * El objetivo de este módulo lo describe su propio nombre.


 * En esta introducción analizaremos qué entendemos por Desarrollo de aplicaciones web en el entorno servidor.
 * Para ello vamos a ir desgranando el nombre del módulo y analizándolo en cada una de sus partes.

center|400px
 * Partes a analizar
 * 1) Desarrollar una aplicación
 * 2) Aplicaciones Web
 * 3) Entorno servidor

Desarrollar una aplicación

 * Son muchas las posibles respuestas, pero al menos deberíamos saber dar una de forma correcta


 * Posible definición

center|700px


 * Desarrolar una aplicación
 * Cuando decimos implementar nos referimos a :
 * 1) Analizar el problema.
 * 2) Diseñar una solución algorítmica válida.
 * 3) Escribir el código de dicha solución utilizando uno o varios  lenguajes de programación concreto, interpretables o complilables.

Imagen:AnalisisDiseñoImple1.png:
 * Fases en el desarrollo tradiciona


 * Desarrollar una aplicación


 * Las instrucciones escritas, de alguna manera han de pasar a código máquina para que se puedan ejecutar en un entorno computacional.
 * Para ello dichas instrucciones pueden Compilarse o Interpretarse

Una Aplicación Web

 * Normalmente en un ordenador vemos un programa o aplicación ejecutándose, con el cual podemos estar interactuando.
 * No todos los programas o aplicaciones son del mismo tipo, tenemos diferentes tipos de software


 * Tipos de aplicaciones


 * 1) Aplicaciones de escritorio.
 * 2) Aplicaciones de ingeniería.
 * 3) Aplicación de Tiempo real.
 * 4) Software de Inteligencia artificial.
 * 5) Software de predicciones metereológicas, cálculo científico.
 * 6) Aplicaciones de juegos.
 * 7) Aplicaciones web.


 * Tipos de sorftware
 * Los diferentes lenguajes de programación son todos de propósito general, esto es, pueden implementar cualquier algoritmo correcto.
 * No obstante presentan diferentes características que los hacen más idóneos para implementar código en determinados tipo de software, de modo que dependiendo el tipo de software que vamos a desarrollar deberíamos de ver que tipos de lenguajes tenemos disponibles.


 * Tipos de sorftware
 * Por otro la la encapsulación y abstracción en lenguajes orientada a objetos (También ocurre con la tendencia de lenguajes de tipo TAD (tipos abstractos de datos)) permite que los diferentes lenguajes ofrezcan librerías o clases en terminología OOP, que nos hacen mucho del trabajo habitual para ese tipo de aplicaciones.
 * Son componentes que directamente podemos usar


 * framework
 * También van apareciendo framework donde con un lenguaje de programación se toma una metodología de trabajo y se adapta un determinado lenguaje (Por ejemplo creando dentro del framework determinados objetos) para facilitar el trabajo al desarrollador.

Imagen:AplicacioneWeb1.png


 * En la imagen vemos una serie de elementos
 * 1) Un entorno de cliente.
 * 2) Un entorno de servidor.
 * 3) Una parte de comunicaciones y protocolo.


 * Entornos en una aplicación web
 * En realidad cada un de estas partes se estudia en sus respectivos módulos en este ciclo.
 * 1) La parte de cliente la cubren los módulos de Diseño de interfaces y Desarrollo de aplicaciones en entorno cliente
 * 2) La parte de comunicaciones y protocolo y algo de aplicaciones del servidor en el entorno del servidor se cubre en el módulo de depliegue web.
 * 3) La parte del entorno servidor la cubrimos en este módulo: Desarrollo de aplicaciones en entorno servidor.

Imagen:ServidorWebVsCliente.jpg
 * Lógicamente una aplicación web a de tener cada una de esas partes
 * Especialemente está condicionada la parte del entorno servidor
 * En este módulo usaremos conceptos vistos en los otros.

El cliente en el proceso de ejecución de una aplicación web

 * Es el usuario final el que empieza el proceso.
 * También se conoce como agente.
 * En el cliente necesitamos tener una serie de elementos


 * Un programa (navegador) dónde el usuario escribe la solicitud (Lá página a la que quiero acceder, la máquina en la que se encuentra, y dentro de la página su ubicación).
 * Necesitamos encontrar la ip de la máquina a partir de su nombre (DNS)
 * Interpretar y visualizar la información que el servidor nos facilite en formato html (El navegador).
 * Ejecutar los script que aporte la respuesta del servidor por ejemplo código en java Script (Todos los navegadores modernos interpretan el código JavaScript y lo ejecutan.

Especificadno el recurso

 * El cliente hace una petición de una página web
 * Para ello escribe la URI en el navegador indicando máquina dónde está.
 * También nombre de la página que solicita, protocolo usado y puerto por el que realiza la solicitud.
 * (En la mayoría de las ocasiones se toma el puerto por defecto para ese protocolo
 * http 80, https  443


 * También se puede incluir lo que se llama solicitud y fragmento.
 * La solicitud son parejas variabla=valor que se pasan en la solicitud
 * El fragmenta representa una parte concreta de la página que se solicita,
 * Para el fragmento se utiliza el método GET dentro del protocolo http.


 * ejemplo de direcciones


 * 1) Usando fragmento

protcolo://maquina/ruta/recurso/fragmento http://www.unizar.es/deiss/notas.html#primerCurso protcolo://maquina/ruta/recurso/solicitud http://www.unizar.es/deiss/notas.htmll?nombre="Manuel"&modulo="DWES" protcolo://maquina/ruta/recurso:puerto/ http://www.unizar.es:80/
 * 1) Usando solicitud
 * 1) Usando el puerto
 * Si se elude alguna parte se toma el valor por defecto o lo que establezca el servidor web

Los medios en el proceso de ejecución de una aplicación web

 * Aparte de la comunicación física necesitamos unos protocolos
 * Protocolos de la familia tcp/ip.
 * Protocolos utilizados Http, tpc/udp, piv4 ipv6 icmp, y otros muchos que se pueden usar a nivel de aplicación.

El servidor en el proceso de ejecución de una aplicación web

 * Servidor Web
 * Recibe e interpreta la solicitud del cliente
 * Accede a bases de datos según necesidades
 * Ejecuta código en el servidor, generando como resultado una página html que es lo que da al cliente
 * (El cliente no ve el código del servidor).

El comando curl

 * Si no está instalado se instala fácil
 * Con este comando podemos establecer comunicación con servidores usando los diferentes protocolos que soporta.


 * Curl
 * Usando la sintaxis URL podemos transferir ficheros entre cliente y servidor.
 * Veamos algún uso que puede resultar interesante
 * Suele ser interesante conocer los códigos http
 * Nos interesará conocer los códigos del servidor 5xx

Ejemplos de uso del comando curl url_página_web curl -o nombreFichero url_página_web curl --head url_pagina_web
 * Ver el contenido de una página wqeb
 * Guardar una página web en un fichero -o
 * Ver la cabecera de una web

curl -L url_página_web Para que accedamos a la página que nos redirige url_pagina_web Estos conceptos ya los veremos y utilizaremos mas adelante
 * Si la web nos redirige, hay que especificarlo con -L
 * Para ver toda la traza de información de un servidor
 * Podemos también simular el envío de datos a un servidor bien por POST y bien por GET. Simulando un formulario.


 * }