WebDAV je zkratkou pro distribuované autorizování a vytváření verzí (Web Distributed Authoring and Versioning). Paradoxem ovšem je, že RFC dokument popisující tento standard neříká o verzích ani slovo. Teprve několik let po uvolnění finální verze WebDAVu (v březnu 2002) byl publikován i standard doplňující WebDAV o podporu verzí. Tato technologie se nazývá DeltaV (The Web Versioning and Configuration Management). Stejně jako WebDAV i DeltaV používá XML dokumenty a protokol HTTP.

K čemu tedy DeltaV slouží? Jednoduše k tomu, aby bylo možné uchovávat různé verze dokumentů, které jsou dostupné prostřednictvím WebDAVu. Toho lze využít například pro vytváření PHP skriptů, kde nám systém umožní vrátit se ve vývoji k předchozí verzi nebo vytvořit výsledný skript spojením dvou předcházejících verzí. DeltaV kromě standardní jedné větve vývoje (tzn. předek má vždy jen jednoho následníka – lineární verze) umožňuje i vícevětvé (nelineární) spravování verzí.

V porovnání s technologií DASL je DeltaV mnohem rozsáhlejší. Kromě mnoha nových XML elementů pro popis verzí, souborů a kolekcí, zavádí také celkem jedenáct nových HTTP metod, které je možno v komunikaci se serverem použít.

Rozsah funkčnosti správy je velmi široký, a proto je ve standardu DeltaV rozdělen do dvou částí (modelů). První, základní model popisuje, jaké funkce by měl podporovat server umožňující jednoduchou správu verzí. Následující seznam zahrnuje funkce základního modelu:

  • lineární verze (jedna větev verzí)
  • získání přehledu o vývoji verzí (metoda REPORT)
  • zařazení zdroje do správy verzí (metoda VERSION-CONTROL)
  • vytvoření nové verze
  • kontrola, zda je zdroj již zařazen do správy verzí
  • možnost automatické tvorby verzí
  • update aktuální verze z verze předcházející (metoda UPDATE)
  • pojmenování verzí (metoda LABEL)
  • vytváření pracovních ploch (workspaces)

Rozšířený model je obohacen o některé další funkce, které souvisejí se správou verzí. Jedná se například o správu více větví verzí (nelineární verze), vytváření aktivit, konfigurací a podobně.

Jelikož je standard DeltaV velice rozsáhlý (RFC dokument má 118 stran), přiblížíme si pouze základní principy, přičemž se zaměříme na vlastnosti základního modelu podpory DeltaV a na základní postupy při správě verzí.

Zavedení správy verzí

Pokud se rozhodneme vytvořit verzi z nového dokumentu (HTML stránky, souboru Wordu, PHP skriptu, zdrojového kódu), musíme zdroj nejdříve zařadit do seznamu spravovaných souborů. To provedeme jednoduše odesláním HTTP metody VERSION-CONTROL.

>>DOTAZ
VERSION-CONTROL /neco.html HTTP/1.1
Host: www.nekde.com
Content-Length: 0
>>ODPOVĚĎ
HTTP/1.1 200 OK

Po odeslání této metody server vytvoří nový objekt, který bude reprezentovat historii verzí daného zdroje. (Zde záleží na způsobu ukládání verzí. Pokud by server využíval databázi, pak je například vytvořen nový záznam v příslušné tabulce. Pokud server využívá pouze zápisu na disk, pak vytvoří nový adresář.) Česky řečeno – vytvoří se adresář, kam budou ukládány veškeré nově vytvořené verze. Současně se vytvoří primární verze (root version), kde jakákoli další verze bude potomkem této primární verze. V posledním kroku přidá server danému zdroji novou vlastnost DAV:checked-in (opět jsou všechny vlastnosti definovány v jmenném prostoru DAV:), která identifikuje zdroj zařazený do správy verzí.

Vytvoření nové verze

Předpokládejme, že jsme soubor neco.html upravili a chceme vytvořit novou verzi. Nastane problém, protože soubor, který je serverem spravován, není možné upravit. Jak metoda PUT (uložení souboru prostřednictvím HTTP protokolu), tak metoda PROPPATCH (úprava vlastností souboru viz WebDAV – práce s vlastnostmi) v tomto případě selžou.

Musíme použít metodu CHECKOUT, která odstraní ze souboru vlastnost DAV:checked-in a umožní tak změnu jeho vlastností i obsahu. Jednoduchý příkaz serveru na dočasné odstranění zdroje ze správy verzí by mohl vypadat následovně:

>>DOTAZ
CHECKOUT /neco.html HTTP/1.1
Host: www.nekde.com
Content-Length: 0
>>ODPOVĚĎ
HTTP/1.1 200 OK
Cache-Control: no-cache

Nyní můžeme použít metodu PUT a aktualizovat soubor neco.html. Tím sice získáme aktualizovaný soubor, ale ještě nebyla vytvořena nová verze. Vytvoření nové verze provedeme odesláním metody CHECKIN, která opětovně zařadí zdroj do seznamu spravovaných zdrojů a vytvoří k němu novou verzi (tzn. zkopíruje zdroj do adresáře obsahující historii verzí):

>>DOTAZ
CHECKIN /neco.html HTTP/1.1
Host: www.nekde.com
Content-Length: 0
>>ODPOVĚĎ
HTTP/1.1 201 Created
Location: http://archiv.nekde.com/tov/23/ver/20
Cache-Control: no-cache

Názvy verzí

Při vytváření jednotlivých verzí jsou k souborům serverem připojovány i názvy verzí. Tyto názvy, které tvoří hodnotu vlastnosti (elementu) DAV:version-name, však klient nemůže ovlivnit a slouží pouze pro účely serveru (tzn. rozpoznání jednotlivých verzí v historii).

Aby mohl uživatel dát jednotlivým verzím různé názvy nebo je mohl popřípadě dále modifikovat, musí využít HTTP metody LABEL a explicitně zadat název verze. Přejmenování aktuální verze souboru neco.html by mohlo vypadat následujícím způsobem:

>>DOTAZ
LABEL /neco.html HTTP/1.1
Host: www.nekde.com
Content-type: text/xml; charset=“utf-8″
Content-Length: xxxx
<?xml version=“1.0″ encoding=“utf-8″ ?>
<D:label xmlns:D=“DAV:“>
   <D:set>
      <!– Oznaceni aktualni verze za beta verzi –>
      <D:label-name>beta_verze</D:label-name>
   </D:set>
</D:label>
>>ODPOVĚĎ
HTTP/1.1 200 OK
Cache-Control: no-cache

Další vlastnosti

Každý software pro správu verzí (například CVS nebo RCS) musí umožňovat náhradu aktuální verze některou z předcházejících verzí. Ani DeltaV není v tomto výjimkou. K aktualizaci slouží HTTP metoda UPDATE. V připojeném XML dokumentu je nutné specifikovat URI adresu verze, která má nahradit aktuální verzi. (Pro získání všech verzí jedním dotazem slouží metoda REPORT, přičemž připojený XML dokument specifikuje, jaké informace má server v XML dokumentu vrátit.)

Dalšími funkcemi, které jsme nezmínili, jsou metody a XML elementy, které se týkají:

  • vytváření pracovních ploch (workspaces), které umožňují spolupracovat více uživatelům na stejných souborech, přičemž každý uživatel vytváří verze odděleně od ostatních
  • automatické vytváření verzí
  • vytváření aktivit

Aplikace

Existují specializované servery pro podniky (například Tamino Server), které se specializují na správu dokumentů a pro přístup k dokumentům používají WebDAV spolu s technologií DASL a DeltaV. Ovšem počet těchto serverů je relativně malý.

Z oblasti open source projektů bych rád zmínil dva projekty. Prvním je projekt Catacomb, který kromě podpory DASLu podporuje i lineární verze pomocí DeltaV. Projekt Catacomb je modul pro webový server Apache. Druhým projektem, který se zaměřuje pouze na DeltaV, je Subversion. Cílem tohoto projektu je vytvořit konkurenci k CVS. Aktuální verze má sice teprve číslo 0.25, ale její použitelnost dokazuje, že systém Subversion hostí mimo jiné také sám sebe.

Závěr

Na závěr bych ještě jednou rád připomněl, že jsme nezmínili všechny vlastnosti DeltaV. Jejich opravdu hodně a jejich použití je relativně náročné, což platí obzvlášť pro rozšířený model DeltaV.

Všechny tři technologie (WebDAV, DASL a DeltaV) společně umožňují vytvořit systém pro správu obsahu (Content Management), přičemž jsou založeny na otevřených a všeobecně přijímaných standardech (HTTP a XML), čímž lze výrazně snížit náklady na tvorbu takového systému.

Odkazy, zdroje

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět