Rouille เป็นไลบรารี Micro-Web-Framework มันสร้างซ็อกเก็ตการฟังและการวิเคราะห์การร้องขอ HTTP ที่เข้ามาจากลูกค้าจากนั้นให้มือในการประมวลผลคำขอ
Rouille ได้รับการออกแบบให้ใช้งานง่ายหากคุณรู้ว่าเป็นสนิม ตรงกันข้ามกับเฟรมเวิร์กที่แสดงออกมาไม่ได้ใช้ Middlewares แต่ทุกอย่างได้รับการจัดการในแบบเชิงเส้นแทน
แนวคิดที่เกี่ยวข้องอย่างใกล้ชิดกับเว็บไซต์ (เช่นคุกกี้, CGI, อินพุตแบบฟอร์ม ฯลฯ ) ได้รับการสนับสนุนโดยตรงจาก Rouille แนวคิดทั่วไปเพิ่มเติม (เช่นการจัดการฐานข้อมูลหรือการเทมเพลต) ไม่ได้รับการจัดการโดยตรงเนื่องจากได้รับการพิจารณามุมฉากไปยังเฟรมเวิร์กเว็บไมโคร อย่างไรก็ตามการออกแบบของ Rouille ทำให้ใช้งานง่ายร่วมกับห้องสมุดบุคคลที่สามใด ๆ โดยไม่จำเป็นต้องใช้รหัสกาวใด ๆ
หากคุณมีความรู้ทั่วไปเกี่ยวกับวิธีการทำงานของ HTTP เอกสารและตัวอย่างที่มีเอกสารที่ดีเป็นแหล่งข้อมูลที่ดีในการเริ่มต้น
ได้รับใบอนุญาตภายใต้
หากคุณไม่ได้ระบุอย่างชัดเจนการบริจาคใด ๆ ที่ส่งโดยเจตนาเพื่อรวมไว้ในงานโดยคุณจะได้รับใบอนุญาตคู่ดังกล่าวข้างต้นโดยไม่มีข้อกำหนดหรือเงื่อนไขเพิ่มเติมใด ๆ
Async I/O, เกลียวสีเขียว, coroutines ฯลฯ ในสนิมยังคงไม่บรรลุนิติภาวะมาก
ห้องสมุด Rouille เพียงเพิกเฉยต่อการเพิ่มประสิทธิภาพนี้และมุ่งเน้นไปที่การจัดหา API แบบซิงโครนัสที่ใช้งานง่ายแทนซึ่งแต่ละคำขอได้รับการจัดการในเธรดเฉพาะของตัวเอง
แม้ว่า Rouille เองจะเป็นแบบอะซิงโครนัสคุณก็จะต้องใช้ไคลเอนต์ฐานข้อมูลแบบอะซิงโครนัสและการโหลดไฟล์แบบอะซิงโครนัสเพื่อใช้ประโยชน์จากมัน ขณะนี้ไม่มีห้องสมุดดังกล่าวในระบบนิเวศสนิม
เมื่อ Async I/O ได้รับการคิดออกแล้ว Rouille จะได้รับการปรับปรุง (หวังว่าโปร่งใส) จะนำมาพิจารณา
ในเครื่อง Linux เก่าของผู้เขียนการเปรียบเทียบพื้นฐานบางอย่างกับ wrk -t 4 -c 4 แสดงผลลัพธ์ต่อไปนี้:
http.createServer ) ให้ผลตอบแทน ~ 14k คำขอ/วินาทีในขณะที่ไม่เร็วที่สุด 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
} ) ;