Rouille은 Micro-Web-Framework 라이브러리입니다. 청취 소켓과 클라이언트의 HTTP 요청을 구문 분석 한 다음 요청을 처리 할 수 있습니다.
Rouille은 Rust를 알고 있다면 사용하기에 직관적으로 설계되었습니다. Express와 같은 프레임 워크와는 달리 중간 전쟁을 사용하지 않습니다. 대신 모든 것이 선형적인 방식으로 처리됩니다.
웹 사이트 (쿠키, CGI, 양식 입력 등)와 밀접한 관련된 개념은 Rouille에서 직접 지원됩니다. 데이터베이스 처리 또는 템플릿과 같은보다 일반적인 개념은 마이크로 웹 프레임 워크와 직교로 간주되므로 직접 처리되지 않습니다. 그러나 Rouille의 디자인은 접착제 코드가 필요없이 타사 라이브러리와 함께 사용하기 쉽습니다.
HTTP의 작동 방식에 대한 일반적인 지식이 있다면, 문서화 된 사례와 잘 문서화 된 예제가 시작하기에 좋은 리소스입니다.
어느 쪽에도 라이센스가 부여되었습니다
귀하가 명시 적으로 명시 적으로 명시하지 않는 한, 귀하의 작업에 포함시키기 위해 의도적으로 제출 된 기부금은 추가 이용 약관이나 조건없이 위와 같이 이중 라이센스가 있어야합니다.
비동기 I/O, 녹색 스레드, 코 루틴 등이 여전히 매우 미숙합니다.
Rouille 라이브러리는이 최적화를 무시하고 각 요청이 자체 전용 스레드로 처리되는 대신 사용하기 쉬운 동기 API를 제공하는 데 중점을 둡니다.
Rouille 자체가 비동기식이더라도이를 활용하려면 비동기 데이터베이스 클라이언트와 비동기 파일로드가 필요합니다. 현재 Rust Ecosystem에는 그러한 라이브러리가 없습니다.
Async I/O가 파악되면 Rouille은 (투명하게) 업데이트되어이를 고려할 것입니다.
저자의 오래된 Linux 시스템에서 wrk -t 4 -c 4 사용한 일부 기본 벤치마킹은 다음과 같은 결과를 보여줍니다.
http.createServer 포함)의 Hello World는 ~ 14k 요청/sec입니다.가장 빠르지는 않지만 Rouille은 합리적인 공연을 가지고 있습니다. 이 모든 예들 중에서 Rouille은 동기 I/O를 사용하는 유일한 예입니다.
데이터베이스 또는 템플릿을 Rouille으로 작성된 웹 서버에 통합하는 것은 사소해야합니다. 또한 플러그인은 유지 보수가 필요하며 의존성 지옥을 만드는 경향이 있습니다. 저자의 견해로는 일반적으로 플러그인을 사용하지 않는 것이 좋습니다.
이렇게하는 대신 : (의사 코드)
server . add_middleware ( function ( ) {
// middleware 1
} ) ;
server . add_middleware ( function ( ) {
// middleware 2
} ) ;
server . add_middleware ( function ( ) {
// middleware 3
} ) ;Rouille에서는 각 요청을 완전히 수동으로 처리합니다.
// initialize everything here
rouille :: start_server ( .. . , move |request| {
// middleware 1
// middleware 2
// middleware 3
} ) ;