WebDAV Por Ignacio Armenteros y Javier Sevilla
Índice Qué es WebDAV? Orígenes de WebDAV Qué aporta? Por qué es interesante, nuevo? Usos de WebDAV Metodos de WebDAV Propiedades de Webdav Rendimiento Futuro de WebDAV Clientes/Servidores WebDAV Proyectos de código abierto sobre WebDAV
Que es webdav? (1 de 2) Web-based Distributed Authoring and Versioning Define Extensiones de HTTP necesarias para proporcionar herramientas que permitan realizar trabajo distribuido a traves de web Protocolo interoperable, remoto y asíncrono para hacer trabajo colaborativo Proporciona un conjunto de métodos, cabeceras headers,formatos de petición de entidades (request entity body formats) para proveer operaciones como:
Que es webdav? (2 de 2) Propiedades (properties): Capacidad para crear borrar y conseguir información sobre paginas web como autores, fechas de creación, modificación... Collecciones (collections): Capacidad para crear conjuntos de documentos de forma jerárquica y recuperarlos con facilidad Cerrojos (Locking): Capacidad para que varias personas trabajen a la vez en el mismo documento al mismo tiempo, manteniendo la integridad (guardando los cambios sin mezclar los cambios de otros autores).
Orígenes de Webdav (1 de 3) El Protocolo HTTP es utilizado básicamente solo para lectura Gran cantidad de grupos de trabajo distanciados físicamente: utilización de e-mail para hacer trabajo colaborativo Proyectos distanciados geográficamente, sobre todo de ingeniería, con códigos fuente que cambian, revisiones que no son necesariamente bien organizadas
Orígenes de Webdav (2 de 3) Mucho mejor sería que las modificaciones fueran visibles al momento Grupo de trabajo de: Internet Engineering Task Force (IETF) definición del protocolo en el rfc 2518 (Feb 1999)
Orígenes de Webdav (3 de 3) La implementación de sistemas authoring & collaborating sobre HTTP como Prep Grove y Duplex indicaban que se necesitaba mas funcionalidad para dar un servicio eficiente además necesitaban que se usara la misma aplicación.
Qué aporta? Por qué es interesante, nuevo? Namespace management (Collections) Infraestructura para organización y manejo remoto de recursos Availability of metadata (Properties) Infraestructura para guardar información sobre recursos web Locking of resources Permite de forma remota trabajo colaborativo sobre cualquier formato de datos (html, imágenes, presentaciones, fotografias ) Versioning of resources Infrastructura para versiones de documentos
Usos de webdav Sistema de ficheros en red = Todo internet Trabajo colaborativo Hace la web escribible y actualizable por múltiples personas de forma sencilla
Métodos de Webdav HTTP Options Get Post Put Head Delete Trace Connect WebDAV (additional methods) PropFind (leer propiedades) PropPatch (escribir props.) MkCol (crear collección de recursos) Delete for collections Put for collections Copy Move (copy + delete) Lock, Unlock (abrir/cerrar) cerrojos Body == XML
Alcance de los métodos webdav LOCK UNLOCK COPY MOVE DELETE MKCOL (PUT ) Web Resource Properties (name, value) pairs Body (primary state) PROPFIND PROPPATCH GET PUT - affected by LOCK
Client File Open Edit File Save Exit Ejemplo de Uso LOCK PROPFIND GET PUT UNLOCK Server Lock resource Send properties to client Send resource contents to client Save new contents Unlock resource Una aplicación que soporte webdav selecciona abrir fichero, usa un cerrojo (LOCK) para prevenir que otra lo modifique, después mediante PROPFIND recupera las propiedades y con HTTP GET el archivo y lo muestra,por ultimo al acabar los cambios mediante HTTP PUT guarda los cambios y con Webdav UNLOCK abre el cerrojo permitiendo a los demás colaboradores acceder al recurso
Propiedades de Webdav 1 over-write prevention 2 properties 3 HTTP Headers for Distributed Authoring 4 Version management 5 Advanced collections 6 Access control. 7 Status Code Extensions to HTTP/1.1
Propiedades 1: over-write prevention Crucial en entornos colaborativos, previene de sobreescrituras indeseadas entre clientes a través de cerrojos Estos cerrojos pueden ser jerárquicos, únicos o compartidos, además son asíncronos (no necesitan conexión) y tienen capacidades de timeouts y notificación; Si son compartidos la responsabilidad recae en los compartidores del recurso
Propiedades 1: over-write prevention Simple Lock Request >>Request LOCK /workspace/webdav/proposal.doc HTTP/1.1 Host: webdav.sb.aol.com Timeout: Infinite, Second- 4100000000 Content-Type: text/xml; charset="utf-8 Content-Length: xxxx uri="/workspace/webdav/proposal.doc", <?xml version="1.0" encoding="utf-8"?> <D:lockinfo xmlns:d='dav:'> <D:lockscope><D:exclusive/></D:lockscope> <D:locktype><D:write/></D:locktype> <D:owner> <D:href>http://www.ics.uci.edu/~ejw/contact.html</D:HREF> </D:owner> </D:lockinfo>
Propiedades 1: over-write prevention HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8 Content-Length: xxxx <?xml version="1.0" encoding="utf-8"?> <D:prop xmlns:d="dav:"> <D:lockdiscovery> <D:activelock> <D:locktype><D:write/></D:locktype> <D:lockscope><D:exclusive/></D:lockscope> <D:depth>Infinity</D:depth> <D:owner> <D:href> http://www.ics.uci.edu/~ejw/contact.html </D:href> </D:owner> <D:timeout>Second-604800</D:timeout> <D:locktoken> <D:href> opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4 </D:href> </D:locktoken> </D:activelock></D:lockdiscovery></D:prop>
Propiedades 2: properties Información sobre el contenido de la web Campos:Parejas Name/Value - Name: una direccion URL (sin restricciones) - Value: secuencia bien formada de XML Permite encapsular cualquier formato de datos y reconoce las codificaciones utf-8 y utf-16 Además las propiedades pueden ser vivas (en ese caso el servidor chequea su sintaxis) o muertas en las que el cliente tiene toda la responsabilidad de la integridad de los datos
Propiedades 2: properties Ejemplo PROPPATCH (Request) PROPPATCH /bar.html HTTP/1.1 Host: www.foo.com Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8"?> <D:propertyupdate xmlns:d="dav: xmlns:z="http://www.w3.com/standards/z39.50/"> <D:set> <D:prop> <Z:authors> <Z:Author>Jim Whitehead</Z:Author> <Z:Author>Roy Fielding</Z:Author> </Z:authors> </D:prop> </D:set> <D:remove> <D:prop><Z:Copyright-Owner/></D:prop> </D:remove> </D:propertyupdate>
Propiedades 2: properties >>Response HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8 Content-Length: xxxx <?xml version="1.0" encoding="utf-8"?> <D:multistatus xmlns:d="dav: xmlns:z="http://www.w3.com/standards/z39.50"> <D:response> <D:href>http://www.foo.com/bar.html</D:href> <D:propstat> <D:prop><Z:Authors/></D:prop> <D:status>HTTP/1.1 424 Failed Dependency</D:status> <D:prop><Z:Copyright-Owner/></D:prop> <D:status>HTTP/1.1 409 Conflict</D:status> </D:propstat> <D:responsedescription> Copyright Owner can not altered. </D:responsedescription> </D:response> </D:multistatus>
Propiedades 3: HTTP Headers for Distributed Authoring DAV Header (soporta dav, oblig. en toda respuesta) Depth Header (0=recurso,1=recurso e hijos,2=descendientes) Destination Header (recurso al que se dirigen la orden) If Header (para comprobar estados ej locks) No-tag-list Production (para listas no etiquetadas) Tagged-list Production (para listas etiquetadas) Lock-Token Header (indica que vien un token de cerrojo) Overwrite Header (sobreescribir, se usara con copy o move) Status-URI Response Header (para saber el estatus de un recurso) Timeout Request Header (indica tiempo de validez)
Propiedades 4: Version Management Soporta el almacenamiento de revisiones de documentos importantes de forma automatizada. También permite colaboración permitiendo a varios autores trabajar en el mismo documento en trabajos paralelos, guardando las sucesivas modificaciones de forma automática (pero separada en cada cliente). Si se quiere trabajar sobre la misma versión hay que hacerlo con el mecanismo de cerrojos
Propiedades 4: Version Management El grupo de trabajo DeltaV produjo como resultado de su estudio sobre el sistema de versiones de webdav el (RFC 3253) en Marzo 2002 En el se especifican los nuevos comandos, que son principalmente: CHECKIN, actualiza la version CHECKOUT, obtiene la ultima version También se especifica la estructura que deben mantener el registro de versiones
+---+ Root Version -------> V1 +---+ ^ +---+ Version Name ----> V2 Ancestor +---+ / \ / \ +---+ +---+ V3 V4 ^ +---+ +---+ Predecessor +---+ +---+ V5 V6 Descendant +---+ +---+ Successor \ / \ / v +---+ v V7 +---+
===checkout==> ===PUT==> ===checkin==> /foo.html (version-controlled resource) +----+ +----+ +----+ +----+ S2 S2 S3 S3 +----+ +----+ +----+ +----+ Checked-In=V2 Checked-Out=V2 Checked-Out=V2 Checked-In=V3 /his/73 (version history for /foo.html) +----+ +----+ +----+ +----+ S1 V1 S1 V1 S1 V1 S1 V1 +----+ +----+ +----+ +----+ +----+ +----+ +----+ +----+ S2 V2 S2 V2 S2 V2 S2 V2 +----+ +----+ +----+ +----+ +----+ S3 V3 +----+
Propiedades 5: Advanced Collection Soporte para conjuntos de recursos que contengan miembros referenciados u ordenados por el cliente. Es decir soporte para metadatos (se puede encapsular cualquier tipo de dato para poder proveerlo a través del protocolo webdav) Además se provee un mecanismo de jerarquización de las colecciones, En cuanto a miembros referenciados como enlaces simbólicos (simbolic links) de un sistema de ficheros permite ser reusado en diferentes ficheros Un ejemplo de collection podria ser un libro con su autor, edicion tema etc. definido por el cliente,
Propiedades 6: Access Control Access control: Limita los permisos de acceso para un cliente autentificado para un recurso concreto (por ejemplo puedes dar permisos para un usuarios a las fotos de una web pero no para los textos) WebDAV asume que todas las aplicaciones que utilicen Webdav soportan el protocolo de autentificacion HTTP Digest
Propiedades 7:Status Code Extensions to HTTP/1.1 Codigos de error ampliados respecto al http 1.1 102 Processing 207 Multi-Status (varios codigos XML a la vez) 422 Unprocessable Entity 423 Locked 424 Failed Dependency 507 Insufficient Storage
Rendimiento No se consigue gran rendimiento este protocolo no fue diseñado con objetivos de eficiencia, respeto a sistemas como NFS o AFS, pero en sucesivas implementaciones ira mejorando, sobre todo si se integra en el sistema operativo
Rendimiento 200 Kbyte open seek & close as single session; Webdav session took about double to triple amount of time With other 16 test time took 3 to 1000 times longer than the other distributed file systems (NFS, AFS) Pruebas realizadas por Harry Wang May, 28 th, 2002 Further Information www.harrywang.com/projects.ht ml
Futuro de Webdav Es un protocolo extensible, de hecho la parte de versioning no esta implementado (rfc 3253) Posible explosion de usuarios y servidores debido al apoyo de empresas como Microsoft, Adobe, Macromedia Integracion en los futuros sistemas operativos
Clientes Webdav Application Software: Microsoft: Office 2000/XP (Word, Excel, PowerPoint, Publisher) Adobe: Photoshop 6, Acrobat 5 XML editors Excosoft: Documentor Altova: XML Spy 3.5 Web Site Authoring Adobe: Go Live 5 Macromedia: Dreamweaver 4 Remote File Access: Apple: Mac OS X webdavfs & idisk OS X also ships with Apache and mod_dav (have to configure mod_dav to make it work) Microsoft: Windows Web Folders Goliath (Mac, open source) Nautilus (GNOME project, Eazel)
Servidores Webdav Microsoft: IIS 5/6, Exchange 2000, Sharepoint Apache: mod_dav (over 10,000 sites) Oracle: Internet File System Adobe: InScope Xythos: Web File Server Novell: Netware 5.1, Net Publisher W3C: Jigsaw Endeavors: Magi-DAV IBM: DAV4J (DeveloperWorks) DataChannel: DataChannel Server (DCS 4.1) Intraspect: 4i
Ejemplo de uso (2)
Proyectos de codigo abierto sobre webdav Al ser un protocolo abierto ademós de soluciones propietarias hay multitud de proyectos en desarrollo mod_dav: a DAV module for Apache. sitecopy: a tool for copying web sites from a local system up to a web server. cadaver: similar to a command-line FTP tool, this tool provides for easy, direct interaction with a DAV server. Goliath: a DAV client application and a DAV library for the MacOS operating system. 5 Otros...
Preguntas?