Redbean 2.0 เป็นแพลตฟอร์มสำหรับเว็บแอปพลิเคชันที่รวมอยู่ในไฟล์ ZIP ที่สามารถเรียกใช้งานได้สากล

มีการนำเสนอการเปิดตัวโครงการ Redbean 2.0 โดยนำเสนอเว็บเซิร์ฟเวอร์ที่ช่วยให้คุณสามารถส่งมอบแอปพลิเคชันเว็บในรูปแบบของไฟล์ปฏิบัติการสากลที่สามารถดำเนินการบน Linux, Windows, MacOS, FreeBSD, NetBSD และ OpenBSD ทรัพยากรทั้งหมดที่เกี่ยวข้องกับเว็บแอปพลิเคชันและเซิร์ฟเวอร์จะถูกรวบรวมเป็นไฟล์ปฏิบัติการไฟล์เดียว ซึ่งเข้ากันได้กับรูปแบบไฟล์ ZIP และอนุญาตให้คุณใช้ยูทิลิตี้ zip เพื่อเพิ่มไฟล์เพิ่มเติม ความสามารถในการเรียกใช้ไฟล์เดียวบนระบบปฏิบัติการที่แตกต่างกันและกำหนดให้ไฟล์นั้นเป็นไฟล์ ZIP นั้นทำได้โดยการจัดการส่วนหัวของไฟล์ปฏิบัติการและเชื่อมโยงกับไลบรารี C มาตรฐานหลายแพลตฟอร์ม Cosmopolitan รหัสโครงการเผยแพร่ภายใต้ใบอนุญาต ISC

แนวคิดของโครงการนี้คือการจัดหาไฟล์ปฏิบัติการหนึ่งไฟล์ “redbean.com” พร้อมเว็บเซิร์ฟเวอร์ในตัว นักพัฒนาเว็บแอปพลิเคชันสามารถใช้ยูทิลิตี้ zip เพื่อเพิ่มไฟล์ HTML และ Lua ลงในไฟล์นี้ และรับเว็บแอปพลิเคชันในตัวเองที่ทำงานบนระบบปฏิบัติการยอดนิยมทั้งหมด และไม่ต้องใช้เว็บเซิร์ฟเวอร์แยกต่างหากเพื่อทำงานบนระบบ

หลังจากเรียกใช้ไฟล์ปฏิบัติการที่ได้ผลลัพธ์แล้ว เว็บเซิร์ฟเวอร์ในตัวจะถูกใช้เพื่อเข้าถึงแอปพลิเคชันเว็บที่บันทึกไว้ในไฟล์ ตามค่าเริ่มต้น ตัวจัดการจะแนบกับ localhost แต่เซิร์ฟเวอร์ยังสามารถใช้เป็นเว็บเซิร์ฟเวอร์สาธารณะทั่วไปได้ (เช่น เซิร์ฟเวอร์นี้ให้บริการเว็บไซต์โครงการ) เว็บเซิร์ฟเวอร์ในตัวรองรับการเข้าถึง HTTPS และสามารถดำเนินการได้โดยใช้การแยกแซนด์บ็อกซ์ ซึ่งช่วยให้คุณควบคุมอินเทอร์เฟซระบบที่จะเข้าถึงได้ เพื่อควบคุมการทำงานของเซิร์ฟเวอร์ในระหว่างการดำเนินการ จะมีการจัดเตรียมอินเทอร์เฟซ REPL แบบโต้ตอบ (ขึ้นอยู่กับ Lua REPL และไลบรารี Bestline ซึ่งเป็นอะนาล็อกของ GNU Readline) ซึ่งทำให้สามารถเปลี่ยนสถานะของกระบวนการแบบโต้ตอบได้

มีการอ้างว่าเว็บเซิร์ฟเวอร์สามารถประมวลผลคำขอมากกว่าหนึ่งล้านคำขอต่อวินาทีบนพีซีทั่วไป โดยให้บริการเนื้อหาที่บีบอัดด้วย gzip สิ่งที่ช่วยให้ประสิทธิภาพดีขึ้นก็คือ zip และ gzip ใช้รูปแบบทั่วไป ดังนั้นข้อมูลจึงสามารถให้บริการได้โดยไม่ต้องแพ็กใหม่จากพื้นที่ที่บีบอัดแล้วในไฟล์ zip นอกจากนี้ เนื่องจากไฟล์เรียกทำงานถูกสร้างขึ้นโดยใช้การเชื่อมโยงแบบคงที่และมีขนาดเล็ก การเรียก fork จึงไม่ต้องใช้หน่วยความจำมากเกินไปหรือแทบไม่มีเลย

นอกเหนือจากการประมวลผลเนื้อหาเว็บแบบคงที่และการเรียกใช้ JavaScript ในเบราว์เซอร์แล้ว ตรรกะของแอปพลิเคชันเว็บยังสามารถขยายได้โดยใช้สคริปต์ใน Lua, กรอบงานเว็บ Fullmoon และ SQLite DBMS คุณสมบัติเพิ่มเติม ได้แก่ การรองรับรูปแบบการแฮชรหัสผ่าน argon2 ความสามารถในการกำหนดภูมิภาค IP โดยใช้ฐานข้อมูล MaxMind และการเข้าถึง Unix API ของไลบรารี Cosmopolitan ขนาดของสแต็กพื้นฐานซึ่งรวมถึงเว็บเซิร์ฟเวอร์, MbedTLS, Cosmopolitan, Lua และ SQLite มีขนาดเพียง 1.9 MB

ไฟล์ปฏิบัติการสากลถูกสร้างขึ้นโดยการรวมเซ็กเมนต์และส่วนหัวเฉพาะสำหรับระบบปฏิบัติการที่แตกต่างกัน (PE, ELF, MACHO, OPENBSD, ZIP) ไว้ในไฟล์เดียว เพื่อให้แน่ใจว่าไฟล์ปฏิบัติการไฟล์เดียวทำงานบนระบบ Windows และ Unix เคล็ดลับคือการเข้ารหัสไฟล์ Windows PE เป็นเชลล์สคริปต์ โดยใช้ประโยชน์จากข้อเท็จจริงที่ว่า Thompson Shell ไม่ได้ใช้เครื่องหมายสคริปต์ “#!” ผลลัพธ์ที่ได้คือไฟล์ปฏิบัติการที่รวมหลายรูปแบบที่ใช้ใน Linux, BSD, Windows และ macOS $ curl https://redbean.dev/redbean-demo-2.0.7.com >redbean.com $ chmod +x redbean.com $ zip redbean.com hello.html $ zip redbean.com hello.lua $ ./redbean .com -vv I2022-06-23T08:27:14+000767:redbean] (srvr) ฟัง http://127.0.0.1:8080 >: กำลังรอคำสั่ง… $ curl https://127.0.0.1:8080/hello .html สวัสดี $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 สวัสดี



ที่มา: opennet.ru

เพิ่มความคิดเห็น