WebDAV와 공동작업

WebDAV와 공동작업

목차


  • 웹 분산 저작과 버저닝 Web Distributed Authoring and Versioning, WebDAV
  • WebDAV는 웹 배포 공동 작업에 대한 또 다른 영역을 개척했다.
    • 현재 공동작업으로 svn, git이 널리 쓰이고 있다
  • WebDAV은 공동 저작에 적합한 플랫폼을 제공하려고 HTTP를 확장하는 데 집중하였다.

1. WebDAV와 XML

  • WebDAV의 메서드는 요청과 응답 관련 정보를 모두 잘 다루어야 한다.
  • HTTP는 보통 이 정보를 메세지 헤더에 담아 전달한다.
    • 헤더에만 정보를 담아 전송하는 것은 한계가 있다.
    • WebDAV는 이를 해결하기 위해 XML을 지원한다.
  • XML은 구조화된 데이터를 표현할 때 사용하는 포맷. 메타 마크업 언어다.
  • 다음과 같은 용도로 사용한다.
    1. 데이터를 어떻게 처리할 것인지 설명하는 명령 포맷
    2. 서버의 복잡한 응답을 표현하는 데 사용하는 포맷
    3. 콜렉션과 리소스를 처리하는 데 사용하는 커스텀 정보 포맷
    4. 데이터 자체를 표현할 수 있는 유연한 포맷
    5. 대부분의 국제화 관련 문제에 대한 훌륭한 해결책
  • WebDAV는 DAV.라는 별도의 XML namespace를 정의한다.
    • 요소나 속성 이름의 집합
    • 이미 정의된 스키마는,
      구문 분석 소프트웨어가 DTD 파일을 읽고 그것들을 정확히 해석할 필요 없이,
      XML 스키마에서 데이터를 추정할 수 있게 한다.

2. WebDAV 헤더

  • DAV
    • WebDAV를 제공하는 서버와 통신할 때 사용.
    • WebDAV에서 지원하는 모든 리소스는 OPTIONS 요청에 대한 응답에 이 헤더를 포함해야 한다.
  • Depth
  • Destination : COPY나 MOVE 메서드가 목적지 URI를 식별하는데 쓰인다.
  • If: 조건집합을 정의한다. 조건들에 모두 많지 않으면 요청은 실패.
  • Lock-Token: UNLOCK 메서드에서 사용한다.
  • Overwrite: 대상을 덮어쓸 것인지 아닌지 기술한다.
  • Timeout

3. WebDAV 메서드

3.1 WebDAV 잠금과 덮어쓰기 방지

  • 공동 작업과 관련한 문제들

  • WebDAV는 이 문제를 개선하기 위해 잠금이라는 개념을 지원한다.

  • 잠금이 완벽한 해결책은 아니다.

    • 완벽한 해결을 위해서는
      버저닝와 메세징을 지원해야 한다.
  • WebDAV는 2가지 형식의 잠금을 지원한다.

    1. 리소스나 콜렉션에 대한 배타적 쓰기 잠금
    2. 리소스나 콜렉션에 대한 공유된 쓰기 잠금

1. 리소스나 콜렉션에 대한 배타적 쓰기 잠금

  • 잠금 소유자만 쓸 수 있게 보장한다.
    • 이 잠금 형식은 잠재적인 충돌을 완벽히 제거한다.
    • 공유된 쓰기 잠금은
      여러 사람으로 이루어져 있는 그룹이
      하나의 문서에 작업할 수 있게 한다.
    • 이 잠금 형식은 모든 저자가 각각 서로의 활동을 인식하고 있는 상황에서는 잘 동작한다.
  • WebDAV는 잠금과 관련한 메서드로 LOCK, UNLOCK을 제공한다.
    1. 잠금을 수행하려면, 저자를 식별하는 메커니즘이 필요한다.
      => WebDAV는 다이제스트 인증을 요구한다.
    2. 잠금이 승인되면, 서버는 도메인 전체에서 유일한 토큰을 클라에 반환한다.
      : opaquelocktoken 잠금 토큰 URI 스킴
    3. 그 이후에 클라가 서버에 쓰기를 보내고자 할때, 서버에 연결하고 다이제스트 인증을 수행한다.
      • 인증이 완료되면 WebDAV 클라는 PUT 요청을 통해 잠금 토큰을 보낸다.


참고자료
RFC 4918

📚