rouille
v3.6.2
Rouille是一個微型武器庫庫。它創建了一個聽力插座,並從客戶端解析了傳入的HTTP請求,然後向您提供處理請求的手。
如果您知道生鏽的話,Rouille被設計為直觀的使用。與明確的框架相反,它不採用中間地點。取而代之的是,所有內容都是線性處理的。
與網站密切相關的概念(例如Cookie,CGI,表單輸入等)是Rouille直接支持的。更一般的概念(例如數據庫處理或模板)未直接處理,因為它們被認為與Micro Web框架正交。但是,Rouille的設計使得與任何第三方庫一起易於使用,而無需任何膠水代碼。
如果您對HTTP的工作原理有一般的了解,則文檔和有據可查的示例是使您入門的好資源。
根據任何一個
除非您另有明確說明,否則任何有意提交的工作供您納入您的工作的捐款,均應在上面的雙重許可中,沒有任何其他條款或條件。
異步I/O,綠色線,Coroutines等。在生鏽中,仍然非常不成熟。
Rouille庫只是忽略了此優化,而是專注於提供易於使用的同步API,其中每個請求都在其自己的專用線程中處理。
即使輪盤本身是異步的,您也需要異步數據庫客戶端和異步文件加載才能利用它。生態系統中目前沒有這樣的圖書館。
一旦弄清楚異步I/O,Rouille將(希望透明地)更新以考慮到它。
在作者的舊Linux機器上, wrk -t 4 -c 4的一些基本基準測試顯示以下結果:
http.createServer )產生約14k請求/秒。Rouille雖然不是最快的,但表現合理。在所有這些示例中,Rouille是唯一使用同步I/O的菜。
將數據庫或模板集成到使用Rouille編寫的Web服務器應該是微不足道的。此外,插件需要維護並傾向於創建一個依賴性地獄。作者認為,通常最好不要使用插件。
而不是這樣做:(偽代碼)
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
} ) ;