Iris to szybki, prosty, a jednocześnie w pełni wyposażony i bardzo efektywny framework aplikacji internetowych napisany w języku Go.

Zapewnia ekspresywny i łatwy w użyciu fundament dla Twojej następnej strony internetowej lub interfejsu aplikacji.

Funkcje frameworka Iris

  • HTTP/2 (push, nawet osadzone dane)
  • Warstwa pośrednia (Accesslog, Basicauth, CORS, gRPC, Anty-Bot hCaptcha, JWT, MethodOverride, ModRevision, Monitor, PPROF, Ratelimit, Anty-Bot reCaptcha, Recovery, RequestID, Rewrite)
  • Wersjonowanie API
  • Model-View-Controller
  • Websockets
  • gRPC
  • Automatyczny HTTPS
  • Wbudowane wsparcie dla ngrok, aby w najkrótszym czasie udostępnić Twoją aplikację online
  • Unikalny router z dynamicznymi parametrami ścieżki, obsługujący standardowe typy takie jak :uuid, :string, :int, oraz tworzenie własnych routerów
  • Kompresja
  • Silnik widoków (HTML, Django, Handlebars, Pug/Jade, itp.)
  • Utwórz własny serwer plików i hostuj własny serwer WebDAV
  • Pamięć podręczna
  • Lokalizacja (i18n, sitemap)
  • Sesje
  • Bogate odpowiedzi (HTML, tekst, Markdown, XML, YAML, binarne, JSON, JSONP, Protokół Buffers, MessagePack, negocjacja treści, strumień, zdarzenia wysyłane przez serwer, itp.)
  • Kompresja odpowiedzi (gzip, deflate, brotli, snappy, s2)
  • Bogate żądania (wiązanie zapytania URL, nagłówków, formularzy, tekstu, XML, YAML, binarnych, JSON, walidacja, Protokół Buffers, MessagePack, itp.)
  • Wstrzykiwanie zależności (MVC, obsługa, routery API)
  • Pakiet do testów

Demo

package main

// Importowanie pakietu
import "github.com/kataras/iris/v12"

func main() {
  // Definiowanie instancji iris
  app := iris.New()
  // Użycie warstwy pośredniej do kompresji gzip
  app.Use(iris.Compression)

  // Konfiguracja routera
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Witaj <strong>%s</strong>!", "Świecie")
  })

  // Nasłuchiwanie na porcie
  app.Listen(":8080")
}

Testowanie wydajności

Wysłanie 200 000 żądań z dynamicznymi parametrami jako liczbami całkowitymi, wysyłając JSON jako ciało żądania i otrzymując JSON jako odpowiedź.

Framework Język programowania Żądania na sekundę Opóźnienie Przepustowość Czas wykonania
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