19장 배포 시스템
1. WebDav
- 웹 분산 저작과 버저닝(Web Distributed Authoring and Versioning)
- 공동 저작에 적합한 플랫폼을 제공하려고 HTTP를 확장하는데 집중한다.
2. WebDav와 공동저작
2.1 WebDav와 XML
- WebDav의 메서드는 요청과 응답 관련 정보를 모두 잘 다루어야함
- WebDav는 여러개의 리소스나 계층 관계에 있는 리소스들에 대해 정보를 선택적으로 헤더에 기술하기 위해서 XML포맷을 지원한다.
2.2 WebDav헤더
- WebDav는 새로운 메서드들의 기능을 넓혀주는 여러 HTTP메서드를 도입했다
- 모든 리소스는 OPTIONS 요청에 대한 응답에 이 헤더를 포함해야한다.
- Depth는 계층 구조로 분류된 리소스 사용에 용이하다.
- Destination은 COPY나 MOVE 메서드가 목적지 URI를 식별하는데 사용한다.
2.3 WebDav 잠금과 덮어쓰기 방지
- WebDav는 잠금이라는 개념을 지원한다
- 잠금은 완벽하지 않으므로 버저닝과 메시징을 지원해야한다
- 잠금을 수행하기 위해서는 다이제스트 인증을 요구한다
2.4 속성과 META 데이터
- 속성에는 저작자의 이름, 수정한 날자, 내용 등급 등 리소스의 정보를 기술한다.
- 속성의 발견과 수정을 지원하기 위해, WebDav는 PROFIND와 PROPPATCH라는 새로운 메소드를 추가한다.
2.5 콜렉션과 이름공간 관리
- 콜렉션은 리소들의 논리적 혹은 물리적 그룹이다.
- 파일시스템의 디렉터리 같이 다른 리소스들의 컨테이너처럼 동작한다.
- WebDav는 XML 이름 공간 메커니즘을 사용한다.
- 이름공간 파티션들은 충돌이 생기지 않고 명확한 구조적 제어기능을 제공한다.
2.6 MKCOL 메서드
- 클라이언트가 지정된 URL에 해당하는 콜렉션을 서버에 생성하게 한다.
- WebDav 프로토콜은 새로운 메서드를 정의하는 방식을 사용한다.
2.7 DELETE 메서드
- 디렉터리를 지우기 위해서는 Depth 헤더를 필요로한다.
- Depth가 없다면, DELETE 메서드는 Depth 헤더가 무한으로 설정되어 있다고 가정한다.
- 디렉터리와 그 하위에 있는 모든 디렉터리가 지워진다.
2.8 COPY와 MOVE 메서드
- COPY 메서드는 리소스에 GET 요청을 보내고, 리소스를 다운 받은 다음, PUT 요청과 함께 서버에 리소스를 다시 올리는 것이다.
- MOVE는 DELETE메소드를 포함한 COPY와 비슷하게 동작한다.
- MOVE 메서드는 원본지 URL을 목적지에 복사하고, 새로 생성된 URI의 무결성을 검사하고, 원본을 지운다.