Diferencia entre revisiones de «Usuario:ManuelRomero/micursos/DWES/Tema1/Introduccion»

De WikiEducator
Saltar a: navegación, buscar
 
(9 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
{{TEP}}
 
 
__NOEDITSECTION__
 
__NOEDITSECTION__
 
{|cellpadding="5" cellspacing="6" style="width:100%;background:#DFFFFF; border-style:solid; border-width:2px; border-color:#0066FF;"  
 
{|cellpadding="5" cellspacing="6" style="width:100%;background:#DFFFFF; border-style:solid; border-width:2px; border-color:#0066FF;"  
Línea 19: Línea 18:
 
<!--2------------------------------------------------------>
 
<!--2------------------------------------------------------>
 
<div class="slide">
 
<div class="slide">
=CONCEPTOS SOBRE DESARROLLO WEB=
+
===CONCEPTOS SOBRE DESARROLLO WEB===
 
</div>
 
</div>
  
Línea 25: Línea 24:
 
<!--3------------------------------------------------------>
 
<!--3------------------------------------------------------>
 
<div class="slide">
 
<div class="slide">
===Que pretende explicar este módulo===
+
===Qué pretende explicar este módulo===
*El objetivo de este módulo se describe en el nombre que tiene.
+
*El objetivo de este módulo lo describe '''''su propio nombre'''''.
 
{{Objetivo|'''''Desarrollo de aplicaciónes web en entorno servidor'''''}}
 
{{Objetivo|'''''Desarrollo de aplicaciónes web en entorno servidor'''''}}
 
*En esta introducción analizaremos qué entendemos por '''''Desarrollo de aplicaciones web en el entorno servidor'''''.
 
*En esta introducción analizaremos qué entendemos por '''''Desarrollo de aplicaciones web en el entorno servidor'''''.
Línea 39: Línea 38:
 
#Aplicaciones Web
 
#Aplicaciones Web
 
#Entorno servidor
 
#Entorno servidor
[[Imagen:Dwes_1.png|center]]
+
[[Imagen:Dwes_1.png|center|400px]]
 
</div>
 
</div>
  
Línea 48: Línea 47:
 
{{Conocimiento previo|Qué es '''''Desarrollar una aplicación'''''}}
 
{{Conocimiento previo|Qué es '''''Desarrollar una aplicación'''''}}
 
*Son muchas las posibles respuestas, pero al menos deberíamos saber dar una de forma correcta
 
*Son muchas las posibles respuestas, pero al menos deberíamos saber dar una de forma correcta
{{Actividad|aportar dicha definición por parte de grupos de alumnos}}
 
</div>
 
  
  
 +
</div>
  
 +
<div class="slide">
 
<!--6--------------------------------------------------->
 
<!--6--------------------------------------------------->
 +
{{Actividad|Vamos a dar una definición entre todos. Aportar ideas}}
 +
</div>
 +
 +
 +
 +
<!--7--------------------------------------------------->
 
<div class="slide">
 
<div class="slide">
 +
;Posible definición
 
{{Definicion|
 
{{Definicion|
 
*Dado un problema de naturaleza lógica,  
 
*Dado un problema de naturaleza lógica,  
 
*desarrollar una aplicación consiste en
 
*desarrollar una aplicación consiste en
 
*'''''implementar''''' o construir un programa usando un determinado lenguaje de programación,
 
*'''''implementar''''' o construir un programa usando un determinado lenguaje de programación,
*Dicho programa consiste en un conjunto de instrucciones que ejecutadas en un entorno computacional solucionan de forma automatizada el problema planteado.}}
+
*Dicho programa consiste en '''''un conjunto de instrucciones''''' que ejecutadas en un entorno computacional '''''solucionan''''' de forma automatizada '''''el problema planteado'''''.}}
 +
</div>
 +
 
 +
 
 +
 
 +
<!--8--------------------------------------------------->
 +
<div class="slide">
 +
[[Imagen:DesarrollarAplicacion.png|center|700px]]
 
</div>
 
</div>
 +
<!---8--->
  
 
<!--7--------------------------------------------------->
 
<!--7--------------------------------------------------->
Línea 76: Línea 90:
 
;Fases en el desarrollo tradiciona
 
;Fases en el desarrollo tradiciona
 
[[Imagen:AnalisisDiseñoImple1.png]]:  
 
[[Imagen:AnalisisDiseñoImple1.png]]:  
 +
{{Actividad|Realizar la aplicación '''Ecuaciones de segundo grado''' con este esquema}}
 
</div>
 
</div>
  
Línea 128: Línea 143:
 
*Los diferentes '''''[http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html lenguajes de programación'''''] son todos de propósito general, esto es,  pueden implementar cualquier algoritmo correcto.
 
*Los diferentes '''''[http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 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.
 
*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.
 
 
</div>
 
</div>
  
Línea 184: Línea 198:
 
*Es el usuario final  el que empieza el proceso.
 
*Es el usuario final  el que empieza el proceso.
 
*También se conoce como agente.
 
*También se conoce como agente.
*En el cliente necesitamos tener  
+
*En el cliente necesitamos tener una serie de elementos
 +
</div>
 +
 
 +
<!--13---------------------------------------------------->
 +
<div class="slide">
 
*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).
 
*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).
*Necestitamos encontrar la ip de la máquina a partir de su nombre (DNS)
+
*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)
+
*Interpretar y visualizar la información que el servidor nos facilite en formato html (El navegador).
*Ejetucar 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.
+
*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.
 +
</div>
 +
 
 +
<!--13---------------------------------------------------->
 +
<div class="slide">
 +
 
 
===Especificadno el recurso===
 
===Especificadno el recurso===
 
*El cliente hace una petición de una página web
 
*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á y 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 y por lo tanto se elude esta información.
+
*Para ello escribe la URI en el navegador indicando máquina dónde  está.
*También se puede incluir  lo que se llama solicitud y fragmento. La solicitud son parejas variabla=valor que se pasan en la solicitud y el fragmente representa una parte concreta de la página que se solicita, utilizando el método GET dentro del protocolo http
+
*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
 +
</div>
 +
 
 +
<!--13---------------------------------------------------->
 +
<div class="slide">
 +
 
 +
*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.
 
</div>
 
</div>
 
<!--7-->
 
<!--7-->
Línea 210: Línea 244:
 
*Si se elude alguna parte se toma el valor por defecto o lo que establezca el servidor web
 
*Si se elude alguna parte se toma el valor por defecto o lo que establezca el servidor web
 
</div>
 
</div>
 +
 +
<!--13---------------------------------------------------->
 +
<div class="slide">
  
 
==Los medios en el proceso de ejecución de una aplicación web==
 
==Los medios en el proceso de ejecución de una aplicación web==
Línea 215: Línea 252:
 
*Protocolos de la familia tcp/ip.  
 
*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.
 
*Protocolos utilizados Http, tpc/udp, piv4 ipv6 icmp, y otros muchos que se pueden usar a nivel de aplicación.
 +
</div>
 +
 +
<!--13---------------------------------------------------->
 +
<div class="slide">
 +
 
==El servidor en el proceso de ejecución de una aplicación web==
 
==El servidor en el proceso de ejecución de una aplicación web==
 
*Servidor Web
 
*Servidor Web
 
*Recibe e interpreta la solicitud del cliente
 
*Recibe e interpreta la solicitud del cliente
 
*Accede a bases de datos según necesidades
 
*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
+
*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).
 +
</div>
 +
 
 +
<!--13---------------------------------------------------->
 +
<div class="slide">
 
{{Pregunta|
 
{{Pregunta|
 
¿Podemos visualizar  una página web sin que intervenga un servidor web?
 
¿Podemos visualizar  una página web sin que intervenga un servidor web?
 
}}
 
}}
 +
</div>
 +
 +
<!--13---------------------------------------------------->
 +
<div class="slide">
 
<!--MRM Tarea 1-->
 
<!--MRM Tarea 1-->
 
{{Actividad|
 
{{Actividad|
Línea 229: Línea 280:
 
*Identifica en un bloque cada uno de los elementos (CLIENTE, SERVIDOR o MEDIOS) o programas necesarios (programa navegador, protocolo http en cliente, servidor dns, interprete de javaScript, ...)
 
*Identifica en un bloque cada uno de los elementos (CLIENTE, SERVIDOR o MEDIOS) o programas necesarios (programa navegador, protocolo http en cliente, servidor dns, interprete de javaScript, ...)
 
}}
 
}}
==Páginas web estáticas Vs Web dinámicas==
+
</div>
*Podemos comparar como acceder a una web es como ir a  comer a un restaurante
+
**Puedes tomar el plato del día (Accedes al restaurante y te sirven lo que hay sin que puedas elegir)
+
**Puedes elegir entre una serio de platos
+
**Puedes confeccionar tu menú exactamente a tu gusto
+
*Igualmente en un sitio web la página puede ser igual para cualquiera que acceda, o puede adaptarse a ti en concreto
+
*Cuando hablamos de página web dinámicas debemos diferenciar entre
+
  
#Aquellas que incluyen código que ejecuta el navegador. En estas páginas el código ejecutable, normalmente en lenguaje JavaScript, se incluye dentro del HTML (o XHTML) y se descarga junto con la página. Cuando el navegador muestra la página en pantalla, ejecuta el código que la acompaña. Este código puede incorporar múltiples funcionalidades que pueden ir desde mostrar animaciones hasta cambiar totalmente la apariencia y el contenido de la página. En este módulo no vamos a ver JavaScript, salvo cuando éste se relaciona con la programación web del lado del servidor.
+
<!--13---------------------------------------------------->
#Como ya sabes, hay muchas páginas en Internet que no tienen extensión .htm, .html o .xhtml. Muchas de estas páginas tienen extensiones como .php, .asp, .jsp, .cgi o .aspx. En éstas, el contenido que se descarga al navegador es similar al de una página web estática: HTML (o XHTML). Lo que cambia es la forma en que se obtiene ese contenido. Al contrario de lo que vimos hasta ahora, esas páginas no están almacenadas en el servidor; más concretamente, el contenido que se almacena no es el mismo que después se envía al navegador. El HTML de estas páginas se forma como resultado de la ejecución de un programa, y esa ejecución tiene lugar en el servidor web (aunque no necesariamente por ese mismo servidor).
+
<div class="slide">
  
 +
===El comando [http://es.wikipedia.org/wiki/CURL curl]===
 +
*Si no está instalado se instala fácil
 +
<source lang="bash">
 +
  sudo apt-get install curl 
 +
</source>
 +
*Con este comando podemos establecer comunicación con servidores usando los diferentes protocolos que soporta.
 +
</div>
  
 +
<!--13---------------------------------------------------->
 +
<div class="slide">
 +
;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 [http://es.wikipedia.org/wiki/Anexo:C%C3%B3digos_de_estado_HTTP códigos] http
 +
*Nos interesará conocer los códigos del servidor 5xx
 +
</div>
  
}}
+
<!--13---------------------------------------------------->
==Aplicaciones Web==
+
<div class="slide">
 
+
Ejemplos de uso del comando
*Las aplicaciones web emplean páginas web dinámicas para crear aplicaciones que se ejecuten en un servidor web y se muestren en un navegador.
+
*Ver el contenido de una página wqeb
*Una Aplicación Web, aunque funcionalmente puede hacer lo mismo que una aplicación de escritorio, presenta  ciertas ventajas e inconvenientes si las comparas con las aplicaciones tradicionales que se ejecutan sobre el sistema operativo de la propia máquina.
+
'''''curl url_página_web'''''
;Ventajas de las aplicaciones web:
+
*Guardar una página web en un fichero '''''-o'''''
#No es necesario instalarlas en aquellos equipos en que se vayan a utilizar. Se instalan y se ejecutan solamente en un equipo, en el servidor, y esto es suficiente para que se puedan utilizar de forma simultánea desde muchos equipos.
+
'''''curl -o nombreFichero url_página_web'''''  
#Como solo se encuentran instaladas en un equipo, es muy sencillo gestionarlas (hacer copias de seguridad de sus datos, corregir errores, actualizarlas).
+
*Ver la cabecera de una web
#Se pueden utilizar en todos aquellos sistemas que dispongan de un navegador web, independientemente de sus características (no es necesario un equipo potente) o de su sistema operativo.(Independiente del hardware).
+
  '''''curl --head url_pagina_web'''''
#Se pueden utilizar desde cualquier lugar en el que dispongamos de conexión con el servidor. Como dispositivos móviles.
+
</div>
;Inconvenientes de las aplicaciones web:
+
#El interface de usuario de las aplicaciones web es la página que se muestra en el navegador. Esto restringe las características del interface a aquellas de una página web.
+
#Dependemos de una conexión con el servidor para poder utilizarlas. Si nos falla la conexión, no podremos acceder a la aplicación web.
+
#La información que se muestra en el navegador debe transmitirse desde el servidor. Esto hace que cierto tipo de aplicaciones no sean adecuadas para su implementación como aplicación web (por ejemplo, las aplicaciones que manejan contenido multimedia, como las de edición de vídeo).
+
#Al viajar la información por la red, existe un problema extra de seguridad.
+
 
+
Para generar aplicaciones web, existen herramientas llamadas gestores de contenidos como Drupal, Joomla, Wrodpress y otras muchas. En ellas siempre vemos dos partes bien diferenciadas:
+
 
+
#Una parte externa o front-end, que es el conjunto de páginas que ven la gran mayoría de usuarios que las usan (usuarios externos).
+
#Una parte interna o back-end, que es otro conjunto de páginas dinámicas que utilizan las personas que producen el contenido y las que administran la aplicación web (usuarios internos) para crear contenido, organizarlo, decidir la apariencia externa, etc.
+
 
+
*Una aplicación web normalmente se divide en dos partes, un front-end, que es la parte pública que ven los usuarios externos; un back-end, que es la parte privada que usan los administradores de la aplicación.
+
===Programación en el servidor y en cliente===
+
*Ya hemos dejado hablado un poco de estas dos tecnologías
+
;El cliente se ejecuta en el navegador
+
*El código a ejecutar viene embido en forma de script en la página que el servidor nos entrega
+
*Este script en principio no puede directamente acceder a los datos que tengamos en el servidor
+
*Todas las cosas que ejecuta aquí no tienen que viajar
+
{{Pregunta|Si quiero verificar que la contraseña introducida en una página web tenga una longitud mínima, ¿dónde sería preferible que se ejecutara el código de comprobación? }}
+
;El servidor ejecuta código y genera páginas html que entrega al cliente
+
*El cliente nunca ve este código
+
*El servidor accede (si es necesario) a la información que tenemos en la base de datos
+
*El servidor responde a una solicitud del cliente y le entrega una página html
+
*No se puede pensar que el cliente necesita un dato y se lo pide al servidor y este se lo entrega, lo que entrega es una págian html. Esto debe quedar muy claro
+
{{Puntos clave| El servidor ante una solicitud del cliente entrega una página html}}
+
;AJAX Al rescate
+
{{Pregunta|
+
#¿Qué pasa cuando el cliente solo quiere un dato del servidor para actualziar la página que actual?
+
#¿y si en un momento dado, sólo pretendemos almacenar algo y qudarnos como estamos?
+
}}
+
*Desde hace unos años existe una técnica de desarrollo web conocida como AJAX, que nos posibilita realizar programas en los que el código JavaScript que se ejecuta en el navegador pueda comunicarse con un servidor de Internet para obtener información con la que, por ejemplo, modificar la página web actual.
+
 
+
{{Punto clave| '''''Ajax''''' permite  sin salir de una página permite modificar su contenido en base a la información que se almacena en un servidor de Internet}}
+
 
+
  
 +
<!--13---------------------------------------------------->
 +
<div class="slide">
  
==Ejemplo de uso del comando curl==
+
*Si la web nos redirige, hay que especificarlo con '''''-L'''''
*
+
  '''''curl -L url_página_web'''''  Para que accedamos a la página que nos redirige url_pagina_web
==Arquitectura Web==
+
*Para ver toda la traza de información de un servidor
==Tecnologías y arquitectura  web ==
+
*Podemos también simular el envío de datos a un servidor bien por POST y bien por GET. Simulando un formulario.
 
+
Estos conceptos ya los veremos y utilizaremos mas adelante
2.- Tecnologías para programación web del lado del servidor.
+
Icono de iDevice Caso práctico
+
Imagen de un grupo de trabajo.
+
 
+
 
+
*Cuando programas una aplicación, utilizas un lenguaje de programación. Por ejemplo, utilizas el lenguaje Java para crear aplicaciones que se ejecuten en distintos sistemas operativos. Al programar cada aplicación utilizas ciertas herramientas como un entorno de desarrollo o librerías de código. Además, una vez acabado su desarrollo, esa aplicación necesitará ciertos componentes para su ejecución, como por ejemplo una máquina virtual de Java.
+
*Es importante ser consciente de ello para tener la capacidad de poder tomar una decisión en un momento determinado antes de empezar a desarrollar una aplicación.
+
 
+
Los componentes principales para ejecutar una  aplicaciones web en un servidor son los siguientes:
+
 
+
    '''''Un servidor web''''' para recibir las peticiones de los clientes web (normalmente navegadores) y enviarles la página que solicitan (una vez generada puesto que hablamos de páginas web dinámicas). El servidor web debe conocer el procedimiento a seguir para generar la página web: qué módulo se encargará de la ejecución del código y cómo se debe comunicar con él.
+
    '''''El módulo encargado de ejecutar el código o programa''''' y generar la página web resultante. Este módulo debe integrarse de alguna forma con el servidor web, y dependerá del lenguaje y tecnología que utilicemos para programar la aplicación web.
+
    '''''Un gestor de base de datos''''', será un servidor. Este módulo no es estrictamente necesario pero en la práctica se util#iza en todas las aplicaciones web que utilizan grandes cantidades de datos para almacenarlos.
+
    '''''El lenguaje de programación''''' que utilizarás para desarrollar las aplicaciones.
+
 
+
; La arquitectura de la aplicación:
+
*Además de los componentes a utilizar, también es importante decidir cómo vas a organizar el código de la aplicación.Esto se conoce como la arquitectura de la aplicación web. Muchas de las arquitecturas que se usan en la programación de aplicaciones web te ayudan a estructurar el código de las aplicaciones en capas o niveles.
+
El motivo de dividir en capas el diseño de una aplicación es que se puedan separar las funciones lógicas de la misma, de tal forma que sea posible ejecutar cada una en un servidor distinto (en caso de que sea necesario).
+
*Un servidor de aplicaciones web en realidad puede estar formado por varios servidores físicos; cada servidor se puede encargar de ejecutar una parte de la aplicación. De esta forma, y aunque externamente se vean como un único servidor, internamente se puede dividir la funcionalidad de una aplicación web en:
+
#capa de acceso a datos: que se tendrá que encargar de almacenar la información de la aplicación en una base de datos y recuperarla cuando sea necesario.
+
#capa intermedia :  donde deberás programar la funcionalidad de tu aplicación.
+
#capa cliente:  que es donde programarás todo lo relacionado con el interface de usuario, esto es, la parte visible de la aplicación con la que interactuará el usuario.
+
 
+
 
+
 
+
 
+
==Programación Web con Java==
+
*Dibujo de una taza de café humeante sobre las letras Java.
+
Java es el lenguaje de programación más utilizado hoy en día. Es un lenguaje orientado a objetos, basado en la sintaxis de C y C++ y eliminando algunas características de éstos que daban lugar a errores de programación, como los punteros. Todo el código que escribas en Java debe pertenecer a una clase.
+
*El código fuente se escribe en archivos con extensión .java. El compilador genera por cada clase un archivo .class. Para ejecutar una aplicación programada en Java necesitamos tener instalado un entorno de ejecución (JRE). Para crear aplicaciones en Java necesitamos el kit de desarrollo de Java (JDK), que incluye el compilador.
+
*Como ya viste, existen básicamente dos tecnologías que te permiten programar páginas web dinámicas utilizando Java EE: servlets (clases Java compiladas que contienen instrucciones de salida para generar las etiquetas HTML de las páginas) y JSP (páginas web que contienen instrucciones para añadir contenido de forma dinámica).
+
Aunque no es así en todos los casos, la mayoría de implementaciones disponibles para JSP compilan cada página y generan un servlet a partir de la misma la primera vez que se va a ejecutar. Este servlet se almacena para ser usado en futuras peticiones.
+
 
+
Por ejemplo, si quieres calcular la suma de dos números y enviar el resultado al navegador, lo podríamos realizar con una página JSP, incluyendo el código en Java dentro de las etiquetas HTML utilizando los delimitadores <% y %> de la siguiente manera:
+
 
+
Página JSP que contiene etiquetas HTML y una línea de código Java que muestra el resultado de efectuar una suma.
+
 
+
O también utilizando el método println dentro de un servlet como el siguiente, que obtiene los valores a sumar de otra página:
+
 
+
Código de un servlet que se encarga de sumar dos parámetros y mostrar el resultado obtenido.
+
 
+
No hay nada que se pueda hacer con JSP que no pueda hacerse también con servlets. De hecho, como ya viste, las primeras se suelen convertir en servlets para ser ejecutadas.
+
 
+
El problema de utilizar servlets directamente es que, aunque son muy eficientes, son muy tediosos de programar puesto que hay que generar la salida en código HTML con gran cantidad de funciones como println. Este problema se resuelve fácilmente utilizando JSP, puesto que aprovecha la eficiencia del código Java, para generar el contenido dinámico, y la lógica de presentación se realiza con HTML normal.
+
 
+
De esta forma estas dos tecnologías se suelen combinar para crear aplicaciones web. Los servlets se encargan de procesar la información y obtener resultados, y las páginas JSP se encargan del interface, incluyendo los resultados obtenidos por los servlets dentro de una página web.
+
 
+
 
+
 
+
*
+
 
</div>
 
</div>
<!--6-->
+
<!--13---------------------------------------------------->
 
<div class="slide">
 
<div class="slide">
  
 +
{{Actividad|
 +
Investiga y explica al menos 3 opciones del comando curl, pudiendo ser las vistas anteriormente}}
 +
</div>
  
{{Recursos de la Web|
 
*Qué es una aplicación web en [http://es.wikipedia.org/wiki/Aplicaci%C3%B3n_web wikipedia]
 
*Qué es un desarrollo web en http://es.wikipedia.org/wiki/Desarrollo_web wikipedia]
 
*Ques es una URL vs diferencia con http://www.hispamedios.com/articles/id34-url-y-uri URI]
 
}}
 
  
 +
 
|}
 
|}

Última revisión de 09:30 25 sep 2015

DWES TituloTema1B.gif





Qué pretende explicar este módulo

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


Icon objectives.jpg

Objetivo

Desarrollo de aplicaciónes web en entorno servidor
  • 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.
Partes a analizar
  1. Desarrollar una aplicación
  2. Aplicaciones Web
  3. Entorno servidor
Dwes 1.png

Desarrollar una aplicación



Icon preknowledge.gif

Conocimiento previo

Qué es Desarrollar una aplicación


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



Icon activity.jpg

Actividad

Vamos a dar una definición entre todos. Aportar ideas




Posible definición


Icon define.gif

Definición

  • Dado un problema de naturaleza lógica,
  • desarrollar una aplicación consiste en
  • implementar o construir un programa usando un determinado lenguaje de programación,
  • Dicho programa consiste en un conjunto de instrucciones que ejecutadas en un entorno computacional solucionan de forma automatizada el problema planteado.



DesarrollarAplicacion.png
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.


Fases en el desarrollo tradiciona

AnalisisDiseñoImple1.png:


Icon activity.jpg

Actividad

Realizar la aplicación Ecuaciones de segundo grado con este esquema




Desarrollar una aplicación



Icon qmark.gif

Pregunta

¿Compilación o interpretació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



Icon preknowledge.gif

Conocimiento previo

Diferencias entre Compilacion Vs Interpretación




Icon qmark.gif

Pregunta

Java es un lenguaje compilado o interpretados





Icon qmark.gif

Pregunta

En un entorno de ejecución web, qué tipo de modelo se debe de usar y por qué


Una Aplicación Web



Icon preknowledge.gif

Conocimiento previo

Qué es 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.
  8. ...
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.



Icon inter.gif

Recursos de la Web




Icon qmark.gif

Pregunta

Qué carácterísticas tiene una apliación web


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.
  • 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.

ServidorWebVsCliente.jpg

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
  1. Usando solicitud
protcolo://maquina/ruta/recurso/solicitud
http://www.unizar.es/deiss/notas.htmll?nombre="Manuel"&modulo="DWES"
  1. Usando el puerto
protcolo://maquina/ruta/recurso:puerto/

http://www.unizar.es:80/

  • 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).



Icon qmark.gif

Pregunta

¿Podemos visualizar una página web sin que intervenga un servidor web?




Icon activity.jpg

Actividad

  • Realiza en un documento usando diagramas y detallando el proceso de carga de una página web
  • Contempla la posibilidad de tener que ejecutar script tanto en cliente como en servidor
  • Identifica en un bloque cada uno de los elementos (CLIENTE, SERVIDOR o MEDIOS) o programas necesarios (programa navegador, protocolo http en cliente, servidor dns, interprete de javaScript, ...)




El comando curl

  • Si no está instalado se instala fácil
  sudo apt-get install curl
  • 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

  • Ver el contenido de una página wqeb
curl url_página_web 
  • Guardar una página web en un fichero -o
curl -o nombreFichero url_página_web  
  • Ver la cabecera de una web
curl --head url_pagina_web
  • Si la web nos redirige, hay que especificarlo con -L
curl -L url_página_web  Para que accedamos a la página que nos redirige url_pagina_web
  • 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.
Estos conceptos ya los veremos y utilizaremos mas adelante



Icon activity.jpg

Actividad

Investiga y explica al menos 3 opciones del comando curl, pudiendo ser las vistas anteriormente




Obtenido de «https://es.wikieducator.org/index.php?title=Usuario:ManuelRomero/micursos/DWES/Tema1/Introduccion&oldid=17604»