C++ Web Server: Concept #1

1차분 Concept

  1. J2EE에서 등장했던 Filter개념으로 모든 플러그인들을 해결한다.
  2. Filter들의 Chain이 기본이다. Chain의 끝에는 Static 파일 Service가 들어간다.
  3. 각각의 Filter들은 Request와 결합하여 하나의 Task를 생성한다
  4. 특정 Request에 연관된 Task들은 Task Chain이라고 부른다.
  5. Task Chain은 내포한 Task들이 종료될때마다 다른 쓰레드로 이동이 가능해야 한다.
  6. Network IO는 전담 Multiplexer쓰레드에서 처리한다
  7. 스크립트 확장은 특정 스크립트 파일을 Filter로 만들어주는 ScriptingEngine에서 처리하도록 한다.
  8. Request/Response의 Body부분은 std::iostream의 shared_ptr로 관리한다

2차분

  1. Filter는 Request Filtering과 Response Creation을 담당하는 process_request operation과 Response Filtering을 담당하는 filt_response operation 으로 이루어진다.
  2. response::shared_type process_request(request::shared_type)
  3. void filt_response(response::shared_type)
  4. process_request에서 response를 생성하고 나면, 그때부터 filt_response를 process_request를 실행한 역순으로 실행한다. 즉, Stack이란 이야기
  5. 웹서버 쪽에서는 Mime parsing(폼변수 분석)에 대한 책임을 지지 않는다. HTTP Header까지만 책임을 지고 그 뒤는 각 모듈에게 맡긴다. (이래야 대용량 전송시 커스터마이징이 쉬워진다.)
  6. Mime Parsing에 대한 책임을 지지 않는 대신에 Mime Parsing을 위한 라이브러리를 별도로 제공한다. ScriptingEngine에서 이를 활용할 것인지는 별도로 고려한다.

글쓴이: crowmania

Chief Developer in Somansa Guitar/Vocal in Tonics Member of Justice Party

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다