Iris เป็นเฟรมเวิร์กแอปพลิเคชันเว็บ Golang ที่เร็ว ง่าย แต่ที่มีคุณลักษณะครบเรื่องและมีประสิทธิภาพสูง
มันมีพื้นฐานที่แสดงออกและใช้งานง่ายสำหรับเว็บไซต์หรืออินเตอร์เฟซแอปพลิเคชันต่อไปของคุณ
คุณลักษณะของ Iris
- HTTP/2 (push, การฝังข้อมูล แม้กระทั้่างจะเป็นแนวของการทำงานของซอร์ฟแวร์)
- Middleware (Accesslog, Basicauth, CORS, gRPC, Anti-Bot hCaptcha, JWT, MethodOverride, ModRevision, Monitor, PPROF, Ratelimit, Anti-Bot reCaptcha, Recovery, RequestID, Rewrite)
- API versioning
- Model-View-Controller
- Websockets
- gRPC
- HTTPS อัตโนมัติ
- สนับสนุน ngrok ที่ซ้อนออกมาเพื่อให้แอปพลิเคชันของคุณออนไลน์อย่างรวดเร็วที่สุดเท่าที่จะเป็นไปได้
- Router ที่ไม่ซ้ำกันด้วยพารามิเตอร์เส้นทางที่เปลี่ยนได้ เขียนและสนับสนุนประเภทมาตรฐานเช่น :uuid, :string, :int และการสร้าง router ที่กำหนดเอง
- การบีบอัด
- เครื่องมือแสดงผล (HTML, Django, Handlebars, Pug/Jade, ฯลฯ)
- สร้างเซิร์ฟเวอร์ไฟล์ของคุณเองและโฮสต์เซิร์ฟเวอร์ WebDAV ของคุณเอง
- การจัดเก็บข้อมูลช้อน
- การใส่สถานที่ (i18n, แผนผังเว็บไซต์)
- ห้องซุ่ม/เซสชั่น
- ความตอบสนองที่มั่ว (HTML, ข้อความ, Markdown, XML, YAML, ไบนารี, JSON, JSONP, Protocol Buffers, MessagePack, การเจรจาข้อมูล, การส่งข้อมูลจากเซิร์ฟเวนต์, ฯลฯ)
- การบีบอัดการตอบสนอง (gzip, deflate, brotli, snappy, s2)
- คำขอที่มั่ว (ผูกคิวรี่ URL, หัว, ฟอร์ม, ข้อความ, XML, YAML, ไบนารี, JSON, การตรวจสอบความถูกต้อง, Protocol Buffers, MessagePack, ฯลฯ)
- การฉีดตัวเข้าสาร (MVC, ตามจังหวะการดำเนินการ, ตามลำดับ API)
ตัวอย่าง
package main
// นำเข้าแพคเกจ
import "github.com/kataras/iris/v12"
func main() {
// กำหนดอินสแตนของ iris
app := iris.New()
// ใช้ชุดกลายเป็น gzip
app.Use(iris.Compression)
// การตั้งค่าเราเตอร์
app.Get("/", func(ctx iris.Context) {
ctx.HTML("สวัสดี <strong>%s</strong>!", "โลก")
})
// ฟังก์ชันห์การทำงานผ่านพอร์ท
app.Listen(":8080")
}
การทดสอบประสิทธิภาพ
ส่งคำขอ 200,000 ครั้งด้วยพารามิเตอร์ที่เปลี่ยนไปเป็นตัวเลข ต่อความร้อนแบบ JSON และรับคำขอ แบบ JSON ในการตอบสนอง
เฟรมเวิร์ก | ภาษาการพัฒนา | คำขอต่อวินาที | ความล่าช้า | ผลผลิต | เวลาที่เสร็จสิ้น |
---|---|---|---|---|---|
Iris | Go | 238,954 | 521.69us | 64.15MB | 0.84s |
Gin | Go | 229,665 | 541.96us | 62.86MB | 0.87s |
Chi | Go | 228,072 | 545.78us | 62.61MB | 0.88s |
Echo | Go | 224,491 | 553.84us | 61.70MB | 0.89s |
Martini | Go | 198,166 | 627.46us | 54.47MB | 1.01s |
Kestrel | C# | 163,486 | 766.90us | 47.42MB | 1.23s |
Buffalo | Go | 102,478 | 1.22ms | 28.14MB | 1.95s |
Koa | Javascript | 48,425 | 2.56ms | 15.39MB | 4.14s |
Express | Javascript | 23,622 | 5.25ms | 9.04MB | 8.41s |