آیریس یک چارچوب برنامه‌نویسی وب سریع، ساده اما کاملاً ویژه و بسیار کارآمد برای Golang است.

این چارچوب پایه قوی و آسان برای وب‌سایت یا رابط برنامه‌های بعدی شما فراهم می‌کند.

ویژگی‌های Iris

  • HTTP/2 (push، حتی داده تعبیه شده)
  • میان افزارها (Accesslog، Basicauth، CORS، gRPC، Anti-Bot hCaptcha، JWT، MethodOverride، ModRevision، Monitor، PPROF، Ratelimit، Anti-Bot reCaptcha، Recovery، RequestID، Rewrite)
  • نسخه‌بندی API
  • Model-View-Controller
  • وب‌سوکت‌ها
  • gRPC
  • HTTPS خودکار
  • پشتیبانی از ngrok به صورت داخلی برای قرار دادن برنامه شما به سرعت بالاترین شیوه ممکن در اینترنت
  • مسیریابی منحصر به فرد با پارامترهای مسیر پویا که از انواع استاندارد مانند:uuid،:string،:int پشتیبانی می‌کند و ایجاد مسیریاب سفارشی
  • فشرده سازی
  • موتورهای نمایش (HTML، Django، Handlebars، Pug/Jade و غیره)
  • ایجاد سرور فایل شخصی خود و میزبانی سرور WebDAV شخصی
  • حافظه پنهان
  • محلی‌سازی (i18n، نقشه سایت)
  • جلسات
  • واکنش‌های غنی (HTML، متن، Markdown، XML، YAML، باینری، JSON، JSONP، Protocol Buffers، MessagePack، مذاکره محتوا، stream، رویدادهای ارسال شده توسط سرور، و غیره)
  • فشرده سازی واکنش‌ها (gzip، deflate، brotli، snappy، s2)
  • درخواست‌های غنی (بایند شدن پرس و جو URL، هدرها، فرم‌ها، متن، XML، YAML، باینری، JSON، اعتبارسنجی، Protocol Buffers، MessagePack، و غیره)
  • تزریق وابستگی (MVC، کنترل‌کننده‌ها، مسیریاب‌های API)
  • مجموعه آزمون

نمونه کد

package main

// وارد کردن بسته
import "github.com/kataras/iris/v12"

func main() {
  // تعریف نمونه آیریس
  app := iris.New()
  // استفاده از میان افزار فشرده‌سازی gzip
  app.Use(iris.Compression)

  // راه‌اندازی مسیریاب
  app.Get("/", func(ctx iris.Context‌) {
    ctx.HTML("Hello <strong>%s</strong>!", "World")
  })

  // گوش دادن به پورت
  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 جاوا اسکریپت 48,425 2.56ms 15.39MB 4.14s
Express جاوا اسکریپت 23,622 ۵.۲۵ms 9.04MB 8.41s