소개 ==== :: +--------------------+ | Clients | +--------------------+ | +--------------------+ | Netty | +--------------------+ | Xitrum | | +----------------+ | | | HTTP(S) Server | | | |----------------| | | | Web framework | | <- Akka, Hazelcast -> Other instances | +----------------+ | +--------------------+ | Your app | +--------------------+ Xitrum은 `Netty `_ 와 `Akka `_ 를 기반으로 구축된 비동기적으로 확장 가능한 HTTP(S) Web 프레임웍입니다. Xitrum `사용자 `_ 로 부터: 이것은 정말 인상적인 작품으로 아마도 Lift를 제외하고 가장 완벽한(그리고 아주 쉬운) Scala 프레임웍 입니다. `Xitrum `_ 은 Web 프레임웍의 기본 기능을 모두 충족하는 풀 스택의 Web 프레임웍입니다. 정말 다행스러운건 ETags, 정적 파일 캐쉬, 자동 gzip 압축, 내장된 JSON 변환기, 인터셉터, 리퀘스트, 세션, 쿠키, 플래시 스코프, 서버와 클라이언트의 통합 검증, 내장된 캐쉬 (`Hazelcast `_) 그리고 Netty가 내장된 기능을 바로 사용할 수 있습니다. 와우 기능 ---- * Scala 사상에 기초한 Type-Safe. 모든 API는 Type-Safe하도록 디자인되어 있습니다. * Netty 사상에 기초한 비동기처리. 요청의 처리결과에 대한 액션을 곧바로 반환할 필요가 없습니다. Long polling, chunked response (스트리밍), WebSocket, SockJS을 지원합니다. * `Netty `_ 에 내장된 고속 HTTP(S) 서버. (HTTPS는Java엔진과 OpenSSL을 선택할 수 있습니다) Xitrum의 정적파일 전송속도는 `Nginx `_ 와 비슷합니다. * 빠른 응답을 위한 광범위한 서버와 클라이언트 캐쉬. 웹 서버 측 에서는 작은 파일은 메모리에 캐쉬되고 큰 파일은 NIO의 zero copy를 사용하여 전송됩니다. 웹 프레임웍 측에서는 Rails스타일 처럼 page, action, object cache를 사용합니다. `All Google's best practices `_ 에 있는것 처럼, 조건적으로 GET 에대해 클라이언트측 Cache가 적용됩니다. 물론 브라우저에 강제로 요청 및 재전송을 할 수 있습니다. * 정적 파일에 대한 `Range requests `_ 지원. 이 기능으로 모바일에 동영상 전송이나 모든 클라이언트에게 파일 전송을 중지하거나 다시 시작할 수 있습니다. * `CORS `_ 지원. * JAX-RS 와 Rails엔진의 사상에 기초한 자동 라우트 수집. 모든 경로에 대해서 하나의 파일에 선언할 필요가 없습니다. 이 기능은 분산 라우팅을 위해 고려되었습니다. 이 기능으로 인해 어플리케이션을 다른 어플리케이션에 통합이 가능합니다. 만약 당신이 블로그엔진을 만든다면 그것을 JAR처럼 다른 어플리케이션으로 통합하는 즉시 블로그 기능을 사용할 수 있게 합니다. 라우팅에는 두 가지 특징이 있습니다. Type-Safe한 방법으로 URL을 재생성하거나(리버스 라우팅) `Swagger Doc `_ 을 이용하여 문서화 할 수 있습니다. * Develop Mode에서는 클래스 파일과 라우트 정보는 자동으로 갱신됩니다. * View는 독립적인 `Scalate `_ 템플릿이나 Scala의 인라인 XML로 작성되고 모두 Type-Safe합니다. * Cookie에 의한(더 확장가능한) `Hazelcast `_ 클러스터를 이용한(보다 안전한) 세션 관리. Hazelcast는, 매우 빠르고 쉬운, 프로세스간 분산 Cache도 제공합니다. 굳이 다른 캐시 서버를 준비 할 필요는 없습니다. 이것은 Akka의 pubsub 기능도 마찬가지입니다. * `jQuery Validation `_ 를 이용한 브라우저와 서버의 양쪽 검증. * `GNU gettext `_ 를 사용한 국제화. 텍스트의 추출과 번역이 자동으로 이루어져서 번잡한 속성 파일은 필요하지 않습니다. 번역과 통합작업에는 `Poedit `_ 와 같은 강력한 도구를 사용할 수 있습니다. gettext는 대부분의 다른 솔루션과 달리 단수와 복수 두 형식을 모두 지원하고 있습니다. Xitrum은 `Scalatra `_ , `Lift `_ 두 가지 특징을 모두 사용하려고 합니다: Scalatra보다 강력하고 Lift보다 사용하기 쉬운 것이 특징입니다. `Xitrum `_ 은 많은 개발자에게 친숙한 controller-first를 사용하기 위해 Scalatra의 controller-first를 Lift의 `view-first `_ 를 적용하지 않았습니다. :doc:`연관된 프로젝트 ` 샘플, 플러그인 등의 프로젝트 목록을 참고하세요. 기여자들 -------- `Xitrum `_ 은 `오픈소스 `_ 프로젝트입니다. `Google group `_. 에 가입하세요. 기여자들은 `공헌한 날 `_ 의 순서대로 되어있습니다: (*): 현재 코어 개발자들ー * `Ngoc Dao (*) `_ * `Linh Tran `_ * `James Earl Douglas `_ * `Aleksander Guryanov `_ * `Takeharu Oshida (*) `_ * `Nguyen Kim Kha `_ * `Michael Murray `_