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 |