Rouille é uma biblioteca de micro-web-framework. Ele cria um soquete de escuta e analisa as solicitações HTTP recebidas dos clientes e fornece a mão para processar a solicitação.
Rouille foi projetado para ser intuitivo de usar se você conhece a ferrugem. Ao contrário das estruturas expressas, ele não emprega utensílios médios. Em vez disso, tudo é tratado de maneira linear.
Os conceitos intimamente relacionados a sites (como cookies, CGI, entrada de formulários etc.) são diretamente suportados por Rouille. Os conceitos mais gerais (como o manuseio ou o modelo de banco de dados) não são tratados diretamente, pois são considerados ortogonais à estrutura da Micro Web. No entanto, o design de Rouille facilita o uso em conjunto com qualquer biblioteca de terceiros sem a necessidade de qualquer código de cola.
Se você tiver conhecimento geral sobre como o HTTP funciona, a documentação e os exemplos bem documentados são bons recursos para você começar.
Licenciado sob qualquer um de
A menos que você declare explicitamente o contrário, qualquer contribuição intencionalmente enviada para inclusão no trabalho por você será licenciada como acima, sem termos ou condições adicionais.
E/S assíncrona, fios verdes, coroutinas etc. na ferrugem ainda são muito imaturos.
A biblioteca Rouille apenas ignora essa otimização e se concentra em fornecer uma API síncrona fácil de usar, onde cada solicitação é tratada em seu próprio thread dedicado.
Mesmo que o próprio Rouille fosse assíncrono, você precisaria de clientes de banco de dados assíncronos e carregamento de arquivos assíncronos para aproveitar isso. Atualmente, não existem bibliotecas no ecossistema de ferrugem.
Depois que a E/S assíncreada for descoberta, Rouille será (esperançosamente transparentemente) atualizado para levá -lo em consideração.
Na antiga máquina Linux do autor, alguns benchmarking básico com wrk -t 4 -c 4 mostram os seguintes resultados:
http.createServer ) produz ~ 14k solicitações/s.Embora não seja o mais rápido, Rouille tem performances razoáveis . Entre todos esses exemplos, Rouille é o único a usar a E/S síncrona.
Deve ser trivial integrar um banco de dados ou modelos ao seu servidor web escrito com Rouille. Além disso, os plugins precisam de manutenção e tendem a criar um inferno de dependência. Na opinião do autor, geralmente é melhor não usar plugins.
Em vez de fazer isso: (pseudo-código)
server . add_middleware ( function ( ) {
// middleware 1
} ) ;
server . add_middleware ( function ( ) {
// middleware 2
} ) ;
server . add_middleware ( function ( ) {
// middleware 3
} ) ;Em Rouille, você apenas lida com cada solicitação totalmente manualmente:
// initialize everything here
rouille :: start_server ( .. . , move |request| {
// middleware 1
// middleware 2
// middleware 3
} ) ;