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