Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Fundamentos Web
Jose Emilio Labra Gayo
Departamento de Informática
Universidad de Oviedo
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
Contenidos
Representación de información
Información textual
Infor...
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
Los ordenadores manejan código binario: 0s y 1s
Bytes: Grupos de 8...
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
ISO-10646: Define repertorio universal de caracteres (UCS)
UNICODE...
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
UTF-8
Uno de los códigos más populares
Código de longitud variable...
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
Imágenes
Formatos Raster (Raw): Se enumeran los puntos con sus col...
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
Arquitectura de la Web
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
Características de la Web
Gran cantidad de información
Acceso casi...
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
Pilares de la Web
3 pilares
Interacción: Protocolos HTTP, FTP, SMT...
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
Esquema conceptual de HTTP
Usuario Navegador
Cliente
Servidor
URI
...
Recursos
La Web está formada por recursos
Recurso = cualquier fuente de contenido Web
Se identifican mediante URIs
Diversa...
Recursos
Navegador
Cliente
Servidor
URI
WWW
HTTP
Fichero texto
Imagen
Base
datos
Programa
Sistema ficheros
=
Gateway
Gatew...
Tipos de recursos
Los servidores asocian un tipo a cada recurso
Tipos MIME (Multipurpose Internet Mail Extensions)
Ejemplo...
HTTP: Formato de mensajes
Modo texto: línea inicial
cabecera del mensaje*
cuerpo del mensaje ?
Navegador
Cliente
Servidor
...
Mensajes de petición
Formato general:
POST /admin HTTP/1.1
Host: www.uniovi.es
User-Agent: Mozilla/5.0 …
Accept: text/html...
HTTP/1.1 200 OK
Date: Thu, 12 Oct 2013 09:36:05 GMT
Server: Apache
Content-length: 80554
Content-type: text/html; charset=...
Utilidades
Diversas utilidades
curl http://curl.haxx.se/
Hurl http://hurl.it
Redbot http://redbot.org
Web-sniffer: http://...
CURL
Ejemplos:
curl http://cursoxml.herokuapp.com
curl -H "Accept-language:es" http://cursoxml.herokuapp.com
curl -H "Acce...
Métodos HTTP
GET: Solicita una representación de un recurso
PUT: Crear un recurso
POST: Envía datos para que un recurso lo...
Métodos HTTP
Propiedades
Método Bases de
datos*
Función Segura? Idempotente?
PUT Create Crear recurso No SI
POST Update Ac...
Cabeceras en la petición
Accept: Tipos de representaciones aceptables
Accept-charset: Conjunto de caracteres aceptable
Acc...
Respuestas HTTP
Ejemplo
HTTP/1.1 200 OK
Date: Fri, 17 Nov 2006 15:36:32 GMT
Server: Apache
Last-Modified: Fri, 17 Nov 2006...
Cabeceras en la respuesta
Content-type: Tipo MIME de la respuesta
Cache-control: Especificar directivas para controlar la ...
URIs
Recursos
Recurso = Unidad básica de la Web
Cualquier cosa que se identifique con una URI
URI ≠ Recurso ≠ Representación
UR...
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://www.uniovi.es
<!DOCTYPE html>
<html>
<he...
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://www.di.uniovi.es/~labra/images/asturias....
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://www.w3.org/People/Berners-Lee/card#i
ide...
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://xmlns.com/foaf/0.1/Person
identifica
Eje...
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://purl.org/dc/terms/creator
identifica
Eje...
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://purl.org/dc/terms
identifica
Ejemplo: Es...
Formato de una URI
Más información: Especificación
http://tools.ietf.org/html/rfc3986
esquema://autoridad camino ?consulta...
Partes de una URI
Más información: Especificación
http://tools.ietf.org/html/rfc3986
Nota: las URNs identifican nombres ún...
Dereferenciación
Dereferenciar una URI = Acceder al contenido de una URI
Obtener una representación del recurso identifica...
Estabilidad de las URIs
URIs = pilar fundamental de cualquier aplicación Web
Objetivo: Esquema de URIs estable
Lema: Cool ...
Formatos de Representación
Formatos de representación
En la Web, el formato más habitual es HTML
Existen muchos más formatos: XML, JSON, RDF, PNG, …
...
HTML
Tipo de representación más popular en la Web
Objetivo: representar hipertexto
Ejemplo:
<!DOCTYPE html>
<html>
<head>
...
XML
Facilita intercambio de información
Objetivo: procesamiento automático
Comercio electrónico
<?xml version="1.0">
<pedi...
JSON
Facilita intercambio de información
Objetivo: procesamiento automático
Servicios Web { "pedido": [
{
"type": "product...
RDF
Permite integración de información
Integración automática de los datos
Objetivo: Evitar ambigüedad en cadenas de texto...
Tipos de representación
Los tipos de representación se identifican con MIME
MIME (Multipurpose Internet Mail Extensions)
I...
Funcionamiento de la Web
2 computadores conceptuales: Cliente y Servidor
La representación puede calcularse dinámicamente
...
Cliente
También se conoce como Agente de Usuario
Normalmente es un navegador (browser)
Múltiples tipos de agentes de usuar...
Componentes de un navegador
Interfaz
Analizador
Motor visualización
Intérprete ECMAScript procesa eventos y modifica árbol...
Componentes de un Servidor
La arquitectura del servidor depende de muchos factores
Descomposición habitual
Vista: Se encar...
Computación en Servidor
Contenido es generado dinámicamente
1. Llega la petición al servidor
2. El servidor analiza paráme...
Múltiples alternativas
CGIs
Lenguajes específicos para Web: PHP
Lenguajes dinámicos: Perl, Python, Ruby,...
Javascript en ...
CGI
CGI (Common Gateway Interface), 1.1 (2004)
Método estándar para transmitir parámetros entre
servidor y programas ejecu...
PHP
Lenguaje interpretado por el servidor
El código se incrusta en HTML mediante marcas
especiales
Cuando el servidor reco...
Lenguajes dinámicos
Python, Ruby
Lenguajes interpretados de propósito general
Buenos frameworks y librerías para Web
Ruby:...
Javascript lado servidor
Librería Node.js
Incluye V8, el motor Javascript de Google
Permite utilizar Javascript en el serv...
Lenguajes generales compilados
2 ecosistemas
Java (JVM) .Net (CLR)
JVM
Máquina virtual de Java
Empotrado: JSP
Servlets y Contenedores de aplicaciones
TOMCAT
Otros lenguajes sobre JVM
Scala,...
ASP.Net
Basado en CLR
Máquina virtual de C#
ASP Permite empotrar lenguaje en HTML
Extensión aspx <% .... código %>
Diverso...
Web Frameworks
Micro-frameworks
Basados en protocol HTTP
Enrutan verbos HTTP (GET, PUT, POST, DELETE) con
acciones
MVC bas...
Micro-frameworks
PHP: Slim, Silex
Ruby: Sinatra
Python: Flask
Java: Spark,
Scala: Scalatra
Frameworks Web
Numerosos frameworks
PHP: CakePHP, Zend, Symfony
Ruby: Ruby on Rails
Python: Django, Zope
Java: Spring MVC,...
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
Referencias
Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra
Fin
Upcoming SlideShare
Loading in …5
×

1 fundamentos web

817 views

Published on

Fundamentos de la Web

Published in: Education
  • Be the first to comment

  • Be the first to like this

1 fundamentos web

  1. 1. Fundamentos Web Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo
  2. 2. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra Contenidos Representación de información Información textual Información Binaria Arquitectura de la Web HTTP URIs Formatos de representación Funcionamiento de la Web Cliente Servidor
  3. 3. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra Los ordenadores manejan código binario: 0s y 1s Bytes: Grupos de 8 bits Caracteres: Asociar a cada carácter un nº Sistema ASCII (A)merican (S)tandard (C)ode for (I)nformation (I)nterchange Utiliza 7 bits  (0 – 127). Ejemplo: A = 65 = 1000001 Sólo cubre 27 = 128 caracteres Diversas extensiones: ISO-8859-1 (iso-latin-1) (8 bits) ASCII (0-127) + otros caracteres típicos de Europa occidental Familia ISO-8859-X = Otros alfabetos europeos ISO-8859-15 (iso-latin-9): iso-8859-1 + símbolo de € Información textual
  4. 4. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra ISO-10646: Define repertorio universal de caracteres (UCS) UNICODE = Consorcio de empresas de internacionalización. Estándard Unicode: Añade más definiciones a ISO-10646 Última versión 2012 (6.2) contiene más de 110.000 caracteres Codificaciones (UTF = Unicode Transformation Format) UTF-8: Código de longitud variable compatible con ASCII UTF-16: Usa 16 bits para los caracteres más comunes, el resto con pares de 16 bits UTF-32: Codificación directa en 32 bits (desperdicio de espacio) NOTA: Conviene distinguir: Carácter: Entidad abstracta (Letra A) Glifo (Glyph): Representación del carácter A A A A A A Fuente (Font): Conjunto de glyphs, ejemplo: Times Roman, Arial, etc. Unicode Más información http://unicode.org http://unicode-table.com
  5. 5. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra UTF-8 Uno de los códigos más populares Código de longitud variable Los primeros 127 caracteres = ASCII Bits Byte1 Byte2 Byte3 Byte4 Byte5 Byte6 0-7 0ccccccc - - - - - 8-11 110ccccc 10cccccc - - - - 12-16 1110cccc 10cccccc 10cccccc - - - 17-21 11110ccc 10cccccc 10cccccc 10cccccc - - 22-26 111110cc 10cccccc 10cccccc 10cccccc 10cccccc - 27-31 1111110c 10cccccc 10cccccc 10cccccc 10cccccc 10cccccc Ejemplo: Z = 90 = 01011010 (= ASCII y UTF-8) = 5073 = 0001 001111 010001 (binario) En UTF-8 = 11100001 10001111 10010001 (UTF-8)
  6. 6. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra Imágenes Formatos Raster (Raw): Se enumeran los puntos con sus colores Ejemplo: Bitmap, TIFF Compresión: diversos algoritmos de compresión GIF: Utiliza 8 bits (hasta 256 colores) Byte de color = Indice en la paleta de colores JPEG: utiliza 24 bits (hasta 16 millones de colores) Sonido: Formatos raster (WAV) y comprimidos (MP3) Vídeo: Formatos comprimidos (MPEG) Información Binaria ¡Cuidado con la información binaria!
  7. 7. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra Arquitectura de la Web
  8. 8. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra Características de la Web Gran cantidad de información Acceso casi instantáneo desde cualquier lugar No centralizado  Cualquiera puede añadir información Multimedia (Texto, Imágenes, Vídeo, etc.) Identificación de recursos unificada (URIs) Interactividad: Aplicaciones Web
  9. 9. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra Pilares de la Web 3 pilares Interacción: Protocolos HTTP, FTP, SMTP, etc. Identificación: URIs Formatos de representación: HTML, JSON, XML, ... Identificación URI Formatos HTML, JSON,... Identificación URI Interacción Protocolos Formatos HTML, JSON,... WWW
  10. 10. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra Esquema conceptual de HTTP Usuario Navegador Cliente Servidor URI Representación WWW HTTP Petición Respuesta
  11. 11. Recursos La Web está formada por recursos Recurso = cualquier fuente de contenido Web Se identifican mediante URIs Diversas Posibilidades: Estáticos: almacenados en Sistema de Ficheros Páginas HTML Otros formatos multimedia: Imágenes, vídeos, sonidos, ... Dinámicos: bajo demanda Generado a partir de bases de datos Integrando información de otros servicios Web Información online NOTA: La mayoría de la información disponible en la Web se genera dinámicamente
  12. 12. Recursos Navegador Cliente Servidor URI WWW HTTP Fichero texto Imagen Base datos Programa Sistema ficheros = Gateway Gateway Gateway Gateway Otro servidor Cámara Web Base datos Informac. Bursátil Control Robot
  13. 13. Tipos de recursos Los servidores asocian un tipo a cada recurso Tipos MIME (Multipurpose Internet Mail Extensions) Ejemplos: text/plain, text/html, application/xml, image/jpg,... El cliente decide qué hacer con dichos tipos Usuario Navegador Cliente Servidor Petición Respuesta WWW HTTP Content-type: image/jpeg Content-length: 8854
  14. 14. HTTP: Formato de mensajes Modo texto: línea inicial cabecera del mensaje* cuerpo del mensaje ? Navegador Cliente Servidor Petición WWW HTTP HTTP/1.1 200 OK Date: Thu, 12 Oct 2013 09:36:05 GMT Server: Apache Content-length: 80554 Content-type: text/html; charset=utf-8 <html> <head> <title>Curso XML</title> <head> ... </html> GET /index.html HTTP/1.1 Host: www.uniovi.es User-Agent: Mozilla/5.0 … Accept: text/html Accept-language: es, en Respuesta
  15. 15. Mensajes de petición Formato general: POST /admin HTTP/1.1 Host: www.uniovi.es User-Agent: Mozilla/5.0 … Accept: text/html Accept-language: es, en ...datos POST... <method> <url> <version> <headers> * <entity-body> GET /index.html HTTP/1.1 Host: www.uniovi.es User-Agent: Mozilla/5.0 … Accept: text/html Accept-language: es, en <headers> = parejas de la forma: nombre1: valor1 nombre2: valor2 <method>= GET,PUT,POST,DELETE,... Ejemplos:
  16. 16. HTTP/1.1 200 OK Date: Thu, 12 Oct 2013 09:36:05 GMT Server: Apache Content-length: 80554 Content-type: text/html; charset=utf-8 <html> <head> <title>Curso XML</title> <head> ... </html> Mensajes de respuesta Formato general: HTTP/1.1 404 Not found Content-length: 0 <version> <status> <reason-phrase> <headers> * <entity-body> <Status> Códigos estándar: 2**: Variaciones de OK 3**: redirecciones 4**: Problemas del cliente 5**: problemas del servidor Ejemplos:
  17. 17. Utilidades Diversas utilidades curl http://curl.haxx.se/ Hurl http://hurl.it Redbot http://redbot.org Web-sniffer: http://web-sniffer.net/ RestClient http://code.google.com/p/rest-client/ curl http://cursoxml.herokuapp.com Algunas opciones: -v (verbose) -H (cabeceras) -X (verbos POST, PUT, DELETE,...)
  18. 18. CURL Ejemplos: curl http://cursoxml.herokuapp.com curl -H "Accept-language:es" http://cursoxml.herokuapp.com curl -H "Accept:text/html" http://cursoxml.herokuapp.com/search?course=html5 curl -H "Accept:application/xml" http://cursoxml.herokuapp.com/search?course=html5 curl -X POST http://cursoxml.herokuapp.com/login -d email="pepe@abc.org" -password="abc"
  19. 19. Métodos HTTP GET: Solicita una representación de un recurso PUT: Crear un recurso POST: Envía datos para que un recurso los procese Puede implicar la creación/actualización de recursos DELETE: Elimina un recurso Otros HEAD: Similar a GET, pero obtiene únicamente la cabecera TRACE: Pide la solicitud que se envió al servidor OPTIONS: Solicita los métodos que soporta el servidor CONNECT: Convierte la petición en un túnel TCP/IP Facilita la comunicación a través de SSL
  20. 20. Métodos HTTP Propiedades Método Bases de datos* Función Segura? Idempotente? PUT Create Crear recurso No SI POST Update Actualizar No No GET Retrieve Consultar recurso Si Si DELETE Delete Eliminar recurso No Si * Aunque son similares, las operaciones CRUD de bases de datos y los métodos GET, PUT, POST y DELETE de HTTP no son idénticos
  21. 21. Cabeceras en la petición Accept: Tipos de representaciones aceptables Accept-charset: Conjunto de caracteres aceptable Accept-encoding: Codificación de caracteres aceptable Accept-language: Idiomas aceptables Authorization: Indicar credenciales de autorización Cache-control: Especificar directivas para controlar la cache Connection: Tipo de conexión preferida Cookie: Cookie enviada previamente por el servidor Content-length: Longitud de la petición Content-type: Tipo MIME del cuerpo de la petición Date: Fecha/hora de la solicitud If-Modified-Since: Permite enviar código 304 No modificado si no se ha modificado el contenido desde una fecha If-None-Match: Permite enviar código 304 No modificado (ETag) User-Agent: Identifica el tipo agente de usuario utilizado . . .
  22. 22. Respuestas HTTP Ejemplo HTTP/1.1 200 OK Date: Fri, 17 Nov 2006 15:36:32 GMT Server: Apache Last-Modified: Fri, 17 Nov 2006 09:05:32 GMT Content-length: 43305 Content-type: text/html <!DOCTYPE html> <html> … </html>
  23. 23. Cabeceras en la respuesta Content-type: Tipo MIME de la respuesta Cache-control: Especificar directivas para controlar la cache Content-encoding: Tipo de codificación utilizado en el mensaje Content-language: Idioma utilizado en el mensaje Content-length: Tamaño del mensaje Content-location: Localización alternativa de los datos devueltos Date: Fecha/hora de la respuesta ETag: Identificador de la versión de un recurso Expires: Fecha a partir de la cual el contenido puede eliminarse de la caché Server: Identifica el tipo de servidor Set-cookie: Activa una cookie en el cliente WWW-Authenticate: Indica el esquema de autentificación a utilizar . . .
  24. 24. URIs
  25. 25. Recursos Recurso = Unidad básica de la Web Cualquier cosa que se identifique con una URI URI ≠ Recurso ≠ Representación URI http://tiempo.com/Asturias/Oviedo Metadatos: Content-type: text/html Datos: <html> <head><title>Tiempo</title></head> <body> <h1>Tiempo en Oviedo</h1> <p>Nubes y claros</p> </body> </html> Representación Recurso Tiempo en Oviedo
  26. 26. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://www.uniovi.es <!DOCTYPE html> <html> <head> <title>Universidad de Oviedo</title> </head> <body> <h1>Universidad de Oviedo</h1> <p>Fundada en el año 1608 en <a href="http://www.wikipedia.org/Oviedo"> Oviedo</a></p> . . . </body> </html> identifica Ejemplo: Una página Web Una página Web Recurso de información Formato HTML
  27. 27. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://www.di.uniovi.es/~labra/images/asturias.jpg identifica Ejemplo: Una fotografía (recurso multimedia) Una fotografía Recurso de información Formato JPG
  28. 28. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://www.w3.org/People/Berners-Lee/card#i identifica Ejemplo: Una persona Una persona (Tim Berners-Lee) Recurso de no información
  29. 29. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://xmlns.com/foaf/0.1/Person identifica Ejemplo: Conjunto de todas las personas Conjunto de Personas (concepto abstracto) Recurso de no información
  30. 30. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://purl.org/dc/terms/creator identifica Ejemplo: Propiedad de creación Propiedad de creación (concepto abstracto) Recurso de no información
  31. 31. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://purl.org/dc/terms identifica Ejemplo: Espacio de nombres Espacio de nombres (concepto) Recurso de no información description language publisher . . .
  32. 32. Formato de una URI Más información: Especificación http://tools.ietf.org/html/rfc3986 esquema://autoridad camino ?consulta#fragmento http://ejemplo.com:8042 /libros/castellano?autor=Cervantes #capitulo2 Otros ejemplos de URIs: ftp://ftp.is.co.za/rfc/rfc1808.txt mailto:pepe@ejemplo.com telnet://192.0.2.16:80/ urn:oasis:names:specification:docbook:dtd:xml:4.1.2 Nota: Significado especial de espacios, ?, /, etc. Nota: las URNs identifican nombres únicos solamente. Sin protocolo
  33. 33. Partes de una URI Más información: Especificación http://tools.ietf.org/html/rfc3986 Nota: las URNs identifican nombres únicos solamente. Sin protocolo esquema autoridad //usuario@host:port path querystring fragment http http http ftp mailto urn //localhost:3000 //google.com //uniovi.es/ //ftp.is.co.za pepe@uni.es isbn:045125021 /about / /course/view.php /rdf/rfc1808.txt ?a=1&b=2 ?q=pepe ?id=4590 ?subject=Curso #historia http://localhost:3000/about?a=1&b=2#historia http://google.com/?q=pepe http://uniovi.es/course/view.php?id=4590 ftp://ftp.is.co.za/rdf/rfc1808.txt mailto:pepe@uni.es?subject=curso urn:isbn:045125021 Ejemplos
  34. 34. Dereferenciación Dereferenciar una URI = Acceder al contenido de una URI Obtener una representación del recurso identificado por la URI Habitualmente se utiliza protocolo HTTP Pueden existir diferentes representaciones La representación puede incluir enlaces a otras URIs con información relacionada Principio: Follow your nose (“Sigue tu instinto”) A partir de una URI, se puede ir encontrando más información y más recursos relacionados fácilmente y de casualidad (serendipia)
  35. 35. Estabilidad de las URIs URIs = pilar fundamental de cualquier aplicación Web Objetivo: Esquema de URIs estable Lema: Cool URIs don’t change Modificar una URI puede romper aplicaciones existentes Evitar URIs que dependen de detalles de implementación Ejemplo: http://156.35.41.34:8080/pagina.php Importancia de nombres adecuados para URIs http://www.w3.org/Provider/Style/URI
  36. 36. Formatos de Representación
  37. 37. Formatos de representación En la Web, el formato más habitual es HTML Existen muchos más formatos: XML, JSON, RDF, PNG, … Un recurso puede tener diferentes tipos de representación Cada tipo de representación sirve para un propósito
  38. 38. HTML Tipo de representación más popular en la Web Objetivo: representar hipertexto Ejemplo: <!DOCTYPE html> <html> <head> <title>Pedido</title> <meta charset="utf-8" /> </head> <body> <h1>Pedido</h1> <table> <tr><th>Código</th><th>Nombre</th><th>Cantidad</th><th>Comentarios</th></tr> <tr><td>R23</td><td>Rotulador RX2</td><td>20</td><td>Comprobad que escriben</td></tr> <tr><td>G56</td><td>Grapadora Lin</td><td>2</td><td>Envuelta para regalo</td></tr> </table> <p>Más información: <a href="http://empresa.com">Empresa</a> </body> </html>
  39. 39. XML Facilita intercambio de información Objetivo: procesamiento automático Comercio electrónico <?xml version="1.0"> <pedido> <producto codigo="R23"> <nombre>Rotulador RX2</nombre> <cantidad>20</cantidad> <comentarios>Comprobad que escriben</comentarios> </producto> <producto codigo="G56"> <nombre>Grapadora Lin</nombre> <cantidad>2</cantidad> <comentarios>Envuelta para regalo</comentarios> </producto> </pedido>
  40. 40. JSON Facilita intercambio de información Objetivo: procesamiento automático Servicios Web { "pedido": [ { "type": "producto", "codigo": "R23", "nombre": "Rotulador RX2", "cantidad": 20, "comentarios": "Comprobad que escriben" }, { "type": "producto", "codigo": "G56", "nombre": "Grapadora Lin", "cantidad": 2, "comentarios": "Envuelta para regalo" } ] }
  41. 41. RDF Permite integración de información Integración automática de los datos Objetivo: Evitar ambigüedad en cadenas de texto @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix schema: <http://schema.org/> . @prefix : <http://example.org/> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . :pedido a schema:Order ; schema:orderedItem [ :code "R23"; schema:name "Rotulador RX2"; rdfs:comment "Comprobad que escriben"; schema:orderQuantity 20 ] ; schema:orderedItem [ :code "G56"; schema:name "Grapadora Lin"; rdfs:comment "Envuelta para regalo"; schema:orderQuantity 2 ] .
  42. 42. Tipos de representación Los tipos de representación se identifican con MIME MIME (Multipurpose Internet Mail Extensions) Identificar el tipo de contenido (Cabecera Content-type) Formato tipo/subtipo Ejemplos: text/html: Página Web en formato HTML text/xml, application/xml : Documento XML application/json: Documento JSON application/pdf: Fichero PDF image/jpeg: Imagen JPEG application/xhtml+xml: Documento XHTML application/rdf+xml: Documento RDF text/turtle: Documento Turtle . . . Lista oficial: http://www.iana.org/assignments/media-types
  43. 43. Funcionamiento de la Web 2 computadores conceptuales: Cliente y Servidor La representación puede calcularse dinámicamente Computación en Cliente Computación en servidor Usuario Navegador Cliente Servidor URI Representación WWW HTTP
  44. 44. Cliente También se conoce como Agente de Usuario Normalmente es un navegador (browser) Múltiples tipos de agentes de usuarios y navegadores Navegadores: Internet Explorer, Chrome, Firefox, Lynx, … Dispositivos móviles Lectores de pantalla eBooks TVs …
  45. 45. Componentes de un navegador Interfaz Analizador Motor visualización Intérprete ECMAScript procesa eventos y modifica árbol Usuario Navegador Cliente URI Representación WWW HTTP Analizador Árbol DOM Motor VisualizaciónInterfaz Usuario Intérprete ECMAscript URI
  46. 46. Componentes de un Servidor La arquitectura del servidor depende de muchos factores Descomposición habitual Vista: Se encarga de preparar la representación Negocio: Gestión de objetos de negocio Datos: Modelos de datos Capa Vista Capa Negocio URI Capa Datos Representación URI WWW HTTP
  47. 47. Computación en Servidor Contenido es generado dinámicamente 1. Llega la petición al servidor 2. El servidor analiza parámetros de petición Verbo (GET, PUT, POST, ...), Ruta (URI), Cabeceras, Entorno 3. Servidor "computa" y envía una respuesta Usuario Navegador Cliente Servidor URI Representación WWW HTTP Petición Respuesta Método URI Headers Environment
  48. 48. Múltiples alternativas CGIs Lenguajes específicos para Web: PHP Lenguajes dinámicos: Perl, Python, Ruby,... Javascript en servidor: Nodejs Lenguajes generales compilados JVM: Java (JSP, Servlets,...), Scala, Groovy CLR: C# (ASP.Net), F#, ... Otros: Frameworks, CMS, etc.
  49. 49. CGI CGI (Common Gateway Interface), 1.1 (2004) Método estándar para transmitir parámetros entre servidor y programas ejecutables Nombres de variables SERVER_NAME, SERVER_SOFTWARE, GATEWAT_INTERFACE SERVER_PROTOCOL, REQUEST_METHOD, QUERY_STRING, ... Los programas CGIs son ejecutados por el servidor Devuelve la respuesta de la ejecución Otras variantes: FastCGI (optimiza creación de procesos)
  50. 50. PHP Lenguaje interpretado por el servidor El código se incrusta en HTML mediante marcas especiales Cuando el servidor reconoce código PHP: Llama al intérprete Ejecuta el código Devuelve el resultado Según w3techs, el 81.1% de los sitios Web utiliza PHP
  51. 51. Lenguajes dinámicos Python, Ruby Lenguajes interpretados de propósito general Buenos frameworks y librerías para Web Ruby: Ruby on Rails Python: Django ...
  52. 52. Javascript lado servidor Librería Node.js Incluye V8, el motor Javascript de Google Permite utilizar Javascript en el servidor Entrada/Salida basada en eventos Creciendo en popularidad
  53. 53. Lenguajes generales compilados 2 ecosistemas Java (JVM) .Net (CLR)
  54. 54. JVM Máquina virtual de Java Empotrado: JSP Servlets y Contenedores de aplicaciones TOMCAT Otros lenguajes sobre JVM Scala, Groovy, ... Programación políglota!
  55. 55. ASP.Net Basado en CLR Máquina virtual de C# ASP Permite empotrar lenguaje en HTML Extensión aspx <% .... código %> Diversos frameworks: ASP.Net MVX Otras lenguajes: VB.Net, F#,...
  56. 56. Web Frameworks Micro-frameworks Basados en protocol HTTP Enrutan verbos HTTP (GET, PUT, POST, DELETE) con acciones MVC based Abstracción del modelo de la Web Separación: Modelo, Vista, Controlador Pueden utilizar ORMs
  57. 57. Micro-frameworks PHP: Slim, Silex Ruby: Sinatra Python: Flask Java: Spark, Scala: Scalatra
  58. 58. Frameworks Web Numerosos frameworks PHP: CakePHP, Zend, Symfony Ruby: Ruby on Rails Python: Django, Zope Java: Spring MVC, Play Scala: Play, Lift Groovy: Grails Haskell: Yesod Más información: http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
  59. 59. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra Referencias
  60. 60. Jose Emilio Labra Gayo – http://www.di.uniovi.es/~labra Fin

×